work in progress: configurable reports - basic interfaces and classes
This commit is contained in:
parent
ef334a50fb
commit
f7fd4ef30f
4 changed files with 91 additions and 0 deletions
|
@ -422,6 +422,8 @@ class BaseView(GenericView, I18NView):
|
|||
def renderDescription(self, text=None):
|
||||
if text is None:
|
||||
text = self.description
|
||||
if text is None:
|
||||
return u''
|
||||
htmlPattern = re.compile(r'<(.+)>.+</\1>')
|
||||
if htmlPattern.search(text):
|
||||
return text
|
||||
|
@ -827,6 +829,27 @@ class SimpleTerms(object):
|
|||
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):
|
||||
""" Provide the ITerms interface, e.g. for usage in selection
|
||||
lists.
|
||||
|
|
|
@ -219,6 +219,25 @@ Query Concepts and Query Views
|
|||
>>> from loops.expert.browser.base import BaseQueryView
|
||||
|
||||
|
||||
Reports
|
||||
=======
|
||||
|
||||
>>> from loops.expert.report import IReport, Report
|
||||
>>> component.provideAdapter(Report, provides=IReport)
|
||||
|
||||
>>> report = Report(None)
|
||||
|
||||
>>> from loops.expert.report import DefaultConceptReportInstance
|
||||
>>> component.provideAdapter(DefaultConceptReportInstance,
|
||||
... name='default_concept_report')
|
||||
|
||||
>>> from loops.expert.report import ReportTypeSourceList
|
||||
>>> source = ReportTypeSourceList(report)
|
||||
>>> list(source)
|
||||
[(u'default_concept_report',
|
||||
<loops.expert.report.DefaultConceptReportInstance object at ...>)]
|
||||
|
||||
|
||||
Fin de partie
|
||||
=============
|
||||
|
||||
|
|
|
@ -54,4 +54,25 @@
|
|||
factory="loops.expert.browser.search.ActionExecutor"
|
||||
permission="zope.ManageContent" />
|
||||
|
||||
<!-- reporting -->
|
||||
|
||||
<zope:adapter
|
||||
factory="loops.browser.common.AdapterTerms"
|
||||
for="loops.expert.report.ReportTypeSourceList
|
||||
zope.publisher.interfaces.browser.IBrowserRequest" />
|
||||
|
||||
<zope:adapter
|
||||
name="report.html"
|
||||
for="loops.interfaces.IConcept
|
||||
zope.publisher.interfaces.browser.IBrowserRequest"
|
||||
provides="zope.interface.Interface"
|
||||
factory="loops.expert.browser.report.ReportView"
|
||||
permission="zope.View" />
|
||||
|
||||
<browser:page
|
||||
name="results.html"
|
||||
for="loops.interfaces.INode"
|
||||
class="loops.expert.browser.report.ResultsView"
|
||||
permission="zope.View" />
|
||||
|
||||
</configure>
|
||||
|
|
|
@ -16,6 +16,34 @@
|
|||
<adapter factory="loops.expert.setup.SetupManager"
|
||||
name="expert" />
|
||||
|
||||
<!-- reporting -->
|
||||
|
||||
<adapter factory="loops.expert.report.Report"
|
||||
provides="loops.expert.report.IReport" trusted="True" />
|
||||
<class class="loops.expert.report.Report">
|
||||
<require permission="zope.View"
|
||||
interface="loops.expert.report.IReport" />
|
||||
<require permission="zope.ManageContent"
|
||||
set_schema="loops.expert.report.IReport" />
|
||||
</class>
|
||||
|
||||
<adapter factory="loops.expert.report.DefaultConceptReportInstance"
|
||||
name="default_concept_report"
|
||||
trusted="True" />
|
||||
<class class="loops.expert.report.DefaultConceptReportInstance">
|
||||
<require permission="zope.View"
|
||||
interface="loops.expert.report.IReportInstance" />
|
||||
<require permission="zope.ManageContent"
|
||||
set_schema="loops.expert.report.IReportInstance" />
|
||||
</class>
|
||||
|
||||
<utility
|
||||
provides="zope.schema.interfaces.IVocabularyFactory"
|
||||
component="loops.expert.report.ReportTypeSourceList"
|
||||
name="loops.expert.reportTypeSource" />
|
||||
|
||||
<!-- includes -->
|
||||
|
||||
<include package=".browser" />
|
||||
|
||||
</configure>
|
||||
|
|
Loading…
Add table
Reference in a new issue