work in progress: configurable reports - basic interfaces and classes, example report (work_report)
This commit is contained in:
parent
f7fd4ef30f
commit
f072066b3a
6 changed files with 30 additions and 27 deletions
|
@ -829,27 +829,6 @@ class SimpleTerms(object):
|
||||||
return (token, self.terms[token])
|
return (token, self.terms[token])
|
||||||
|
|
||||||
|
|
||||||
class AdapterTerms(SimpleTerms):
|
|
||||||
""" Allows the selection of a named adapter from a list of tuples
|
|
||||||
(name, adapter).
|
|
||||||
|
|
||||||
The adapter class may have a 'label' attribute for display.
|
|
||||||
The translation domain may be overridden by subclasses.
|
|
||||||
"""
|
|
||||||
|
|
||||||
translate = _
|
|
||||||
|
|
||||||
def getTerm(self, value):
|
|
||||||
token, adapter = value
|
|
||||||
adapter = removeSecurityProxy(adapter)
|
|
||||||
label = getattr(adapter.__class__, 'label', token)
|
|
||||||
return SimpleTerm(token, token, self.translate(label))
|
|
||||||
|
|
||||||
def getValue(self, token):
|
|
||||||
# just store the name of the adapter
|
|
||||||
return (token, token)
|
|
||||||
|
|
||||||
|
|
||||||
class LoopsTerms(object):
|
class LoopsTerms(object):
|
||||||
""" Provide the ITerms interface, e.g. for usage in selection
|
""" Provide the ITerms interface, e.g. for usage in selection
|
||||||
lists.
|
lists.
|
||||||
|
|
|
@ -227,15 +227,15 @@ Reports
|
||||||
|
|
||||||
>>> report = Report(None)
|
>>> report = Report(None)
|
||||||
|
|
||||||
>>> from loops.expert.report import DefaultConceptReportInstance
|
>>> from loops.expert.report import IReportInstance, DefaultConceptReportInstance
|
||||||
>>> component.provideAdapter(DefaultConceptReportInstance,
|
>>> component.provideAdapter(DefaultConceptReportInstance,
|
||||||
|
... provides=IReportInstance,
|
||||||
... name='default_concept_report')
|
... name='default_concept_report')
|
||||||
|
|
||||||
>>> from loops.expert.report import ReportTypeSourceList
|
>>> from loops.expert.report import ReportTypeSourceList
|
||||||
>>> source = ReportTypeSourceList(report)
|
>>> source = ReportTypeSourceList(report)
|
||||||
>>> list(source)
|
>>> list(source)
|
||||||
[(u'default_concept_report',
|
[(u'default_concept_report', u'Default Concept Report')]
|
||||||
<loops.expert.report.DefaultConceptReportInstance object at ...>)]
|
|
||||||
|
|
||||||
|
|
||||||
Fin de partie
|
Fin de partie
|
||||||
|
|
|
@ -57,7 +57,7 @@
|
||||||
<!-- reporting -->
|
<!-- reporting -->
|
||||||
|
|
||||||
<zope:adapter
|
<zope:adapter
|
||||||
factory="loops.browser.common.AdapterTerms"
|
factory="loops.browser.common.SimpleTerms"
|
||||||
for="loops.expert.report.ReportTypeSourceList
|
for="loops.expert.report.ReportTypeSourceList
|
||||||
zope.publisher.interfaces.browser.IBrowserRequest" />
|
zope.publisher.interfaces.browser.IBrowserRequest" />
|
||||||
|
|
||||||
|
|
|
@ -22,13 +22,14 @@
|
||||||
provides="loops.expert.report.IReport" trusted="True" />
|
provides="loops.expert.report.IReport" trusted="True" />
|
||||||
<class class="loops.expert.report.Report">
|
<class class="loops.expert.report.Report">
|
||||||
<require permission="zope.View"
|
<require permission="zope.View"
|
||||||
interface="loops.expert.report.IReport" />
|
interface="loops.expert.report.IReportSchema" />
|
||||||
<require permission="zope.ManageContent"
|
<require permission="zope.ManageContent"
|
||||||
set_schema="loops.expert.report.IReport" />
|
set_schema="loops.expert.report.IReportSchema" />
|
||||||
</class>
|
</class>
|
||||||
|
|
||||||
<adapter factory="loops.expert.report.DefaultConceptReportInstance"
|
<adapter factory="loops.expert.report.DefaultConceptReportInstance"
|
||||||
name="default_concept_report"
|
name="default_concept_report"
|
||||||
|
provides="loops.expert.report.IReportInstance"
|
||||||
trusted="True" />
|
trusted="True" />
|
||||||
<class class="loops.expert.report.DefaultConceptReportInstance">
|
<class class="loops.expert.report.DefaultConceptReportInstance">
|
||||||
<require permission="zope.View"
|
<require permission="zope.View"
|
||||||
|
|
|
@ -180,6 +180,16 @@ So we use the PersonWorkItems view, assigning john to the query.
|
||||||
'creator': '33'}>]
|
'creator': '33'}>]
|
||||||
|
|
||||||
|
|
||||||
|
Work Reports
|
||||||
|
============
|
||||||
|
|
||||||
|
>>> from loops.organize.work.report import WorkReportInstance
|
||||||
|
>>> from loops.expert.report import IReportInstance
|
||||||
|
>>> component.provideAdapter(WorkReportInstance,
|
||||||
|
... provides=IReportInstance,
|
||||||
|
... name='work_report')
|
||||||
|
|
||||||
|
|
||||||
Fin de partie
|
Fin de partie
|
||||||
=============
|
=============
|
||||||
|
|
||||||
|
|
|
@ -73,6 +73,19 @@
|
||||||
class="loops.organize.work.browser.WorkItemInfo"
|
class="loops.organize.work.browser.WorkItemInfo"
|
||||||
permission="zope.View" />
|
permission="zope.View" />
|
||||||
|
|
||||||
|
<!-- reporting -->
|
||||||
|
|
||||||
|
<zope:adapter factory="loops.organize.work.report.WorkReportInstance"
|
||||||
|
name="work_report"
|
||||||
|
provides="loops.expert.report.IReportInstance"
|
||||||
|
trusted="True" />
|
||||||
|
<zope:class class="loops.organize.work.report.WorkReportInstance">
|
||||||
|
<require permission="zope.View"
|
||||||
|
interface="loops.expert.report.IReportInstance" />
|
||||||
|
<require permission="zope.ManageContent"
|
||||||
|
set_schema="loops.expert.report.IReportInstance" />
|
||||||
|
</zope:class>
|
||||||
|
|
||||||
<!-- setup -->
|
<!-- setup -->
|
||||||
|
|
||||||
<zope:adapter factory="loops.organize.work.setup.SetupManager"
|
<zope:adapter factory="loops.organize.work.setup.SetupManager"
|
||||||
|
|
Loading…
Add table
Reference in a new issue