From f7fd4ef30f288b67223714a62ee018852484b493 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Wed, 9 Nov 2011 10:53:05 +0100 Subject: [PATCH] work in progress: configurable reports - basic interfaces and classes --- browser/common.py | 23 +++++++++++++++++++++++ expert/README.txt | 19 +++++++++++++++++++ expert/browser/configure.zcml | 21 +++++++++++++++++++++ expert/configure.zcml | 28 ++++++++++++++++++++++++++++ 4 files changed, 91 insertions(+) diff --git a/browser/common.py b/browser/common.py index 8407f8f..ad541e7 100644 --- a/browser/common.py +++ b/browser/common.py @@ -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'<(.+)>.+') 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. diff --git a/expert/README.txt b/expert/README.txt index 4aece02..613e37b 100644 --- a/expert/README.txt +++ b/expert/README.txt @@ -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', + )] + + Fin de partie ============= diff --git a/expert/browser/configure.zcml b/expert/browser/configure.zcml index 4d71dfa..a1b4491 100644 --- a/expert/browser/configure.zcml +++ b/expert/browser/configure.zcml @@ -54,4 +54,25 @@ factory="loops.expert.browser.search.ActionExecutor" permission="zope.ManageContent" /> + + + + + + + + diff --git a/expert/configure.zcml b/expert/configure.zcml index 3eff3c3..b0ec33b 100644 --- a/expert/configure.zcml +++ b/expert/configure.zcml @@ -16,6 +16,34 @@ + + + + + + + + + + + + + + + + + +