argus-server 2.2.2__tar.gz → 2.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {argus_server-2.2.2 → argus_server-2.3.0}/.mailmap +3 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/CHANGELOG.md +74 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/CONTRIBUTORS.md +2 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/NOTES.md +54 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/PKG-INFO +1 -1
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/customization/htmx-frontend.rst +28 -13
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/development/howtos/htmx-frontend/override_templates.rst +1 -1
- argus_server-2.3.0/docs/development/howtos/sonarqube.rst +19 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/reference/htmx-frontend.rst +128 -4
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/reference/site-specific-settings.rst +28 -2
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/user-manual.rst +37 -13
- {argus_server-2.2.2 → argus_server-2.3.0}/requirements-django52.txt +1 -1
- {argus_server-2.2.2 → argus_server-2.3.0}/requirements.txt +1 -1
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/auth/models.py +2 -2
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/auth/utils.py +3 -3
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/filter/filterwrapper.py +4 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/constants.py +0 -8
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/dateformat/constants.py +8 -8
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/defaults.py +2 -2
- argus_server-2.3.0/src/argus/htmx/incident/columns.py +250 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/incident/filter.py +24 -14
- argus_server-2.3.0/src/argus/htmx/incident/forms/base.py +101 -0
- argus_server-2.3.0/src/argus/htmx/incident/forms/incident_actions.py +20 -0
- argus_server-2.3.0/src/argus/htmx/incident/forms/incident_filters.py +135 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/incident/utils.py +2 -2
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/incident/views.py +91 -32
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/notificationprofile/views.py +1 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/static/styles.css +252 -8
- argus_server-2.3.0/src/argus/htmx/templates/htmx/base.html +51 -0
- argus_server-2.3.0/src/argus/htmx/templates/htmx/components/_page_title.html +9 -0
- argus_server-2.3.0/src/argus/htmx/templates/htmx/components/incident_list_refresh_info_select.html +18 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/destination/destination_list.html +1 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/_incident_filterbox.html +16 -13
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/_incident_list_refresh_info.html +5 -18
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/_incident_table.html +1 -1
- argus_server-2.3.0/src/argus/htmx/templates/htmx/incident/_incident_table_cell_wrapper_default.html +12 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/_incident_table_cell_wrapper_link_to_details.html +1 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/_incident_table_paginator_pageitem.html +2 -2
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_ack.html +1 -0
- argus_server-2.3.0/src/argus/htmx/templates/htmx/incident/cells/_incident_actions.html +2 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_checkbox.html +1 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_color_status.html +1 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_combined_status.html +1 -0
- argus_server-2.3.0/src/argus/htmx/templates/htmx/incident/cells/_incident_description.html +2 -0
- argus_server-2.3.0/src/argus/htmx/templates/htmx/incident/cells/_incident_filterable_column_header.html +13 -0
- argus_server-2.3.0/src/argus/htmx/templates/htmx/incident/cells/_incident_filterable_column_header_content.html +40 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_level.html +1 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_list_select_all_checkbox_header.html +1 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_pk.html +1 -0
- argus_server-2.3.0/src/argus/htmx/templates/htmx/incident/cells/_incident_source.html +2 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_start_time.html +1 -0
- argus_server-2.3.0/src/argus/htmx/templates/htmx/incident/cells/_incident_start_time_header.html +2 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_status.html +1 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_tag.html +1 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_ticket.html +1 -0
- argus_server-2.3.0/src/argus/htmx/templates/htmx/incident/cells/search_fields/input_search.html +7 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/notificationprofile/_notificationprofile_form.html +2 -2
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/notificationprofile/_notificationprofile_form_div.html +2 -2
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/notificationprofile/base.html +1 -1
- argus_server-2.3.0/src/argus/htmx/templates/htmx/styleguide.html +202 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/timeslot/base.html +1 -1
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/user/_dateformat_dropdown.html +3 -3
- argus_server-2.3.0/src/argus/htmx/templates/htmx/user/_incidents_table_columns_dropdown.html +30 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/user/_page_size_dropdown.html +3 -3
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/user/_theme_dropdown.html +3 -3
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/user/_user_menu.html +3 -3
- argus_server-2.3.0/src/argus/htmx/templates/htmx/user/preference_field_form.html +19 -0
- argus_server-2.3.0/src/argus/htmx/templates/htmx/user/preferences_list.html +14 -0
- argus_server-2.3.0/src/argus/htmx/templates/htmx/user/radio_option.html +10 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templatetags/argus_htmx.py +12 -2
- argus_server-2.3.0/src/argus/htmx/user/factories.py +13 -0
- argus_server-2.3.0/src/argus/htmx/user/preferences/forms.py +195 -0
- argus_server-2.3.0/src/argus/htmx/user/preferences/models.py +40 -0
- argus_server-2.3.0/src/argus/htmx/user/preferences/utils.py +14 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/user/views.py +7 -1
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/incident/admin.py +1 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/notificationprofile/media/base.py +1 -2
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/notificationprofile/media/email.py +1 -2
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/util/admin_utils.py +2 -2
- argus_server-2.3.0/src/argus/version.py +1 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/auth/models.py +2 -1
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/filter/test_filterwrapper.py +43 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/htmx/incident/test_customization.py +4 -4
- argus_server-2.3.0/tests/htmx/incident/test_forms_incident_filters.py +112 -0
- argus_server-2.3.0/tests/htmx/incident/test_views.py +58 -0
- argus_server-2.2.2/tests/htmx/test_incident.py → argus_server-2.3.0/tests/htmx/test_incident_columns_rendering.py +11 -4
- argus_server-2.3.0/tests/htmx/test_templatetags.py +20 -0
- argus_server-2.3.0/tests/util/__init__.py +0 -0
- argus_server-2.2.2/src/argus/htmx/incident/customization.py +0 -122
- argus_server-2.2.2/src/argus/htmx/incident/forms.py +0 -52
- argus_server-2.2.2/src/argus/htmx/templates/htmx/base.html +0 -47
- argus_server-2.2.2/src/argus/htmx/templates/htmx/incident/_incident_table_cell_wrapper_default.html +0 -7
- argus_server-2.2.2/src/argus/htmx/templates/htmx/incident/cells/_incident_actions.html +0 -1
- argus_server-2.2.2/src/argus/htmx/templates/htmx/incident/cells/_incident_description.html +0 -1
- argus_server-2.2.2/src/argus/htmx/templates/htmx/incident/cells/_incident_filterable_column_header.html +0 -32
- argus_server-2.2.2/src/argus/htmx/templates/htmx/incident/cells/_incident_source.html +0 -1
- argus_server-2.2.2/src/argus/htmx/templates/htmx/incident/cells/_incident_start_time_header.html +0 -1
- argus_server-2.2.2/src/argus/htmx/templates/htmx/styleguide.html +0 -188
- argus_server-2.2.2/src/argus/htmx/templates/htmx/user/_user_menu_user_preferences.html +0 -10
- argus_server-2.2.2/src/argus/htmx/templates/htmx/user/preferences.html +0 -22
- argus_server-2.2.2/src/argus/htmx/themes/constants.py +0 -13
- argus_server-2.2.2/src/argus/htmx/user/preferences/models.py +0 -75
- argus_server-2.2.2/src/argus/version.py +0 -1
- {argus_server-2.2.2 → argus_server-2.3.0}/.git-blame-ignore-revs +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/.gitattributes +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/.gitignore +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/.pre-commit-config.yaml +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/.readthedocs.yaml +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/.sonarcloud.properties +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/CONTRIBUTING.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/Dockerfile +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/LICENSE +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/MAINTAINING.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/Makefile +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/README.md +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/UPGRADING.md +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/changelog.d/.gitkeep +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/cmd.sh-template +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/codecov.yml +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/constraints.txt +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docker/Dockerfile +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docker/README.md +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docker/docker-entrypoint.sh +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docker/dockersettings.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docker-compose.yml +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/Makefile +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/_exts/djangodocs.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/_static/.gitkeep +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/_templates/.gitkeep +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/about-argus.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/conf.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/customization.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/development/howtos/add-more-preferences.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/development/howtos/change-settings.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/development/howtos/changelog-entry.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/development/howtos/commit-messages.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/development/howtos/customizing-filtering.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/development/howtos/federated-logins.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/development/howtos/howtos-for-git.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/development/howtos/howtos-for-github.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/development/howtos/htmx-frontend/column_for_specific_ack_group.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/development/howtos/htmx-frontend/column_for_specific_tag.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/development/howtos/htmx-frontend/custom-incident-actions.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/development/howtos/htmx-frontend/customize-filtering.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/development/howtos/htmx-frontend/dependencies.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/development/howtos/htmx-frontend/font_awesome.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/development/howtos/htmx-frontend.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/development/howtos/notification-system-testing.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/development/howtos/recover-from-migration-trouble.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/development/howtos/regenerate-the-ER-diagram.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/development/howtos/release-checklist.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/development/howtos/toggle-django-debug-toolbar.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/development/howtos/update-contributors.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/development/howtos/vendor-a-repo.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/development/howtos.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/development/makefile-rules.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/development/management-commands.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/development/notes.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/development/styleguide.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/development/troubleshooting.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/development.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/django_settings.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/img/default_timeslot.png +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/img/destinations_view.png +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/img/example_timeslot.png +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/img/filter_selector.png +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/img/incident_details_view.png +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/img/incidents_filter.png +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/img/incidents_page.png +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/img/new_notification_profile.png +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/img/notification_profiles.png +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/img/synced_destination_delete_error.png +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/img/timeslots_view.png +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/img/unsaved_recurrence.png +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/img/user_menu.png +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/index.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/integrations/_note.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/integrations/glue-services/index.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/integrations/glue-services/writing-glueservices.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/integrations/index.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/integrations/notifications/email-plugin.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/integrations/notifications/index.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/integrations/notifications/sms-plugin.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/integrations/notifications/writing-notification-plugins.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/integrations/ticket-systems/index.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/integrations/ticket-systems/writing-ticket-system-plugins.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/make.bat +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/reference/admin.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/reference/api/v2.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/reference/api.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/reference/authentication.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/reference/glossary.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/reference/img/ER_model.png +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/reference/models.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/docs/reference.rst +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/pyproject.toml +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/requirements/dev.txt +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/requirements/django52.txt +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/requirements/please-pip-sync.txt +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/requirements/test.txt +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/auth/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/auth/admin.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/auth/apps.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/auth/authentication.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/auth/context_processors.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/auth/drftoken/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/auth/drftoken/serializers.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/auth/drftoken/urls.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/auth/drftoken/views.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/auth/factories.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/auth/knox/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/auth/knox/serializers.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/auth/knox/urls.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/auth/knox/views.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/auth/management/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/auth/management/commands/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/auth/management/commands/changeuser.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/auth/management/commands/createuser.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/auth/management/commands/grantsuperuser.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/auth/management/commands/revokesuperuser.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/auth/management/commands/setpassword.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/auth/migrations/0001_initial.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/auth/migrations/0002_alter_user_first_name.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/auth/migrations/0002_squashed_auth_20250512_add_preferences_model.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/auth/migrations/0003_delete_phonenumber.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/auth/migrations/0004_add_preferences_model.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/auth/migrations/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/auth/serializers.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/auth/urls.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/auth/views.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/base/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/base/apps.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/base/static/favicon.svg +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/base/templates/base.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/base/templates/index.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/compat.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/dev/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/dev/apps.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/dev/management/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/dev/management/commands/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/dev/management/commands/bulk_incidents.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/dev/management/commands/check_token_expiry.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/dev/management/commands/close_incident.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/dev/management/commands/create_fake_incident.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/dev/management/commands/create_source.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/dev/management/commands/gen_secret_key.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/dev/management/commands/initial_setup.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/dev/management/commands/list_filters.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/dev/management/commands/stresstest.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/dev/management/commands/toggle_profile_activation.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/dev/utils.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/drf/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/drf/permissions.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/filter/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/filter/apps.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/filter/checks.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/filter/default.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/filter/factories.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/filter/filters.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/filter/primitive_serializers.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/filter/queryset_filters.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/filter/serializers.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/filter/swappable/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/filter/swappable/serializers.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/filter/validators.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/appconfig.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/apps.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/auth/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/auth/views.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/checks.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/context_processors.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/dateformat/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/destination/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/destination/forms.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/destination/urls.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/destination/views.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/forms.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/htmx_urls.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/incident/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/incident/constants.py +0 -0
- {argus_server-2.2.2/src/argus/htmx/management → argus_server-2.3.0/src/argus/htmx/incident/forms}/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/incident/urls.py +0 -0
- {argus_server-2.2.2/src/argus/htmx/management/commands → argus_server-2.3.0/src/argus/htmx/management}/__init__.py +0 -0
- {argus_server-2.2.2/src/argus/htmx/migrations → argus_server-2.3.0/src/argus/htmx/management/commands}/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/management/commands/tailwind_config.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/middleware.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/migrations/0001_initial.py +0 -0
- {argus_server-2.2.2/src/argus/htmx/notificationprofile → argus_server-2.3.0/src/argus/htmx/migrations}/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/modals.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/models.py +0 -0
- {argus_server-2.2.2/src/argus/htmx/tailwindtheme → argus_server-2.3.0/src/argus/htmx/notificationprofile}/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/notificationprofile/urls.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/request.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/root_urls.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/settings.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/static/htmx-2.0.2.min.js +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/static/hyperscript-0.9.13.min.js +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/static/logo_white.svg +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/tailwindtheme/README.md +0 -0
- {argus_server-2.2.2/src/argus/htmx/templatetags → argus_server-2.3.0/src/argus/htmx/tailwindtheme}/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/tailwindtheme/config.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/tailwindtheme/get_tailwind.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/tailwindtheme/snippets/10-tailwind.css +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/tailwindtheme/snippets/15-alert-message.css +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/tailwindtheme/snippets/20-loading-box.css +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/tailwindtheme/styles.css +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/tailwindtheme/tailwind.config.js +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/tailwindtheme/utils.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/django/forms/errors/dict/ul.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/django/forms/errors/list/ul.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/django/forms/field.html +1 -1
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/django/forms/label.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/django/forms/widgets/attrs.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/django/forms/widgets/checkbox.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/django/forms/widgets/checkbox_option.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/django/forms/widgets/classless_attrs.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/django/forms/widgets/date.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/django/forms/widgets/datetime.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/django/forms/widgets/input.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/django/forms/widgets/radio_option.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/django/forms/widgets/range.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/django/forms/widgets/select.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/django/forms/widgets/time.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/_base_confirm_dialog.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/_base_form_modal.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/_base_form_modal_button.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/_base_form_modal_experimental.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/destination/_collapse_with_forms.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/destination/_content.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/destination/_create_form.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/destination/_delete_form.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/destination/_edit_form.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/destination/_form_list.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/forms/badge_dropdown_select_multiple.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/forms/checkbox_select_multiple.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/forms/dropdown_select_multiple.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/forms/input_field.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/_base.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/_base_incident_update_modal.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/_delete_filter_confirm_dialog.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/_existing_filters.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/_filter_controls.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/_filter_create_modal.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/_filter_delete_dropdown.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/_filter_select.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/_filter_update_dropdown.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/_incident_acknowledge_modal.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/_incident_close_modal.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/_incident_list_menubar.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/_incident_list_update_menu.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/_incident_reopen_modal.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/_incident_table_paginator.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/_incident_table_row.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/_incident_table_rows.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/_incident_ticket_autocreate_modal.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/_incident_ticket_edit_modal.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/_incident_ticket_manual_create_modal.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/_update_filter_confirm_dialog.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/filter_list.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/incident_detail.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/incident_list.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/responses/_incident_list_refresh.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/incident/responses/empty_list_item.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/notificationprofile/notificationprofile_confirm_delete.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/notificationprofile/notificationprofile_form.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/notificationprofile/notificationprofile_list.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/timeslot/_delete_timeslot_confirm_dialog.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/timeslot/_timeslot_detail.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/timeslot/_timeslot_form.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/timeslot/checkbox_option.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/timeslot/timerecurrence_div.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/timeslot/timeslot_confirm_delete.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/timeslot/timeslot_form.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/timeslot/timeslot_list.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/user/_current_theme.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/user/_incidents_table_layout_dropdown.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/user/_update_interval_dropdown.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/user/_user_menu_logout.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx/user/_user_menu_notification_config.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/htmx_base.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/messages/_notification_message.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/messages/_notification_messages.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/messages/_notification_messages_htmx_append.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/registration/login.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/tailwind/styles.css +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/tailwind/tailwind.config.js +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/templates/tailwind_whitelist.html +0 -0
- {argus_server-2.2.2/src/argus/htmx/themes → argus_server-2.3.0/src/argus/htmx/templatetags}/__init__.py +0 -0
- {argus_server-2.2.2/src/argus/htmx/timeslot → argus_server-2.3.0/src/argus/htmx/themes}/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/themes/utils.py +0 -0
- {argus_server-2.2.2/src/argus/htmx/user/preferences → argus_server-2.3.0/src/argus/htmx/timeslot}/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/timeslot/urls.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/timeslot/views.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/urls.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/user/__init__.py +0 -0
- {argus_server-2.2.2/src/argus/incident/migrations → argus_server-2.3.0/src/argus/htmx/user/preferences}/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/user/urls.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/utils.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/views.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/htmx/widgets.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/incident/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/incident/apps.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/incident/constants.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/incident/factories.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/incident/fields.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/incident/forms.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/incident/migrations/0001_initial.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/incident/migrations/0001_squashed_incident_20250514.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/incident/migrations/0002_empty_source_incident_id.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/incident/migrations/0003_incident_level.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/incident/migrations/0004_add_ChangeEvent_proxy.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/incident/migrations/0005_alter_event_type.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/incident/migrations/0006_incident_search_text.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/incident/migrations/0007_alter_event_type.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/incident/migrations/0008_incident_metadata.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/incident/migrations/0009_use_bigautofield_on_quickly_growing_tables.py +0 -0
- {argus_server-2.2.2/src/argus/incident/ticket → argus_server-2.3.0/src/argus/incident/migrations}/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/incident/models.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/incident/serializers.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/incident/signals.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/incident/templates/incident/admin/fake_incident_add_form.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/incident/templates/incident/admin/incident_change_list.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/incident/templates/incident/admin/widgets/split_datetime_infinity.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/incident/templates/incident/ticket/default_ticket_body.html +0 -0
- {argus_server-2.2.2/src/argus/notificationprofile/migrations → argus_server-2.3.0/src/argus/incident/ticket}/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/incident/ticket/base.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/incident/ticket/dummy.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/incident/ticket/utils.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/incident/urls.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/incident/validators.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/incident/views.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/incident/widgets.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/notificationprofile/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/notificationprofile/admin.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/notificationprofile/apps.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/notificationprofile/checks.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/notificationprofile/factories.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/notificationprofile/media/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/notificationprofile/media/sms_as_email.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/notificationprofile/migrations/0001_squashed_0015_remove_days_alter_days_array.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/notificationprofile/migrations/0001_squashed_notificationprofile_20250512.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/notificationprofile/migrations/0016_noop.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/notificationprofile/migrations/0017_change_event_type_to_event_types.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/notificationprofile/migrations/0018_remove_closed_and_unacked_from_filterblob.py +0 -0
- {argus_server-2.2.2/src/argus/site → argus_server-2.3.0/src/argus/notificationprofile/migrations}/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/notificationprofile/models.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/notificationprofile/serializers.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/notificationprofile/signals.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/notificationprofile/templates/notificationprofile/email.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/notificationprofile/templates/notificationprofile/email.txt +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/notificationprofile/templates/schemawrapper.html +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/notificationprofile/urls.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/notificationprofile/views.py +0 -0
- {argus_server-2.2.2/src/argus/util → argus_server-2.3.0/src/argus/site}/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/site/api_v2_urls.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/site/logging.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/site/serializers.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/site/settings/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/site/settings/_serializers.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/site/settings/backend.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/site/settings/base.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/site/settings/dev.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/site/settings/dockerdev.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/site/settings/prod.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/site/settings/test_CI.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/site/urls.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/site/utils.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/site/views.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/site/wsgi.py +0 -0
- {argus_server-2.2.2/tests → argus_server-2.3.0/src/argus/util}/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/util/datetime_utils.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/util/testing.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/src/argus/util/utils.py +0 -0
- {argus_server-2.2.2/tests/auth/management_commands → argus_server-2.3.0/tests}/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/auth/__init__.py +0 -0
- {argus_server-2.2.2/tests/dev → argus_server-2.3.0/tests/auth/management_commands}/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/auth/management_commands/test_changeuser.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/auth/management_commands/test_createuser.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/auth/test_auth.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/auth/test_knox_views.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/auth/test_models.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/auth/test_utils.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/auth/test_views.py +0 -0
- {argus_server-2.2.2/tests/filter → argus_server-2.3.0/tests/dev}/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/dev/test_bulk_incidents.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/dev/test_check_token_expiry.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/dev/test_close_incident.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/dev/test_create_fake_incident.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/dev/test_create_source.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/dev/test_gen_secret_key.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/dev/test_initial_setup.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/dev/test_list_filters.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/dev/test_toggle_profile_activation.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/dev/test_utils.py +0 -0
- {argus_server-2.2.2/tests/htmx → argus_server-2.3.0/tests/filter}/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/filter/dummyplugin.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/filter/test_filterplugin.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/filter/test_queryset_filters.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/helpers.py +0 -0
- {argus_server-2.2.2/tests/htmx/incident → argus_server-2.3.0/tests/htmx}/__init__.py +0 -0
- {argus_server-2.2.2/tests/htmx/notificationprofile → argus_server-2.3.0/tests/htmx/incident}/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/htmx/incident/test_filter.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/htmx/incident/test_utils.py +0 -0
- {argus_server-2.2.2/tests/incident/fixtures → argus_server-2.3.0/tests/htmx/notificationprofile}/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/htmx/notificationprofile/test_forms.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/htmx/test_middleware.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/htmx/test_utils.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/incident/__init__.py +0 -0
- {argus_server-2.2.2/tests/incident/ticket_plugins → argus_server-2.3.0/tests/incident/fixtures}/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/incident/test_change_event.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/incident/test_create_fake_incident.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/incident/test_event.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/incident/test_filters.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/incident/test_incident.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/incident/test_incident_fields.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/incident/test_queryset.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/incident/test_serializers.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/incident/test_source_system.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/incident/test_source_system_type.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/incident/test_views.py +0 -0
- {argus_server-2.2.2/tests/incident/unit → argus_server-2.3.0/tests/incident/ticket_plugins}/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/incident/ticket_plugins/test_base.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/incident/ticket_plugins/test_dummy.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/incident/ticket_plugins/test_utils.py +0 -0
- {argus_server-2.2.2/tests/notificationprofile/destinations → argus_server-2.3.0/tests/incident/unit}/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/incident/unit/test_incident_details_url.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/migration_example.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/notificationprofile/__init__.py +0 -0
- {argus_server-2.2.2/tests/notificationprofile/migrations → argus_server-2.3.0/tests/notificationprofile/destinations}/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/notificationprofile/destinations/test_email.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/notificationprofile/destinations/test_sms.py +0 -0
- {argus_server-2.2.2/tests/site → argus_server-2.3.0/tests/notificationprofile/migrations}/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/notificationprofile/test_github236.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/notificationprofile/test_media.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/notificationprofile/test_models.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/notificationprofile/test_serializers.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/notificationprofile/test_views.py +0 -0
- {argus_server-2.2.2/tests/util → argus_server-2.3.0/tests/site}/__init__.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/site/test_misc.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/site/test_settings_helpers.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/site/test_settings_validators.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/site/test_views.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tests/util/test_utils.py +0 -0
- {argus_server-2.2.2 → argus_server-2.3.0}/tox.ini +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# canonical
|
|
2
2
|
|
|
3
|
+
Aleksander Fløtten <aleksander.flotten@sikt.no>
|
|
3
4
|
Alexander Staff <alexamst@stud.ntnu.no>
|
|
4
5
|
Andreas Melzer <akrimelzer@gmail.com>
|
|
5
6
|
Dabble <ddabble@users.noreply.github.com>
|
|
@@ -11,12 +12,14 @@ Karoline Bonnerud <kbonnerud@gmail.com>
|
|
|
11
12
|
Kat Hößel <kathoe@uninett.no>
|
|
12
13
|
Morten Brekkevold <morten.brekkevold@sikt.no>
|
|
13
14
|
Pelle Koster <elfjes@users.noreply.github.com>
|
|
15
|
+
Simen Abelsen <simen@abelweb.no>
|
|
14
16
|
Simon Oliver Tveit <simon.tveit@sikt.no>
|
|
15
17
|
Theodor Astrup Wiik <theo.aw@hotmail.com>
|
|
16
18
|
dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
|
|
17
19
|
jorund1 <jorund@washbear.eu>
|
|
18
20
|
|
|
19
21
|
# rewrites
|
|
22
|
+
Aleksander Fløtten <aleksander.flotten@sikt.no> aleksfl <99869083+aleksfl@users.noreply.github.com>
|
|
20
23
|
Alexander Staff <alexamst@stud.ntnu.no> <34887403+Tralphium@users.noreply.github.com>
|
|
21
24
|
Dabble <ddabble@users.noreply.github.com> Anders <6058745+ddabble@users.noreply.github.com>
|
|
22
25
|
Hanne Moa <hanne.moa@sikt.no> <hanne.moa@uninett.no>
|
|
@@ -8,6 +8,80 @@ This project uses [*towncrier*](https://towncrier.readthedocs.io/) and the chang
|
|
|
8
8
|
|
|
9
9
|
<!-- towncrier release notes start -->
|
|
10
10
|
|
|
11
|
+
## [2.3.0] - 2025-11-20
|
|
12
|
+
|
|
13
|
+
This release has numerous improvements to the frontend. The various
|
|
14
|
+
widgets on the incident list page now work better together, and where
|
|
15
|
+
there are more than one to choose from the choices are now sorted
|
|
16
|
+
alphabetically. No user preferences are left in the user menu. The
|
|
17
|
+
preference page has had a slight rework though more is planned.
|
|
18
|
+
|
|
19
|
+
The big new thing is the possibility to select more than one column
|
|
20
|
+
layout. You can now choose a preferred layout on the user preferences
|
|
21
|
+
page if any have been configured in addition to the standard one.
|
|
22
|
+
A nice looking preview of each configured layout is planned for the
|
|
23
|
+
next release.
|
|
24
|
+
|
|
25
|
+
Due to the possibility of choosing between multiple column layouts,
|
|
26
|
+
several new types of columns have been added. There's also a new
|
|
27
|
+
section in the reference documentation explaining and naming all the
|
|
28
|
+
built-in column types.
|
|
29
|
+
|
|
30
|
+
See NOTES.md for how to convert an existing column layout to the new format.
|
|
31
|
+
|
|
32
|
+
### Added
|
|
33
|
+
|
|
34
|
+
- Sort list of filters in filter dropdown alphabetically
|
|
35
|
+
([#1553](https://github.com/Uninett/Argus/issues/1553))
|
|
36
|
+
- Sort list of sources in filter dropdown alphabetically
|
|
37
|
+
([#1554](https://github.com/Uninett/Argus/issues/1554))
|
|
38
|
+
- [#1576](https://github.com/Uninett/Argus/issues/1576)
|
|
39
|
+
- Added and documented more searchable columns for the incident list:
|
|
40
|
+
`search_description`, `select_levels`, `has_ticket_url`,
|
|
41
|
+
`search_ticket_url`, and a way to mass-produce single-field forms to
|
|
42
|
+
add even more searchable columns and eventually systematize the
|
|
43
|
+
incident filter forms in the topmost box.
|
|
44
|
+
- Make it possible to define more than one column layout, and make it
|
|
45
|
+
possible to switch between them via a user preference. Fixes #1581,
|
|
46
|
+
#1582.
|
|
47
|
+
- Added the column `narrow_start_time`.
|
|
48
|
+
|
|
49
|
+
### Changed
|
|
50
|
+
|
|
51
|
+
- Remove user preferences from global header dropdown
|
|
52
|
+
([#1567](https://github.com/Uninett/Argus/issues/1567))
|
|
53
|
+
- Use DaisyUI dropdowns in searchable columns
|
|
54
|
+
([#1574](https://github.com/Uninett/Argus/issues/1574))
|
|
55
|
+
- Sort filter dropdowns for update / delete filter alphabetically
|
|
56
|
+
([#1592](https://github.com/Uninett/Argus/issues/1592))
|
|
57
|
+
- Add consistent title to notification config pages
|
|
58
|
+
([#1606](https://github.com/Uninett/Argus/issues/1606))
|
|
59
|
+
- Auto-align filterable column dropdown if it extends beyond the screen
|
|
60
|
+
([#1607](https://github.com/Uninett/Argus/issues/1607))
|
|
61
|
+
- Fixed several problems with filtering the incident list in the
|
|
62
|
+
frontend: the various widgets were stepping on each others toes.
|
|
63
|
+
Made much easier by turning all GET-abble filters into Django forms.
|
|
64
|
+
- Improved documentation of how notificationprofiles with multiple
|
|
65
|
+
filters work, with changes to the user manual, new tests, and a help
|
|
66
|
+
text added to the field in question in the frontend.
|
|
67
|
+
- Preferences are all now properly backed by forms, inheriting from
|
|
68
|
+
`SimplePreferenceForm` which is a perfect fit for preferences where
|
|
69
|
+
you choose one of several options. Using `PreferenceField` directly
|
|
70
|
+
will still work, but the form used now receives the request on
|
|
71
|
+
`__init__`. It is therefore necessary to upgrade the old forms by
|
|
72
|
+
either mixing in the `ClassicPreferenceFormMixin`, which will
|
|
73
|
+
discard the passed-in `request`, or writing your own `__init__` that
|
|
74
|
+
will prevent passing in the `request` via `super().__init__(*args,
|
|
75
|
+
**kwargs)`.
|
|
76
|
+
- User preferences were refactored. This is to increase consistency,
|
|
77
|
+
cut down on copypasta, and eventually use Django forms on the user
|
|
78
|
+
preference page, but more importantly: Django settings are no longer
|
|
79
|
+
read on import. Turns out, preferences that depend on Django
|
|
80
|
+
settings *sometimes* read the settings too soon, before the
|
|
81
|
+
settings-file was complete, and therefore getting the wrong or no
|
|
82
|
+
setting.
|
|
83
|
+
|
|
84
|
+
|
|
11
85
|
## [2.2.2] - 2025-11-03
|
|
12
86
|
|
|
13
87
|
### Added
|
|
@@ -3,6 +3,60 @@
|
|
|
3
3
|
This file documents changes to Argus that are relevant for operations,
|
|
4
4
|
customizers and end-users.
|
|
5
5
|
|
|
6
|
+
## [2.3.0] - 2025-11-20
|
|
7
|
+
|
|
8
|
+
This release has numerous improvements to the frontend. The various
|
|
9
|
+
widgets on the incident list page now work better together, and where
|
|
10
|
+
there are more than one to choose from the choices are now sorted
|
|
11
|
+
alphabetically. No user preferences are left in the user menu. The
|
|
12
|
+
preference page has had a slight rework though more is planned.
|
|
13
|
+
|
|
14
|
+
The big new thing is the possibility to select more than one column
|
|
15
|
+
layout. You can now choose a preferred layout on the user preferences
|
|
16
|
+
page if any have been configured in addition to the standard one.
|
|
17
|
+
A nice looking preview of each configured layout is planned for the
|
|
18
|
+
next release.
|
|
19
|
+
|
|
20
|
+
Due to the possibility of choosing between multiple column layouts,
|
|
21
|
+
several new types of columns have been added. There's also a new
|
|
22
|
+
section in the reference documentation explaining and naming all the
|
|
23
|
+
built-in column types.
|
|
24
|
+
|
|
25
|
+
As of this release, please convert the setting `INCIDENT_TABLE_COLUMNS` to the
|
|
26
|
+
new `INCIDENT_TABLE_COLUMN_LAYOUTS` setting. Usage of `INCIDENT_TABLE_COLUMNS`
|
|
27
|
+
is deprecated and support will eventually be removed.
|
|
28
|
+
|
|
29
|
+
If your current `INCIDENT_TABLE_COLUMNS` looks like this:
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
INCIDENT_TABLE_COLUMNS = [
|
|
33
|
+
"row_select",
|
|
34
|
+
"combined_status",
|
|
35
|
+
"source",
|
|
36
|
+
"description",
|
|
37
|
+
]
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
then the equivalent new setting looks like:
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
INCIDENT_TABLE_COLUMN_LAYOUTS = {
|
|
44
|
+
"default": [
|
|
45
|
+
"row_select",
|
|
46
|
+
"combined_status",
|
|
47
|
+
"source",
|
|
48
|
+
"description",
|
|
49
|
+
]
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
This will make it possible to select between two different layouts: "built-in"
|
|
54
|
+
and "default". If you wish to hide the built-in layout, use the name
|
|
55
|
+
"built-in" for one of the layouts in `INCIDENT_TABLE_COLUMN_LAYOUTS`.
|
|
56
|
+
|
|
57
|
+
If you do not convert the setting, the layout defined in the old setting will
|
|
58
|
+
be available as "default" together with the built-in layout as "built-in".
|
|
59
|
+
|
|
6
60
|
## [2.2.2] - 2025-11-03
|
|
7
61
|
|
|
8
62
|
To aid in development there a live styleguide for the frontend on
|
|
@@ -119,8 +119,9 @@ How to customize the look:
|
|
|
119
119
|
Incident table column customization
|
|
120
120
|
===================================
|
|
121
121
|
|
|
122
|
-
The :setting:`
|
|
123
|
-
in the incident table. This setting takes a
|
|
122
|
+
The :setting:`INCIDENT_TABLE_COLUMN_LAYOUTS` setting controls which columns are
|
|
123
|
+
shown in the incident table. This setting takes a dictionary where the key is
|
|
124
|
+
the name of a layout and the value is a list of ``str`` or
|
|
124
125
|
``argus.htmx.incidents.customization.IncidentTableColumn`` instances. when
|
|
125
126
|
given a ``str``, this key must be available in the
|
|
126
127
|
``argus.htmx.incidents.customization.BUILTIN_COLUMNS`` dictionary. For
|
|
@@ -128,17 +129,21 @@ example::
|
|
|
128
129
|
|
|
129
130
|
from argus.htmx.incidents.customization import BUILTIN_COLUMNS, IncidentTableColumn
|
|
130
131
|
|
|
131
|
-
|
|
132
|
-
"
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
132
|
+
INCIDENT_TABLE_COLUMN_LAYOUTS = {
|
|
133
|
+
"default": [
|
|
134
|
+
"id",
|
|
135
|
+
"start_time",
|
|
136
|
+
BUILTIN_COLUMNS["description"], # equivalent to just "description"
|
|
137
|
+
IncidentTableColumn( # a new column definition
|
|
138
|
+
name="name",
|
|
139
|
+
label="Custom",
|
|
140
|
+
cell_template="/path/to/template.html", # contents of cell
|
|
141
|
+
),
|
|
142
|
+
]
|
|
143
|
+
}
|
|
140
144
|
|
|
141
|
-
|
|
145
|
+
The settings :setting:`INCIDENT_TABLE_COLUMNS` took a single list and is
|
|
146
|
+
deprecated. If it exists it is interpreted as a layout named "default".
|
|
142
147
|
|
|
143
148
|
|
|
144
149
|
.. py:class:: IncidentTableColumn
|
|
@@ -172,11 +177,21 @@ example::
|
|
|
172
177
|
a ``<td>``-tag. This makes it possible to add attributes to the
|
|
173
178
|
``<td>``-tag or skip including the ``cell_template`` altogether.
|
|
174
179
|
|
|
180
|
+
Deprecated: see ``detail_link``
|
|
181
|
+
|
|
175
182
|
Replacing the default with
|
|
176
183
|
``htmx/incident/_incident_table_cell_wrapper_link_to_details.html`` will
|
|
177
184
|
result in the ``cell_template`` being wrapped in a link (``<a>``) to the
|
|
178
185
|
details page.
|
|
179
186
|
|
|
187
|
+
.. py:attribute::detail_link
|
|
188
|
+
|
|
189
|
+
:type: bool
|
|
190
|
+
:value: False
|
|
191
|
+
|
|
192
|
+
Setting ``detail_link`` to ``True`` will wrap the contents of the cell
|
|
193
|
+
with a link (``<a>``) to the details page.
|
|
194
|
+
|
|
180
195
|
.. py:attribute:: column_classes
|
|
181
196
|
|
|
182
197
|
:type: str
|
|
@@ -243,7 +258,7 @@ You could then create ``path/to/_extra_widget.html`` as following::
|
|
|
243
258
|
|
|
244
259
|
|
|
245
260
|
Toast messages
|
|
246
|
-
|
|
261
|
+
==============
|
|
247
262
|
|
|
248
263
|
``argus_htmx`` uses the `Django Messages`_ framework to dynamically display notifications toast
|
|
249
264
|
messages to the user. Some of these messages stay on screen until the user refreshes, while others
|
|
@@ -83,7 +83,7 @@ an extensive list, but can provide entry points or inspiration:
|
|
|
83
83
|
``hx-swap-oob`` content, to a incident list htmx partial response
|
|
84
84
|
* ``htmx/user/_user_menu.html``: add or remove items to the user menu (the menu that appears when
|
|
85
85
|
clicking on the user's initials in the top right)
|
|
86
|
-
* ``htmx/user/
|
|
86
|
+
* ``htmx/user/preferences_list.html``: add custom preferences to the preferences page
|
|
87
87
|
* ``registration/login.html``: show additional information to a user prior to logging in, such as
|
|
88
88
|
a link to a privacy policy or other terms
|
|
89
89
|
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
=======================
|
|
2
|
+
Howto: Handle sonarqube
|
|
3
|
+
=======================
|
|
4
|
+
|
|
5
|
+
We use `sonarqube`_ to scan new code for potential issues and security hotspots.
|
|
6
|
+
It posts comments on pull requests when it finds new issues in that code using rules
|
|
7
|
+
defined by the developer team at Sikt.
|
|
8
|
+
|
|
9
|
+
But we sometimes also disagree with how it handles parts of certain rules. We will
|
|
10
|
+
document that here and which comment to use when marking such an issue as accepted or
|
|
11
|
+
false positive.
|
|
12
|
+
|
|
13
|
+
python:S1192 - String literals should not be duplicated
|
|
14
|
+
-------------------------------------------------------
|
|
15
|
+
|
|
16
|
+
If it makes it more readable, for example if configuration is happening within the
|
|
17
|
+
Python code, then we accept it with "This is better for readability".
|
|
18
|
+
|
|
19
|
+
.. _sonarqube: https://www.sonarsource.com/products/sonarcloud/
|
|
@@ -172,13 +172,137 @@ a time), and the user can select a different page size from ``[10, 20, 50,
|
|
|
172
172
|
:setting:`ARGUS_INCIDENTS_DEFAULT_PAGE_SIZE` (an integer) and
|
|
173
173
|
:setting:`ARGUS_INCIDENTS_PAGE_SIZES` setting respectively.
|
|
174
174
|
|
|
175
|
-
|
|
176
|
-
-----------------------------------
|
|
175
|
+
.. _table-column-reference:
|
|
177
176
|
|
|
178
|
-
|
|
179
|
-
|
|
177
|
+
Table columns
|
|
178
|
+
-------------
|
|
179
|
+
|
|
180
|
+
Argus ships with more possible column types than what are configured by
|
|
181
|
+
default.
|
|
182
|
+
|
|
183
|
+
The columns to use are set with the :setting:`INCIDENT_TABLE_COLUMN_LAYOUTS`
|
|
184
|
+
setting.
|
|
185
|
+
|
|
186
|
+
This is the default for the setting as of this version of Argus:
|
|
187
|
+
|
|
188
|
+
.. code-block:: python3
|
|
189
|
+
|
|
190
|
+
INCIDENT_TABLE_COLUMN_LAYOUTS = {
|
|
191
|
+
"built-in": [
|
|
192
|
+
"color_status",
|
|
193
|
+
"row_select",
|
|
194
|
+
"start_time",
|
|
195
|
+
"combined_status",
|
|
196
|
+
"level",
|
|
197
|
+
"source",
|
|
198
|
+
"description",
|
|
199
|
+
"ticket",
|
|
200
|
+
]
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
You can define your own columns from scratch, see
|
|
180
204
|
:ref:`customize-htmx-frontend` for examples.
|
|
181
205
|
|
|
206
|
+
All built-in columns
|
|
207
|
+
~~~~~~~~~~~~~~~~~~~~
|
|
208
|
+
|
|
209
|
+
ack
|
|
210
|
+
:From: ack
|
|
211
|
+
:Name: ack
|
|
212
|
+
:Description: Show whether the incident is acked or not.
|
|
213
|
+
:Redundant with: combined_status
|
|
214
|
+
|
|
215
|
+
color_status
|
|
216
|
+
:From: ack + status
|
|
217
|
+
:Name: color_status
|
|
218
|
+
:Description: A combination of ackedness and openness, shown only as a color.
|
|
219
|
+
|
|
220
|
+
combined_status
|
|
221
|
+
:From: ack + status
|
|
222
|
+
:Name: combined_status
|
|
223
|
+
:Description: Merges the "open" column and the "ack" column into one.
|
|
224
|
+
|
|
225
|
+
description
|
|
226
|
+
:From: description
|
|
227
|
+
:Name: description
|
|
228
|
+
:Description: The contents of the description-field of the incident.
|
|
229
|
+
:Redundant with: search_description
|
|
230
|
+
|
|
231
|
+
search_description
|
|
232
|
+
:From: description
|
|
233
|
+
:Name: search_description
|
|
234
|
+
:Description: Search for (free text) all tickets that matches and show their
|
|
235
|
+
incidents.
|
|
236
|
+
:Redundant with: description
|
|
237
|
+
|
|
238
|
+
id
|
|
239
|
+
:From: id
|
|
240
|
+
:Name: id
|
|
241
|
+
:Description: The internal id of the incident in argus.
|
|
242
|
+
|
|
243
|
+
level
|
|
244
|
+
:From: level
|
|
245
|
+
:Name: level
|
|
246
|
+
:Description: The severity level.
|
|
247
|
+
:Redundant with: select_levels
|
|
248
|
+
|
|
249
|
+
select_levels
|
|
250
|
+
:From: level
|
|
251
|
+
:Name: select_levels
|
|
252
|
+
:Description: The severity level. One or more can be selected. Might conflict
|
|
253
|
+
with the notification filter field ``maxlevel``. If maxlevel is
|
|
254
|
+
set to less than max, you will get no results if searching for
|
|
255
|
+
the max via this field.
|
|
256
|
+
:Redundant with: level
|
|
257
|
+
|
|
258
|
+
status
|
|
259
|
+
:From: open
|
|
260
|
+
:Name: status
|
|
261
|
+
:Description: Whether the incident is still ongoing or has been closed.
|
|
262
|
+
:Redundant with: combined_status
|
|
263
|
+
|
|
264
|
+
row_select
|
|
265
|
+
:From: depends on incident id
|
|
266
|
+
:Name: row_select
|
|
267
|
+
:Description: Checkbox to select the row for bulk changes.
|
|
268
|
+
|
|
269
|
+
source
|
|
270
|
+
:From: source
|
|
271
|
+
:Name: source
|
|
272
|
+
:Description: The source of the incident.
|
|
273
|
+
|
|
274
|
+
start_time
|
|
275
|
+
:From: start_time
|
|
276
|
+
:Name: start_time
|
|
277
|
+
:Description: When the incident started, fixed width.
|
|
278
|
+
|
|
279
|
+
narrow_start_time
|
|
280
|
+
:From: start_time
|
|
281
|
+
:Name: start_time
|
|
282
|
+
:Description: When the incident started, width depends on date format.
|
|
283
|
+
|
|
284
|
+
ticket
|
|
285
|
+
:From: ticket_url
|
|
286
|
+
:Name: ticket
|
|
287
|
+
:Description: A link to a ticket/issue in an external system with more information.
|
|
288
|
+
:Redundant with: has_ticket_url, search_ticket_url
|
|
289
|
+
|
|
290
|
+
has_ticket_url
|
|
291
|
+
:From: ticket_url
|
|
292
|
+
:Name: has_ticket_url
|
|
293
|
+
:Description: A link to a ticket/issue in an external system with more information.
|
|
294
|
+
Can toggle showing only incidents that has or lacks a ticket url.
|
|
295
|
+
:Redundant with: ticket, search_ticket_url
|
|
296
|
+
|
|
297
|
+
search_ticket_url
|
|
298
|
+
:From: ticket_url
|
|
299
|
+
:Name: search_ticket_url
|
|
300
|
+
:Description: A link to a ticket/issue in an external system with more information.
|
|
301
|
+
Can search through all the tickets for the term, and only show
|
|
302
|
+
the matching incidents.
|
|
303
|
+
:Redundant with: ticket, has_ticket_url
|
|
304
|
+
|
|
305
|
+
|
|
182
306
|
Themes
|
|
183
307
|
------
|
|
184
308
|
|
|
@@ -315,8 +315,35 @@ Ticket system settings
|
|
|
315
315
|
``TICKET_PLUGIN``, ``TICKET_ENDPOINT``, ``TICKET_AUTHENTICATION_SECRET``,
|
|
316
316
|
``TICKET_INFORMATION`` are all described in :ref:`ticket-systems-settings`.
|
|
317
317
|
|
|
318
|
+
Frontend settings
|
|
319
|
+
-----------------
|
|
320
|
+
|
|
321
|
+
.. setting:: INCIDENT_TABLE_COLUMN_LAYOUTS
|
|
322
|
+
|
|
323
|
+
* :setting:`INCIDENT_TABLE_COLUMN_LAYOUTS` allows adding one or more choosable
|
|
324
|
+
incident list column layouts in addition to the built-in layout. Format::
|
|
325
|
+
|
|
326
|
+
INCIDENT_TABLE_COLUMN_LAYOUTS = {
|
|
327
|
+
"default": [
|
|
328
|
+
"row_select",
|
|
329
|
+
"combined_status",
|
|
330
|
+
"source",
|
|
331
|
+
"description",
|
|
332
|
+
]
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
See :ref:`table-column-reference` for the built-in layout and a list of all
|
|
336
|
+
available built-in column types.
|
|
337
|
+
|
|
338
|
+
.. setting:: INCIDENT_TABLE_COLUMNS
|
|
339
|
+
|
|
340
|
+
* :setting:`INCIDENT_TABLE_COLUMNS`
|
|
341
|
+
|
|
342
|
+
The old, deprecated variant of :setting:`INCIDENT_TABLE_COLUMN_LAYOUTS`, it
|
|
343
|
+
only supported a single column layout.
|
|
344
|
+
|
|
318
345
|
Special environment settings
|
|
319
|
-
|
|
346
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
320
347
|
|
|
321
348
|
.. setting:: BANNER_MESSAGE
|
|
322
349
|
|
|
@@ -344,4 +371,3 @@ Debugging settings
|
|
|
344
371
|
|
|
345
372
|
* :setting:`TEMPLATE_DEBUG` (optional) provides a convenient way to turn debugging on and off
|
|
346
373
|
for templates. If undefined it will default to the value of :setting:`DEBUG`.
|
|
347
|
-
|
|
@@ -626,19 +626,43 @@ receive by creating, editing and deleting *notification profiles*.
|
|
|
626
626
|
About components of notification profiles
|
|
627
627
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
628
628
|
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
629
|
+
Timeslot
|
|
630
|
+
^^^^^^^^
|
|
631
|
+
|
|
632
|
+
**Timeslot** allows you to customize **when** you want to receive
|
|
633
|
+
the alarm notifications. You can choose one timeslot per
|
|
634
|
+
notification profile. Timeslots are reusable across multiple
|
|
635
|
+
notification profiles.
|
|
636
|
+
|
|
637
|
+
Filter
|
|
638
|
+
^^^^^^
|
|
639
|
+
|
|
640
|
+
**Filter** allows you to customize **what** alarms (incidents) you
|
|
641
|
+
want to receive the notifications about. Filters are reusable
|
|
642
|
+
across multiple notification profiles.
|
|
643
|
+
|
|
644
|
+
You can choose multiple filters per notification profile. They are
|
|
645
|
+
*combined to increase precision*. You cannot use *one* profile for
|
|
646
|
+
*sufficiently different types of incidents*.
|
|
647
|
+
|
|
648
|
+
For instance, if an incident may only ever have one tag that
|
|
649
|
+
starts with ``hostname=``, then having a profile with multiple
|
|
650
|
+
filters, each asking for *different* hostnames, will never be able
|
|
651
|
+
to match anything.
|
|
652
|
+
|
|
653
|
+
If you need to match multiple hostname tags in a profile, make
|
|
654
|
+
a filter that only matches hostnames and include that filter in
|
|
655
|
+
the profile.
|
|
656
|
+
|
|
657
|
+
Destination
|
|
658
|
+
^^^^^^^^^^^
|
|
659
|
+
|
|
660
|
+
**Destination** allows you to customize **where** you want to
|
|
661
|
+
receive the alarm notifications. You can choose multiple
|
|
662
|
+
destinations per notification profile. Destinations are reusable
|
|
663
|
+
across multiple notification profiles. Destinations may be of
|
|
664
|
+
`different media types
|
|
665
|
+
<#about-the-available-notification-media>`_.
|
|
642
666
|
|
|
643
667
|
.. _about-the-available-notification-media:
|
|
644
668
|
About the available notification media
|
|
@@ -2,7 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import dataclasses
|
|
4
4
|
import functools
|
|
5
|
-
from typing import Any, Optional,
|
|
5
|
+
from typing import Any, Optional, Protocol, Sequence
|
|
6
6
|
|
|
7
7
|
from django.contrib.auth.models import AbstractUser, Group
|
|
8
8
|
from django.db import models
|
|
@@ -80,7 +80,7 @@ class User(AbstractUser):
|
|
|
80
80
|
def is_end_user(self):
|
|
81
81
|
return not hasattr(self, "source_system")
|
|
82
82
|
|
|
83
|
-
def is_member_of_group(self, group:
|
|
83
|
+
def is_member_of_group(self, group: str | Group):
|
|
84
84
|
if isinstance(group, str):
|
|
85
85
|
try:
|
|
86
86
|
group = Group.objects.get(name=group)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from copy import deepcopy
|
|
2
2
|
import logging
|
|
3
|
-
from typing import Mapping
|
|
3
|
+
from typing import Mapping
|
|
4
4
|
|
|
5
5
|
from django.conf import settings
|
|
6
6
|
from django.contrib.auth.backends import ModelBackend, RemoteUserBackend
|
|
@@ -62,7 +62,7 @@ def get_preference(request, namespace, preference):
|
|
|
62
62
|
return prefs.get_preference(preference)
|
|
63
63
|
|
|
64
64
|
|
|
65
|
-
def save_preferences(request, data, namespace_or_prefs:
|
|
65
|
+
def save_preferences(request, data, namespace_or_prefs: str | Preferences):
|
|
66
66
|
prefs = (
|
|
67
67
|
namespace_or_prefs
|
|
68
68
|
if isinstance(namespace_or_prefs, Preferences)
|
|
@@ -98,7 +98,7 @@ def _save_preference(request: HttpRequest, prefs: Preferences, preference: str,
|
|
|
98
98
|
LOG.debug("Failed to change %s, not in input: %s", preference, data)
|
|
99
99
|
return value, False
|
|
100
100
|
|
|
101
|
-
form = prefs.get_forms()[preference](data)
|
|
101
|
+
form = prefs.get_forms()[preference](data, request=request)
|
|
102
102
|
|
|
103
103
|
if not form.is_valid():
|
|
104
104
|
messages.warning(request, f"Failed to change {preference}, invalid input")
|
|
@@ -132,6 +132,10 @@ class ComplexFilterWrapper:
|
|
|
132
132
|
self.profile = kwargs.pop("profile", None)
|
|
133
133
|
|
|
134
134
|
def incident_fits(self, incident: Incident) -> bool:
|
|
135
|
+
"""Check against multiple filters
|
|
136
|
+
|
|
137
|
+
The filters are AND-ed together for greater precision.
|
|
138
|
+
"""
|
|
135
139
|
if not self.profile.active:
|
|
136
140
|
return False
|
|
137
141
|
is_selected_by_time = self.profile.timeslot.timestamp_is_within_time_recurrences(incident.start_time)
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
from argus.htmx.dateformat.constants import DATETIME_CHOICES, DATETIME_DEFAULT, DATETIME_FORMATS
|
|
2
1
|
from argus.htmx.incident.constants import (
|
|
3
2
|
INCIDENTS_TABLE_LAYOUT_CHOICES,
|
|
4
3
|
INCIDENTS_TABLE_LAYOUT_DEFAULT,
|
|
@@ -9,19 +8,12 @@ from argus.htmx.incident.constants import (
|
|
|
9
8
|
TIMEFRAME_CHOICES,
|
|
10
9
|
TIMEFRAME_DEFAULT,
|
|
11
10
|
)
|
|
12
|
-
from argus.htmx.themes.constants import THEME_CHOICES, THEME_DEFAULT, THEME_NAMES
|
|
13
11
|
|
|
14
12
|
__all__ = [
|
|
15
|
-
"DATETIME_CHOICES",
|
|
16
|
-
"DATETIME_DEFAULT",
|
|
17
|
-
"DATETIME_FORMATS",
|
|
18
13
|
"INCIDENTS_TABLE_LAYOUT_CHOICES",
|
|
19
14
|
"INCIDENTS_TABLE_LAYOUT_DEFAULT",
|
|
20
15
|
"PAGE_SIZE_DEFAULT",
|
|
21
16
|
"PAGE_SIZE_CHOICES",
|
|
22
|
-
"THEME_CHOICES",
|
|
23
|
-
"THEME_DEFAULT",
|
|
24
|
-
"THEME_NAMES",
|
|
25
17
|
"UPDATE_INTERVAL_CHOICES",
|
|
26
18
|
"UPDATE_INTERVAL_DEFAULT",
|
|
27
19
|
"TIMEFRAME_CHOICES",
|
|
@@ -2,10 +2,8 @@ import dataclasses
|
|
|
2
2
|
from django.conf import settings
|
|
3
3
|
|
|
4
4
|
__all__ = [
|
|
5
|
-
"DATETIME_FALLBACK",
|
|
6
5
|
"DATETIME_FORMATS",
|
|
7
|
-
"
|
|
8
|
-
"DATETIME_CHOICES",
|
|
6
|
+
"get_datetime_format_default",
|
|
9
7
|
]
|
|
10
8
|
|
|
11
9
|
|
|
@@ -26,10 +24,12 @@ DATETIME_FORMATS = {
|
|
|
26
24
|
"RFC5322": DateTimeFormat("r", "r", "r"),
|
|
27
25
|
"EPOCH": DateTimeFormat("U", "U", "U"),
|
|
28
26
|
}
|
|
29
|
-
DATETIME_CHOICES = tuple((format, format) for format in DATETIME_FORMATS)
|
|
30
27
|
|
|
31
|
-
_datetime_setting = getattr(settings, "ARGUS_FRONTEND_DATETIME_FORMAT", DATETIME_FALLBACK)
|
|
32
28
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
29
|
+
def get_datetime_format_default():
|
|
30
|
+
_datetime_setting = getattr(settings, "ARGUS_FRONTEND_DATETIME_FORMAT", DATETIME_FALLBACK)
|
|
31
|
+
|
|
32
|
+
datetime_default = DATETIME_FALLBACK
|
|
33
|
+
if _datetime_setting in DATETIME_FORMATS:
|
|
34
|
+
datetime_default = _datetime_setting
|
|
35
|
+
return datetime_default
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# customize the displayed columns in the incident table
|
|
2
2
|
# items in INCIDENT_TABLE_COLUMNS can be either a `str` referring to a key in
|
|
3
|
-
# argus.htmx.incident.
|
|
4
|
-
# argus.htmx.incident.
|
|
3
|
+
# argus.htmx.incident.columns.BUILTIN_COLUMNS or an instance of
|
|
4
|
+
# argus.htmx.incident.columns.IncidentTableColumn
|
|
5
5
|
from argus.site.settings import get_json_env, get_str_env
|
|
6
6
|
|
|
7
7
|
|