mirror of
				https://github.com/inventree/inventree-docs.git
				synced 2025-11-04 14:35:38 +00:00 
			
		
		
		
	Update docs for report mixin (#475)
This commit is contained in:
		@@ -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
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user