ReportPluginPatch: trac-0.10.4-report-plugin.patch
| File trac-0.10.4-report-plugin.patch, 2.7 kB (added by anonymous, 1 year ago) |
|---|
-
trac/ticket/report.py
old new 32 32 from trac.web.chrome import add_link, add_stylesheet, INavigationContributor 33 33 from trac.wiki import wiki_to_html, IWikiSyntaxProvider, Formatter 34 34 35 class ITicketReportRenderer(Interface): 36 """Extension point interface for components that implement new report 37 writing formats.""" 38 39 def get_report_format(): 40 """Called to get the id for a report format, for example: .xls""" 41 42 def get_report_mimetype(): 43 """Called to get the mimetype string for a report format""" 44 45 def get_report_linkname(): 46 """Called to get the report link name that will appear on the UI""" 47 48 def get_report_linkclass(): 49 """Called to get the class of the link that will appear on the UI""" 50 51 def render(req, cols, rows): 52 """Render the report, takes the request, columns and rows""" 53 54 35 55 class ReportModule(Component): 36 56 37 57 implements(INavigationContributor, IPermissionRequestor, IRequestHandler, … … 111 131 add_stylesheet(req, 'common/css/report.css') 112 132 return 'report.cs', None 113 133 134 renderers = ExtensionPoint(ITicketReportRenderer) 135 114 136 # Internal methods 115 137 116 138 def _do_create(self, req, db): … … 369 391 mimetype='text/tab-separated-values', 370 392 filename=filename) 371 393 return None 394 else: 395 for renderer in self.renderers: 396 if renderer.get_report_format()==format: 397 renderer.render(req,cols,rows) 398 return None 372 399 373 400 return 'report.cs', None 374 401 … … 390 417 if req.perm.has_permission('REPORT_SQL_VIEW'): 391 418 add_link(req, 'alternate', '?format=sql', 'SQL Query', 392 419 'text/plain') 420 # add link for every loaded component 421 # that implements ITicketReportRenderer 422 423 for renderer in self.renderers: 424 format = renderer.get_report_format() 425 mimetype = renderer.get_report_mimetype() 426 linkname = renderer.get_report_linkname() 427 linkclass = renderer.get_report_linkclass() 428 429 add_link(req,'alternate','?format='+format+href, 430 linkname,mimetype,linkclass) 393 431 394 432 def execute_report(self, req, db, id, sql, args): 395 433 sql, args = self.sql_sub_vars(req, sql, args, db)
