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): |     def renderDescription(self, text=None): | ||||||
|         if text is None: |         if text is None: | ||||||
|             text = self.description |             text = self.description | ||||||
|  |         if text is None: | ||||||
|  |             return u'' | ||||||
|         htmlPattern = re.compile(r'<(.+)>.+</\1>') |         htmlPattern = re.compile(r'<(.+)>.+</\1>') | ||||||
|         if htmlPattern.search(text): |         if htmlPattern.search(text): | ||||||
|             return text |             return text | ||||||
|  | @ -827,6 +829,27 @@ 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. | ||||||
|  |  | ||||||
|  | @ -219,6 +219,25 @@ Query Concepts and Query Views | ||||||
|   >>> from loops.expert.browser.base import BaseQueryView |   >>> 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 | Fin de partie | ||||||
| ============= | ============= | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -54,4 +54,25 @@ | ||||||
|         factory="loops.expert.browser.search.ActionExecutor" |         factory="loops.expert.browser.search.ActionExecutor" | ||||||
|         permission="zope.ManageContent" /> |         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> | </configure> | ||||||
|  |  | ||||||
|  | @ -16,6 +16,34 @@ | ||||||
|   <adapter factory="loops.expert.setup.SetupManager" |   <adapter factory="loops.expert.setup.SetupManager" | ||||||
|            name="expert" /> |            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" /> |   <include package=".browser" /> | ||||||
| 
 | 
 | ||||||
| </configure> | </configure> | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue