From defba7731281e5e51777fad3fbc87eb560572236 Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 21 Apr 2023 14:22:53 +1000 Subject: [PATCH] Update docs for report mixin (#475) --- docs/extend/plugins/report.md | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/docs/extend/plugins/report.md b/docs/extend/plugins/report.md index b9791a2..6fb937f 100644 --- a/docs/extend/plugins/report.md +++ b/docs/extend/plugins/report.md @@ -6,6 +6,28 @@ title: Report Mixin The ReportMixin class provides a plugin with the ability to extend the functionality of custom [report templates](../../report/report.md). A plugin which implements the ReportMixin mixin class can add custom context data to a report template for rendering. +### Add Report Context + +Custom context data can be provided to a report template using the `add_report_context` method: + +```python +def add_report_context(self, report_instance, model_instance, request, context): + """Add extra context to the provided report instance. + + By default, this method does nothing. + + Args: + report_instance: The report instance to add context to + model_instance: The model instance which initiated the report generation + request: The request object which initiated the report generation + context: The context dictionary to add to + """ + + # Implemlented in the specific plugin code + ... +""" +``` + ### Example A sample plugin which provides additional context data to the report templates can be found [in the InvenTree source code](https://github.com/inventree/InvenTree/blob/master/InvenTree/plugin/samples/integration/report_plugin_sample.py): @@ -33,7 +55,7 @@ class SampleReportPlugin(ReportMixin, InvenTreePlugin): """Some custom function which is not required for the plugin to function""" return random.randint(0, 100) - def add_report_context(self, instance, request, context): + def add_report_context(self, report_instance, model_instance, request, context): """Add example content to the report instance""" # We can add any extra context data we want to the report @@ -45,7 +67,7 @@ class SampleReportPlugin(ReportMixin, InvenTreePlugin): context['random_int'] = self.some_custom_function() # We can also add extra data to the context which is specific to the report type - context['is_purchase_order'] = isinstance(instance, PurchaseOrderReport) + context['is_purchase_order'] = isinstance(report_instance, PurchaseOrderReport) # We can also use the 'request' object to add extra context data context['request_method'] = request.method