The '/event' API endpoint is really slow due to the amount of JOINs necessary to retrieve records from the database. Resolve this by a static JSON representation of any embedded data in the database. This has some disadvantages, noted in the patches, but the performance improvement is huge and users will not notice a thing.
As a necessary side-effect of this change, events now require the REST API be enabled. To be honest, this should have been the case from day 1 as events are currently only exposed over this API. Changes since v1: - Use NumberFilter for event fields to prevent the generation of large <select>s - Revert changes to use the JSON renderer for '/events' as this is now resolved - Multiple bug fixes and other improvements Stephen Finucane (6): REST: Support embedded serializers without context signals: Only enable events when REST API enabled tests: Add events API tests models: Migrate event fields to JSON field REST: Use NumberFilter for event fields Revert "api: Only provide JSON version of events list" patchwork/api/embedded.py | 58 +++++-- patchwork/api/event.py | 136 ++++++++-------- patchwork/api/filters.py | 5 + patchwork/fields.py | 46 ++++++ .../migrations/0026_add_event_payload_field.py | 21 +++ ...27_migrate_data_from_event_fields_to_payload.py | 61 ++++++++ .../migrations/0028_remove_old_event_fields.py | 34 ++++ patchwork/models.py | 28 +--- patchwork/signals.py | 80 ++++++++-- patchwork/templates/patchwork/event-list.html | 17 -- patchwork/tests/api/test_event.py | 173 +++++++++++++++++++++ patchwork/tests/test_events.py | 110 ++++++++----- .../events-require-rest-api-47eab4a3be745f75.yaml | 5 + 13 files changed, 598 insertions(+), 176 deletions(-) create mode 100644 patchwork/migrations/0026_add_event_payload_field.py create mode 100644 patchwork/migrations/0027_migrate_data_from_event_fields_to_payload.py create mode 100644 patchwork/migrations/0028_remove_old_event_fields.py delete mode 100644 patchwork/templates/patchwork/event-list.html create mode 100644 patchwork/tests/api/test_event.py create mode 100644 releasenotes/notes/events-require-rest-api-47eab4a3be745f75.yaml -- 2.14.3 _______________________________________________ Patchwork mailing list Patchwork@lists.ozlabs.org https://lists.ozlabs.org/listinfo/patchwork