make size of recent changes report configurable; take title from query concept

git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@3045 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2008-12-06 14:54:44 +00:00
parent f0c04d5b36
commit 185deb40f5
4 changed files with 23 additions and 9 deletions

View file

@ -136,9 +136,15 @@ Tracking Reports
Overview (cumulative) statistics
--------------------------------
>>> from loops.organize.tracking.report import TrackingStats
>>> from loops.expert.concept import IQueryConcept
>>> tQuery = concepts['query'] = addAndConfigureObject(concepts, Concept,
... 'query', conceptType=concepts.getTypeConcept(),
... typeInterface=IQueryConcept)
>>> statQuery = addAndConfigureObject(concepts, Concept, 'stats',
... conceptType=tQuery)
>>> view = TrackingStats(home, TestRequest())
>>> from loops.organize.tracking.report import TrackingStats
>>> view = TrackingStats(statQuery, TestRequest())
>>> result = view.getData()
>>> result['macro'][4][1][u'define-macro']
u'overview'
@ -149,7 +155,7 @@ Recent changes
--------------
>>> from loops.organize.tracking.report import RecentChanges
>>> view = RecentChanges(home, TestRequest())
>>> view = RecentChanges(statQuery, TestRequest())
>>> result = view.getData()
>>> result['macro'][4][1][u'define-macro']
u'recent_changes'

View file

@ -1,7 +1,7 @@
<metal:report define-macro="report"
tal:define="info item/getData">
<h2 i18n:translate=""
tal:content="item/title|default">Statistics Report</h2><br />
<metal:title use-macro="item/conceptMacros/concepttitle" />
<br />
<metal:listing use-macro="info/macro" />
</metal:report>

View file

@ -30,6 +30,7 @@ from zope.cachedescriptors.property import Lazy
from zope.traversing.browser import absoluteURL
from zope.traversing.api import getName
from cybertools.meta.interfaces import IOptions
from cybertools.util import format
from loops.browser.common import BaseView
from loops.interfaces import IResource
@ -53,6 +54,10 @@ class TrackingStats(BaseView):
def macros(self):
return self.template.macros
@Lazy
def options(self):
return IOptions(self.adapted)
@Lazy
def accessRecords(self):
return self.filter(reversed(self.loopsRoot.getRecordManager()['access'].values()))
@ -128,11 +133,15 @@ class RecentChanges(TrackingStats):
title = _(u'Recent Changes')
def getData(self):
length = int(self.request.form.get('length', 15))
sizeOption = self.options('size')
size = int(self.request.form.get('size') or
(sizeOption and sizeOption[0]) or 15)
new = {}
changed = {}
result = []
for track in self.changeRecords:
if len(result) >= size:
break
if track.data['action'] == 'add' and track.taskId not in new:
sameChanged = changed.get(track.taskId)
if sameChanged and sameChanged.timeStamp < track.timeStamp + 60:
@ -146,8 +155,6 @@ class RecentChanges(TrackingStats):
changed[track.taskId] = track
result.append(track)
continue
if len(result) > length:
break
return dict(data=[TrackDetails(self, tr) for tr in result],
macro=self.macros['recent_changes'])

View file

@ -50,7 +50,7 @@ from loops.browser.node import ViewPropertiesConfigurator
from loops.common import NameChooser
from loops.concept import Concept
from loops.concept import IndexAttributes as ConceptIndexAttributes
from loops.config.base import GlobalOptions, LoopsOptions
from loops.config.base import GlobalOptions, LoopsOptions, QueryOptions
from loops.interfaces import ILoopsObject, IIndexAttributes
from loops.interfaces import IDocument, IFile, ITextDocument
from loops.layout.base import LayoutNode
@ -129,6 +129,7 @@ class TestSite(object):
component.provideHandler(revokeAcquiredSecurity)
component.provideAdapter(BaseSecuritySetter)
component.provideAdapter(LoopsOptions)
component.provideAdapter(QueryOptions)
component.provideUtility(GlobalOptions())
component.provideAdapter(Instance)