diff --git a/docs/customization/reports.md b/docs/customization/reports.md index ed4faf371..3bf6bd8d9 100644 --- a/docs/customization/reports.md +++ b/docs/customization/reports.md @@ -95,7 +95,7 @@ The following methods are available to log results within a report: The recording of one or more failure messages will automatically flag a report as failed. It is advised to log a success for each object that is evaluated so that the results will reflect how many objects are being reported on. (The inclusion of a log message is optional for successes.) Messages recorded with `log()` will appear in a report's results but are not associated with a particular object or status. Log messages also support using markdown syntax and will be rendered on the report result page. -To perform additional tasks, such as sending an email or calling a webhook, after a report has been run, extend the `post_run()` method. The status of the report is available as `self.failed` and the results object is `self.result`. +To perform additional tasks, such as sending an email or calling a webhook, before or after a report is run, extend the `pre_run()` and/or `post_run()` methods, respectively. The status of a completed report is available as `self.failed` and the results object is `self.result`. By default, reports within a module are ordered alphabetically in the reports list page. To return reports in a specific order, you can define the `report_order` variable at the end of your module. The `report_order` variable is a tuple which contains each Report class in the desired order. Any reports that are omitted from this list will be listed last. diff --git a/docs/release-notes/version-3.2.md b/docs/release-notes/version-3.2.md index f60f6b81e..9b9fd61b5 100644 --- a/docs/release-notes/version-3.2.md +++ b/docs/release-notes/version-3.2.md @@ -84,6 +84,7 @@ A new REST API endpoint has been added at `/api/ipam/vlan-groups//available- * [#8295](https://github.com/netbox-community/netbox/issues/8295) - Webhook URLs can now be templatized * [#8296](https://github.com/netbox-community/netbox/issues/8296) - Allow disabling custom links * [#8307](https://github.com/netbox-community/netbox/issues/8307) - Add `data_type` indicator to REST API serializer for custom fields +* [#8572](https://github.com/netbox-community/netbox/issues/8572) - Add a `pre_run()` method for reports ### Other Changes diff --git a/netbox/extras/reports.py b/netbox/extras/reports.py index f53c0ecd0..2eb6584c9 100644 --- a/netbox/extras/reports.py +++ b/netbox/extras/reports.py @@ -226,6 +226,9 @@ class Report(object): job_result.status = JobResultStatusChoices.STATUS_RUNNING job_result.save() + # Perform any post-run tasks + self.pre_run() + try: for method_name in self.test_methods: @@ -253,8 +256,14 @@ class Report(object): # Perform any post-run tasks self.post_run() - def post_run(self): + def pre_run(self): """ - Extend this method to include any tasks which should execute after the report has been run. + Extend this method to include any tasks which should execute *before* the report is run. + """ + pass + + def post_run(self): + """ + Extend this method to include any tasks which should execute *after* the report is run. """ pass