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:
parent
f0c04d5b36
commit
185deb40f5
4 changed files with 23 additions and 9 deletions
|
@ -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'
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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'])
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Reference in a new issue