You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bloodhound.apache.org by rj...@apache.org on 2013/07/04 09:05:16 UTC
svn commit: r1499666 -
/bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/timeline.py
Author: rjollos
Date: Thu Jul 4 07:05:15 2013
New Revision: 1499666
URL: http://svn.apache.org/r1499666
Log:
PEP-0008 whitespace changes guided by PyLint.
Modified:
bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/timeline.py
Modified: bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/timeline.py
URL: http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/timeline.py?rev=1499666&r1=1499665&r2=1499666&view=diff
==============================================================================
--- bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/timeline.py (original)
+++ bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/timeline.py Thu Jul 4 07:05:15 2013
@@ -50,6 +50,7 @@ from bhdashboard.util import WidgetBase,
__metaclass__ = type
+
class ITimelineEventsFilter(Interface):
"""Filter timeline events displayed in a rendering context
"""
@@ -71,11 +72,12 @@ class ITimelineEventsFilter(Interface):
`NotImplemented` if the filter doesn't care about it.
"""
+
class TimelineWidget(WidgetBase):
"""Display activity feed.
"""
default_count = IntOption('widget_activity', 'limit', 25,
- """Maximum number of items displayed by default""")
+ """Maximum number of items displayed by default""")
event_filters = ExtensionPoint(ITimelineEventsFilter)
@@ -101,36 +103,36 @@ class TimelineWidget(WidgetBase):
the widget with specified name.
"""
return {
- 'from' : {
- 'desc' : """Display events before this date""",
- 'type' : DateField(), # TODO: Custom datetime format
- },
- 'daysback' : {
- 'desc' : """Event time window""",
- 'type' : int,
- },
- 'precision' : {
- 'desc' : """Time precision""",
- 'type' : EnumField('second', 'minute', 'hour')
- },
- 'doneby' : {
- 'desc' : """Filter events related to user""",
- },
- 'filters' : {
- 'desc' : """Event filters""",
- 'type' : ListField()
- },
- 'max' : {
- 'desc' : """Limit the number of events displayed""",
- 'type' : int
- },
- 'realm' : {
- 'desc' : """Resource realm. Used to filter events""",
- },
- 'id' : {
- 'desc' : """Resource ID. Used to filter events""",
- },
- }
+ 'from': {
+ 'desc': """Display events before this date""",
+ 'type': DateField(), # TODO: Custom datetime format
+ },
+ 'daysback': {
+ 'desc': """Event time window""",
+ 'type': int,
+ },
+ 'precision': {
+ 'desc': """Time precision""",
+ 'type': EnumField('second', 'minute', 'hour')
+ },
+ 'doneby': {
+ 'desc': """Filter events related to user""",
+ },
+ 'filters': {
+ 'desc': """Event filters""",
+ 'type': ListField()
+ },
+ 'max': {
+ 'desc': """Limit the number of events displayed""",
+ 'type': int
+ },
+ 'realm': {
+ 'desc': """Resource realm. Used to filter events""",
+ },
+ 'id': {
+ 'desc': """Resource ID. Used to filter events""",
+ },
+ }
get_widget_params = pretty_wrapper(get_widget_params, check_widget_name)
def render_widget(self, name, context, options):
@@ -143,7 +145,7 @@ class TimelineWidget(WidgetBase):
admin_page = tag.a(_("administration page."),
title=_("Plugin Administration Page"),
href=req.href.admin('general/plugin'))
- if timemdl is None :
+ if timemdl is None:
return 'widget_alert.html', {
'title': _("Activity"),
'data': {
@@ -158,16 +160,16 @@ class TimelineWidget(WidgetBase):
}
}, context
- params = ('from', 'daysback', 'doneby', 'precision', 'filters', \
- 'max', 'realm', 'id')
+ params = ('from', 'daysback', 'doneby', 'precision', 'filters',
+ 'max', 'realm', 'id')
start, days, user, precision, filters, count, realm, rid = \
- self.bind_params(name, options, *params)
+ self.bind_params(name, options, *params)
if context.resource.realm == 'ticket':
if days is None:
# calculate a long enough time daysback
ticket = Ticket(self.env, context.resource.id)
- ticketage = datetime.now(utc) - ticket.time_created
- days = ticketage.days + 1
+ ticket_age = datetime.now(utc) - ticket.time_created
+ days = ticket_age.days + 1
if count is None:
# ignore short count for ticket feeds
count = 0
@@ -176,12 +178,12 @@ class TimelineWidget(WidgetBase):
fakereq = dummy_request(self.env, req.authname)
fakereq.args = {
- 'author' : user or '',
- 'daysback' : days or '',
- 'max' : count,
- 'precision' : precision,
- 'user' : user
- }
+ 'author': user or '',
+ 'daysback': days or '',
+ 'max': count,
+ 'precision': precision,
+ 'user': user
+ }
if filters:
fakereq.args.update(dict((k, True) for k in filters))
if start is not None:
@@ -197,12 +199,12 @@ class TimelineWidget(WidgetBase):
wcontext.req = req
else:
self.log.warning("TimelineWidget: Resource %s not found",
- resource)
+ resource)
# FIXME: Filter also if existence check is not conclusive ?
if resource_exists(self.env, wcontext.resource):
module = FilteredTimeline(self.env, wcontext)
- self.log.debug('Filtering timeline events for %s', \
- wcontext.resource)
+ self.log.debug('Filtering timeline events for %s',
+ wcontext.resource)
else:
module = timemdl
data = module.process_request(fakereq)[1]
@@ -217,17 +219,15 @@ class TimelineWidget(WidgetBase):
# Needed for abbreviated messages in widget events (#340)
wcontext.set_hints(**(data['context']._hints or {}))
data['context'] = wcontext
- return 'widget_timeline.html', \
- {
- 'title' : _('Activity'),
- 'data' : data,
- 'altlinks' : fakereq.chrome.get('links',
- {}).get('alternate')
- }, \
- context
+ return 'widget_timeline.html', {
+ 'title': _('Activity'),
+ 'data': data,
+ 'altlinks': fakereq.chrome.get('links', {}).get('alternate')
+ }, context
render_widget = pretty_wrapper(render_widget, check_widget_name)
+
class FilteredTimeline:
"""This is a class (not a component ;) aimed at overriding some parts of
TimelineModule without patching it in order to inject code needed to filter
@@ -254,7 +254,7 @@ class FilteredTimeline:
@property
def max_daysback(self):
return (-1 if self.context.resource.realm == 'ticket'
- else self._max_daysback)
+ else self._max_daysback)
@property
def event_providers(self):
@@ -272,11 +272,12 @@ class FilteredTimeline:
if isinstance(value, MethodType):
raise AttributeError()
except AttributeError:
- raise AttributeError("'%s' object has no attribute '%s'" % \
- (self.__class__.__name__, attrnm))
+ raise AttributeError("'%s' object has no attribute '%s'"
+ % (self.__class__.__name__, attrnm))
else:
return value
+
class TimelineFilterAdapter:
"""Wrapper class used to filter timeline event streams transparently.
Therefore it is compatible with `ITimelineEventProvider` interface
@@ -293,9 +294,9 @@ class TimelineFilterAdapter:
def get_timeline_filters(self, req):
gen = self.provider.get_timeline_filters(req)
- if (self.context.resource.realm == 'ticket' and
- isinstance(self.provider, TicketModule) and
- 'TICKET_VIEW' in req.perm):
+ if self.context.resource.realm == 'ticket' and \
+ isinstance(self.provider, TicketModule) and \
+ 'TICKET_VIEW' in req.perm:
# ensure ticket_details appears once if this is a query on a ticket
gen = list(gen)
if not [g for g in gen if g[0] == 'ticket_details']:
@@ -309,16 +310,16 @@ class TimelineFilterAdapter:
"""
filters_map = TimelineWidget(self.env).filters_map
evfilters = filters_map.get(self.provider.__class__.__name__, []) + \
- filters_map.get(None, [])
+ filters_map.get(None, [])
self.log.debug('Applying filters %s for %s against %s', evfilters,
- self.context.resource, self.provider)
+ self.context.resource, self.provider)
if evfilters:
for event in self.provider.get_timeline_events(
req, start, stop, filters):
match = False
for f in evfilters:
new_event = f.filter_event(self.context, self.provider,
- event, filters)
+ event, filters)
if new_event is None:
event = None
match = True
@@ -342,11 +343,12 @@ class TimelineFilterAdapter:
try:
value = getattr(self.provider, attrnm)
except AttributeError:
- raise AttributeError("'%s' object has no attribute '%s'" % \
- (self.__class__.__name__, attrnm))
+ raise AttributeError("'%s' object has no attribute '%s'"
+ % (self.__class__.__name__, attrnm))
else:
return value
+
class TicketFieldTimelineFilter(Component):
"""A class filtering ticket events related to a given resource
associated via ticket fields.
@@ -359,8 +361,8 @@ class TicketFieldTimelineFilter(Componen
"""
field_names = getattr(self, '_fields', None)
if field_names is None:
- self._fields = set(f['name'] \
- for f in TicketSystem(self.env).get_ticket_fields())
+ self._fields = set(f['name'] for f in
+ TicketSystem(self.env).get_ticket_fields())
return self._fields
# ITimelineEventsFilter methods
@@ -383,7 +385,7 @@ class TicketFieldTimelineFilter(Componen
ticket_ids = event[3][0]
except:
self.log.exception('Unknown ticket event %s ... [SKIP]',
- event)
+ event)
return None
if not isinstance(ticket_ids, list):