argus-server 2.3.0__tar.gz → 2.5.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.
Files changed (582) hide show
  1. {argus_server-2.3.0 → argus_server-2.5.0}/CHANGELOG.md +79 -2
  2. {argus_server-2.3.0 → argus_server-2.5.0}/NOTES.md +32 -0
  3. {argus_server-2.3.0 → argus_server-2.5.0}/PKG-INFO +4 -4
  4. {argus_server-2.3.0 → argus_server-2.5.0}/README.md +3 -3
  5. {argus_server-2.3.0 → argus_server-2.5.0}/codecov.yml +2 -2
  6. {argus_server-2.3.0 → argus_server-2.5.0}/docs/about-argus.rst +1 -0
  7. {argus_server-2.3.0 → argus_server-2.5.0}/docs/development/howtos/regenerate-the-ER-diagram.rst +3 -3
  8. {argus_server-2.3.0 → argus_server-2.5.0}/docs/development/howtos/release-checklist.rst +2 -2
  9. argus_server-2.5.0/docs/development/howtos/trigger-test-error-pages.rst +14 -0
  10. {argus_server-2.3.0 → argus_server-2.5.0}/docs/development/howtos/vendor-a-repo.rst +1 -1
  11. {argus_server-2.3.0 → argus_server-2.5.0}/docs/django_settings.py +1 -0
  12. {argus_server-2.3.0 → argus_server-2.5.0}/docs/integrations/notifications/writing-notification-plugins.rst +1 -1
  13. {argus_server-2.3.0 → argus_server-2.5.0}/docs/reference/api/v2.rst +9 -0
  14. {argus_server-2.3.0 → argus_server-2.5.0}/docs/reference/htmx-frontend.rst +47 -2
  15. argus_server-2.5.0/docs/reference/img/ER_model.png +0 -0
  16. {argus_server-2.3.0 → argus_server-2.5.0}/docs/reference/models.rst +12 -0
  17. argus_server-2.5.0/docs/reference/planned-maintenance.rst +43 -0
  18. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/auth/factories.py +2 -1
  19. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/dev/management/commands/create_fake_incident.py +2 -1
  20. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/dev/management/commands/create_source.py +9 -2
  21. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/filter/filterwrapper.py +9 -1
  22. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/filter/swappable/serializers.py +5 -0
  23. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/context_processors.py +6 -0
  24. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/defaults.py +1 -0
  25. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/incident/columns.py +36 -0
  26. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/incident/filter.py +89 -22
  27. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/incident/urls.py +1 -0
  28. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/incident/views.py +24 -2
  29. argus_server-2.5.0/src/argus/htmx/static/choices-11.1.0.min.js +2 -0
  30. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/static/styles.css +958 -247
  31. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/tailwindtheme/snippets/20-loading-box.css +5 -5
  32. argus_server-2.5.0/src/argus/htmx/tailwindtheme/snippets/25-choices.css +80 -0
  33. argus_server-2.5.0/src/argus/htmx/tailwindtheme/snippets/30-incident-table.css +21 -0
  34. argus_server-2.5.0/src/argus/htmx/tailwindtheme/snippets/35-cards.css +15 -0
  35. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/tailwindtheme/styles.css +3 -0
  36. argus_server-2.5.0/src/argus/htmx/templates/400.html +7 -0
  37. argus_server-2.5.0/src/argus/htmx/templates/401.html +7 -0
  38. argus_server-2.5.0/src/argus/htmx/templates/403.html +7 -0
  39. argus_server-2.5.0/src/argus/htmx/templates/404.html +7 -0
  40. argus_server-2.5.0/src/argus/htmx/templates/410.html +7 -0
  41. argus_server-2.5.0/src/argus/htmx/templates/500.html +7 -0
  42. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/destination/_collapse_with_forms.html +1 -1
  43. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/destination/_create_form.html +1 -1
  44. argus_server-2.5.0/src/argus/htmx/templates/htmx/destination/destination_list.html +7 -0
  45. argus_server-2.5.0/src/argus/htmx/templates/htmx/forms/search_select_multiple.html +66 -0
  46. argus_server-2.5.0/src/argus/htmx/templates/htmx/incident/_base_incident_table.html +32 -0
  47. argus_server-2.5.0/src/argus/htmx/templates/htmx/incident/_incident_table.html +10 -0
  48. argus_server-2.5.0/src/argus/htmx/templates/htmx/incident/_incident_table_autorefresh.html +12 -0
  49. argus_server-2.5.0/src/argus/htmx/templates/htmx/incident/_incident_table_footer.html +30 -0
  50. argus_server-2.5.0/src/argus/htmx/templates/htmx/incident/_unpaged_incident_table.html +4 -0
  51. argus_server-2.5.0/src/argus/htmx/templates/htmx/incident/cells/_incident_ack_icon.html +10 -0
  52. argus_server-2.5.0/src/argus/htmx/templates/htmx/incident/cells/_incident_age.html +4 -0
  53. argus_server-2.5.0/src/argus/htmx/templates/htmx/incident/cells/_incident_combined_status_icons.html +5 -0
  54. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_filterable_column_header_content.html +17 -10
  55. argus_server-2.5.0/src/argus/htmx/templates/htmx/incident/cells/_incident_source_type.html +2 -0
  56. argus_server-2.5.0/src/argus/htmx/templates/htmx/incident/cells/_incident_start_time_and_age.html +5 -0
  57. argus_server-2.5.0/src/argus/htmx/templates/htmx/incident/cells/_incident_status_icon.html +10 -0
  58. argus_server-2.5.0/src/argus/htmx/templates/htmx/incident/cells/search_fields/input_search.html +16 -0
  59. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/incident_detail.html +12 -12
  60. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/incident_list.html +2 -2
  61. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/notificationprofile/base.html +1 -1
  62. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/notificationprofile/notificationprofile_form.html +1 -1
  63. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/notificationprofile/notificationprofile_list.html +2 -2
  64. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/styleguide.html +27 -0
  65. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/timeslot/base.html +1 -1
  66. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/timeslot/timeslot_list.html +2 -4
  67. argus_server-2.5.0/src/argus/htmx/templates/htmx/user/_preference_choice_nopreview.html +1 -0
  68. argus_server-2.5.0/src/argus/htmx/templates/htmx/user/_preference_choice_preview_datetime.html +2 -0
  69. argus_server-2.5.0/src/argus/htmx/templates/htmx/user/_preference_choice_preview_theme.html +13 -0
  70. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/user/_user_menu.html +14 -1
  71. argus_server-2.5.0/src/argus/htmx/templates/htmx/user/preference_form/_base_form.html +19 -0
  72. argus_server-2.5.0/src/argus/htmx/templates/htmx/user/preference_form/_incident_table_form.html +10 -0
  73. argus_server-2.5.0/src/argus/htmx/templates/htmx/user/preference_form/_preference_form_script.html +26 -0
  74. argus_server-2.5.0/src/argus/htmx/templates/htmx/user/preference_form/_theme_and_format_form.html +10 -0
  75. argus_server-2.5.0/src/argus/htmx/templates/htmx/user/preferences_list.html +12 -0
  76. argus_server-2.5.0/src/argus/htmx/templates/htmx/user/radio_option.html +13 -0
  77. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx_base.html +3 -2
  78. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/registration/login.html +10 -0
  79. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templatetags/argus_htmx.py +22 -7
  80. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/user/preferences/forms.py +103 -12
  81. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/user/views.py +7 -0
  82. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/widgets.py +4 -0
  83. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/incident/factories.py +1 -1
  84. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/incident/models.py +18 -1
  85. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/incident/signals.py +5 -0
  86. argus_server-2.5.0/src/argus/plannedmaintenance/admin.py +102 -0
  87. argus_server-2.5.0/src/argus/plannedmaintenance/apps.py +6 -0
  88. argus_server-2.5.0/src/argus/plannedmaintenance/factories.py +22 -0
  89. argus_server-2.5.0/src/argus/plannedmaintenance/migrations/0001_initial.py +76 -0
  90. argus_server-2.5.0/src/argus/plannedmaintenance/models.py +85 -0
  91. argus_server-2.5.0/src/argus/plannedmaintenance/templates/plannedmaintenance/admin/planned_maintenance_change_form.html +8 -0
  92. argus_server-2.5.0/src/argus/plannedmaintenance/utils.py +52 -0
  93. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/site/settings/base.py +2 -0
  94. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/site/urls.py +2 -2
  95. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/site/views.py +24 -48
  96. argus_server-2.5.0/src/argus/version.py +1 -0
  97. {argus_server-2.3.0 → argus_server-2.5.0}/tests/auth/test_knox_views.py +3 -1
  98. {argus_server-2.3.0 → argus_server-2.5.0}/tests/dev/test_create_source.py +7 -0
  99. {argus_server-2.3.0 → argus_server-2.5.0}/tests/filter/test_filterwrapper.py +38 -0
  100. {argus_server-2.3.0 → argus_server-2.5.0}/tests/htmx/incident/test_filter.py +92 -3
  101. argus_server-2.5.0/tests/htmx/test_context_processors.py +12 -0
  102. argus_server-2.5.0/tests/plannedmaintenance/__init__.py +0 -0
  103. argus_server-2.5.0/tests/plannedmaintenance/test_models.py +117 -0
  104. argus_server-2.5.0/tests/plannedmaintenance/test_utils.py +115 -0
  105. argus_server-2.5.0/tests/site/__init__.py +0 -0
  106. argus_server-2.5.0/tests/site/test_views.py +66 -0
  107. argus_server-2.5.0/tests/util/__init__.py +0 -0
  108. {argus_server-2.3.0 → argus_server-2.5.0}/tox.ini +1 -1
  109. argus_server-2.3.0/docs/reference/img/ER_model.png +0 -0
  110. argus_server-2.3.0/src/argus/htmx/templates/htmx/destination/destination_list.html +0 -5
  111. argus_server-2.3.0/src/argus/htmx/templates/htmx/incident/_incident_table.html +0 -51
  112. argus_server-2.3.0/src/argus/htmx/templates/htmx/incident/cells/search_fields/input_search.html +0 -7
  113. argus_server-2.3.0/src/argus/htmx/templates/htmx/user/preferences_list.html +0 -14
  114. argus_server-2.3.0/src/argus/htmx/templates/htmx/user/radio_option.html +0 -10
  115. argus_server-2.3.0/src/argus/version.py +0 -1
  116. argus_server-2.3.0/tests/site/test_views.py +0 -10
  117. {argus_server-2.3.0 → argus_server-2.5.0}/.git-blame-ignore-revs +0 -0
  118. {argus_server-2.3.0 → argus_server-2.5.0}/.gitattributes +0 -0
  119. {argus_server-2.3.0 → argus_server-2.5.0}/.gitignore +0 -0
  120. {argus_server-2.3.0 → argus_server-2.5.0}/.mailmap +0 -0
  121. {argus_server-2.3.0 → argus_server-2.5.0}/.pre-commit-config.yaml +0 -0
  122. {argus_server-2.3.0 → argus_server-2.5.0}/.readthedocs.yaml +0 -0
  123. {argus_server-2.3.0 → argus_server-2.5.0}/.sonarcloud.properties +0 -0
  124. {argus_server-2.3.0 → argus_server-2.5.0}/CONTRIBUTING.rst +0 -0
  125. {argus_server-2.3.0 → argus_server-2.5.0}/CONTRIBUTORS.md +0 -0
  126. {argus_server-2.3.0 → argus_server-2.5.0}/Dockerfile +0 -0
  127. {argus_server-2.3.0 → argus_server-2.5.0}/LICENSE +0 -0
  128. {argus_server-2.3.0 → argus_server-2.5.0}/MAINTAINING.rst +0 -0
  129. {argus_server-2.3.0 → argus_server-2.5.0}/Makefile +0 -0
  130. {argus_server-2.3.0 → argus_server-2.5.0}/UPGRADING.md +0 -0
  131. {argus_server-2.3.0 → argus_server-2.5.0}/changelog.d/.gitkeep +0 -0
  132. {argus_server-2.3.0 → argus_server-2.5.0}/cmd.sh-template +0 -0
  133. {argus_server-2.3.0 → argus_server-2.5.0}/constraints.txt +0 -0
  134. {argus_server-2.3.0 → argus_server-2.5.0}/docker/Dockerfile +0 -0
  135. {argus_server-2.3.0 → argus_server-2.5.0}/docker/README.md +0 -0
  136. {argus_server-2.3.0 → argus_server-2.5.0}/docker/docker-entrypoint.sh +0 -0
  137. {argus_server-2.3.0 → argus_server-2.5.0}/docker/dockersettings.py +0 -0
  138. {argus_server-2.3.0 → argus_server-2.5.0}/docker-compose.yml +0 -0
  139. {argus_server-2.3.0 → argus_server-2.5.0}/docs/Makefile +0 -0
  140. {argus_server-2.3.0 → argus_server-2.5.0}/docs/_exts/djangodocs.py +0 -0
  141. {argus_server-2.3.0 → argus_server-2.5.0}/docs/_static/.gitkeep +0 -0
  142. {argus_server-2.3.0 → argus_server-2.5.0}/docs/_templates/.gitkeep +0 -0
  143. {argus_server-2.3.0 → argus_server-2.5.0}/docs/conf.py +0 -0
  144. {argus_server-2.3.0 → argus_server-2.5.0}/docs/customization/htmx-frontend.rst +0 -0
  145. {argus_server-2.3.0 → argus_server-2.5.0}/docs/customization.rst +0 -0
  146. {argus_server-2.3.0 → argus_server-2.5.0}/docs/development/howtos/add-more-preferences.rst +0 -0
  147. {argus_server-2.3.0 → argus_server-2.5.0}/docs/development/howtos/change-settings.rst +0 -0
  148. {argus_server-2.3.0 → argus_server-2.5.0}/docs/development/howtos/changelog-entry.rst +0 -0
  149. {argus_server-2.3.0 → argus_server-2.5.0}/docs/development/howtos/commit-messages.rst +0 -0
  150. {argus_server-2.3.0 → argus_server-2.5.0}/docs/development/howtos/customizing-filtering.rst +0 -0
  151. {argus_server-2.3.0 → argus_server-2.5.0}/docs/development/howtos/federated-logins.rst +0 -0
  152. {argus_server-2.3.0 → argus_server-2.5.0}/docs/development/howtos/howtos-for-git.rst +0 -0
  153. {argus_server-2.3.0 → argus_server-2.5.0}/docs/development/howtos/howtos-for-github.rst +0 -0
  154. {argus_server-2.3.0 → argus_server-2.5.0}/docs/development/howtos/htmx-frontend/column_for_specific_ack_group.rst +0 -0
  155. {argus_server-2.3.0 → argus_server-2.5.0}/docs/development/howtos/htmx-frontend/column_for_specific_tag.rst +0 -0
  156. {argus_server-2.3.0 → argus_server-2.5.0}/docs/development/howtos/htmx-frontend/custom-incident-actions.rst +0 -0
  157. {argus_server-2.3.0 → argus_server-2.5.0}/docs/development/howtos/htmx-frontend/customize-filtering.rst +0 -0
  158. {argus_server-2.3.0 → argus_server-2.5.0}/docs/development/howtos/htmx-frontend/dependencies.rst +0 -0
  159. {argus_server-2.3.0 → argus_server-2.5.0}/docs/development/howtos/htmx-frontend/font_awesome.rst +0 -0
  160. {argus_server-2.3.0 → argus_server-2.5.0}/docs/development/howtos/htmx-frontend/override_templates.rst +0 -0
  161. {argus_server-2.3.0 → argus_server-2.5.0}/docs/development/howtos/htmx-frontend.rst +0 -0
  162. {argus_server-2.3.0 → argus_server-2.5.0}/docs/development/howtos/notification-system-testing.rst +0 -0
  163. {argus_server-2.3.0 → argus_server-2.5.0}/docs/development/howtos/recover-from-migration-trouble.rst +0 -0
  164. {argus_server-2.3.0 → argus_server-2.5.0}/docs/development/howtos/sonarqube.rst +0 -0
  165. {argus_server-2.3.0 → argus_server-2.5.0}/docs/development/howtos/toggle-django-debug-toolbar.rst +0 -0
  166. {argus_server-2.3.0 → argus_server-2.5.0}/docs/development/howtos/update-contributors.rst +0 -0
  167. {argus_server-2.3.0 → argus_server-2.5.0}/docs/development/howtos.rst +0 -0
  168. {argus_server-2.3.0 → argus_server-2.5.0}/docs/development/makefile-rules.rst +0 -0
  169. {argus_server-2.3.0 → argus_server-2.5.0}/docs/development/management-commands.rst +0 -0
  170. {argus_server-2.3.0 → argus_server-2.5.0}/docs/development/notes.rst +0 -0
  171. {argus_server-2.3.0 → argus_server-2.5.0}/docs/development/styleguide.rst +0 -0
  172. {argus_server-2.3.0 → argus_server-2.5.0}/docs/development/troubleshooting.rst +0 -0
  173. {argus_server-2.3.0 → argus_server-2.5.0}/docs/development.rst +0 -0
  174. {argus_server-2.3.0 → argus_server-2.5.0}/docs/img/default_timeslot.png +0 -0
  175. {argus_server-2.3.0 → argus_server-2.5.0}/docs/img/destinations_view.png +0 -0
  176. {argus_server-2.3.0 → argus_server-2.5.0}/docs/img/example_timeslot.png +0 -0
  177. {argus_server-2.3.0 → argus_server-2.5.0}/docs/img/filter_selector.png +0 -0
  178. {argus_server-2.3.0 → argus_server-2.5.0}/docs/img/incident_details_view.png +0 -0
  179. {argus_server-2.3.0 → argus_server-2.5.0}/docs/img/incidents_filter.png +0 -0
  180. {argus_server-2.3.0 → argus_server-2.5.0}/docs/img/incidents_page.png +0 -0
  181. {argus_server-2.3.0 → argus_server-2.5.0}/docs/img/new_notification_profile.png +0 -0
  182. {argus_server-2.3.0 → argus_server-2.5.0}/docs/img/notification_profiles.png +0 -0
  183. {argus_server-2.3.0 → argus_server-2.5.0}/docs/img/synced_destination_delete_error.png +0 -0
  184. {argus_server-2.3.0 → argus_server-2.5.0}/docs/img/timeslots_view.png +0 -0
  185. {argus_server-2.3.0 → argus_server-2.5.0}/docs/img/unsaved_recurrence.png +0 -0
  186. {argus_server-2.3.0 → argus_server-2.5.0}/docs/img/user_menu.png +0 -0
  187. {argus_server-2.3.0 → argus_server-2.5.0}/docs/index.rst +0 -0
  188. {argus_server-2.3.0 → argus_server-2.5.0}/docs/integrations/_note.rst +0 -0
  189. {argus_server-2.3.0 → argus_server-2.5.0}/docs/integrations/glue-services/index.rst +0 -0
  190. {argus_server-2.3.0 → argus_server-2.5.0}/docs/integrations/glue-services/writing-glueservices.rst +0 -0
  191. {argus_server-2.3.0 → argus_server-2.5.0}/docs/integrations/index.rst +0 -0
  192. {argus_server-2.3.0 → argus_server-2.5.0}/docs/integrations/notifications/email-plugin.rst +0 -0
  193. {argus_server-2.3.0 → argus_server-2.5.0}/docs/integrations/notifications/index.rst +0 -0
  194. {argus_server-2.3.0 → argus_server-2.5.0}/docs/integrations/notifications/sms-plugin.rst +0 -0
  195. {argus_server-2.3.0 → argus_server-2.5.0}/docs/integrations/ticket-systems/index.rst +0 -0
  196. {argus_server-2.3.0 → argus_server-2.5.0}/docs/integrations/ticket-systems/writing-ticket-system-plugins.rst +0 -0
  197. {argus_server-2.3.0 → argus_server-2.5.0}/docs/make.bat +0 -0
  198. {argus_server-2.3.0 → argus_server-2.5.0}/docs/reference/admin.rst +0 -0
  199. {argus_server-2.3.0 → argus_server-2.5.0}/docs/reference/api.rst +0 -0
  200. {argus_server-2.3.0 → argus_server-2.5.0}/docs/reference/authentication.rst +0 -0
  201. {argus_server-2.3.0 → argus_server-2.5.0}/docs/reference/glossary.rst +0 -0
  202. {argus_server-2.3.0 → argus_server-2.5.0}/docs/reference/site-specific-settings.rst +0 -0
  203. {argus_server-2.3.0 → argus_server-2.5.0}/docs/reference.rst +0 -0
  204. {argus_server-2.3.0 → argus_server-2.5.0}/docs/user-manual.rst +0 -0
  205. {argus_server-2.3.0 → argus_server-2.5.0}/pyproject.toml +0 -0
  206. {argus_server-2.3.0 → argus_server-2.5.0}/requirements/dev.txt +0 -0
  207. {argus_server-2.3.0 → argus_server-2.5.0}/requirements/django52.txt +0 -0
  208. {argus_server-2.3.0 → argus_server-2.5.0}/requirements/please-pip-sync.txt +0 -0
  209. {argus_server-2.3.0 → argus_server-2.5.0}/requirements/test.txt +0 -0
  210. {argus_server-2.3.0 → argus_server-2.5.0}/requirements-django52.txt +0 -0
  211. {argus_server-2.3.0 → argus_server-2.5.0}/requirements.txt +0 -0
  212. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/__init__.py +0 -0
  213. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/auth/__init__.py +0 -0
  214. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/auth/admin.py +0 -0
  215. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/auth/apps.py +0 -0
  216. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/auth/authentication.py +0 -0
  217. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/auth/context_processors.py +0 -0
  218. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/auth/drftoken/__init__.py +0 -0
  219. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/auth/drftoken/serializers.py +0 -0
  220. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/auth/drftoken/urls.py +0 -0
  221. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/auth/drftoken/views.py +0 -0
  222. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/auth/knox/__init__.py +0 -0
  223. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/auth/knox/serializers.py +0 -0
  224. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/auth/knox/urls.py +0 -0
  225. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/auth/knox/views.py +0 -0
  226. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/auth/management/__init__.py +0 -0
  227. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/auth/management/commands/__init__.py +0 -0
  228. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/auth/management/commands/changeuser.py +0 -0
  229. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/auth/management/commands/createuser.py +0 -0
  230. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/auth/management/commands/grantsuperuser.py +0 -0
  231. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/auth/management/commands/revokesuperuser.py +0 -0
  232. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/auth/management/commands/setpassword.py +0 -0
  233. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/auth/migrations/0001_initial.py +0 -0
  234. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/auth/migrations/0002_alter_user_first_name.py +0 -0
  235. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/auth/migrations/0002_squashed_auth_20250512_add_preferences_model.py +0 -0
  236. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/auth/migrations/0003_delete_phonenumber.py +0 -0
  237. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/auth/migrations/0004_add_preferences_model.py +0 -0
  238. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/auth/migrations/__init__.py +0 -0
  239. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/auth/models.py +0 -0
  240. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/auth/serializers.py +0 -0
  241. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/auth/urls.py +0 -0
  242. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/auth/utils.py +0 -0
  243. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/auth/views.py +0 -0
  244. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/base/__init__.py +0 -0
  245. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/base/apps.py +0 -0
  246. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/base/static/favicon.svg +0 -0
  247. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/base/templates/base.html +0 -0
  248. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/base/templates/index.html +0 -0
  249. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/compat.py +0 -0
  250. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/dev/__init__.py +0 -0
  251. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/dev/apps.py +0 -0
  252. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/dev/management/__init__.py +0 -0
  253. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/dev/management/commands/__init__.py +0 -0
  254. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/dev/management/commands/bulk_incidents.py +0 -0
  255. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/dev/management/commands/check_token_expiry.py +0 -0
  256. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/dev/management/commands/close_incident.py +0 -0
  257. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/dev/management/commands/gen_secret_key.py +0 -0
  258. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/dev/management/commands/initial_setup.py +0 -0
  259. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/dev/management/commands/list_filters.py +0 -0
  260. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/dev/management/commands/stresstest.py +0 -0
  261. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/dev/management/commands/toggle_profile_activation.py +0 -0
  262. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/dev/utils.py +0 -0
  263. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/drf/__init__.py +0 -0
  264. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/drf/permissions.py +0 -0
  265. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/filter/__init__.py +0 -0
  266. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/filter/apps.py +0 -0
  267. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/filter/checks.py +0 -0
  268. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/filter/default.py +0 -0
  269. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/filter/factories.py +0 -0
  270. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/filter/filters.py +0 -0
  271. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/filter/primitive_serializers.py +0 -0
  272. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/filter/queryset_filters.py +0 -0
  273. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/filter/serializers.py +0 -0
  274. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/filter/swappable/__init__.py +0 -0
  275. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/filter/validators.py +0 -0
  276. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/__init__.py +0 -0
  277. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/appconfig.py +0 -0
  278. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/apps.py +0 -0
  279. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/auth/__init__.py +0 -0
  280. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/auth/views.py +0 -0
  281. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/checks.py +0 -0
  282. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/constants.py +0 -0
  283. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/dateformat/__init__.py +0 -0
  284. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/dateformat/constants.py +0 -0
  285. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/destination/__init__.py +0 -0
  286. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/destination/forms.py +0 -0
  287. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/destination/urls.py +0 -0
  288. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/destination/views.py +0 -0
  289. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/forms.py +0 -0
  290. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/htmx_urls.py +0 -0
  291. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/incident/__init__.py +0 -0
  292. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/incident/constants.py +0 -0
  293. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/incident/forms/__init__.py +0 -0
  294. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/incident/forms/base.py +0 -0
  295. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/incident/forms/incident_actions.py +0 -0
  296. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/incident/forms/incident_filters.py +0 -0
  297. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/incident/utils.py +0 -0
  298. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/management/__init__.py +0 -0
  299. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/management/commands/__init__.py +0 -0
  300. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/management/commands/tailwind_config.py +0 -0
  301. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/middleware.py +0 -0
  302. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/migrations/0001_initial.py +0 -0
  303. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/migrations/__init__.py +0 -0
  304. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/modals.py +0 -0
  305. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/models.py +0 -0
  306. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/notificationprofile/__init__.py +0 -0
  307. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/notificationprofile/urls.py +0 -0
  308. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/notificationprofile/views.py +0 -0
  309. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/request.py +0 -0
  310. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/root_urls.py +0 -0
  311. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/settings.py +0 -0
  312. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/static/htmx-2.0.2.min.js +0 -0
  313. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/static/hyperscript-0.9.13.min.js +0 -0
  314. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/static/logo_white.svg +0 -0
  315. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/tailwindtheme/README.md +0 -0
  316. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/tailwindtheme/__init__.py +0 -0
  317. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/tailwindtheme/config.py +0 -0
  318. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/tailwindtheme/get_tailwind.py +0 -0
  319. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/tailwindtheme/snippets/10-tailwind.css +0 -0
  320. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/tailwindtheme/snippets/15-alert-message.css +0 -0
  321. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/tailwindtheme/tailwind.config.js +0 -0
  322. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/tailwindtheme/utils.py +0 -0
  323. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/django/forms/errors/dict/ul.html +0 -0
  324. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/django/forms/errors/list/ul.html +0 -0
  325. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/django/forms/field.html +0 -0
  326. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/django/forms/label.html +0 -0
  327. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/django/forms/widgets/attrs.html +0 -0
  328. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/django/forms/widgets/checkbox.html +0 -0
  329. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/django/forms/widgets/checkbox_option.html +0 -0
  330. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/django/forms/widgets/classless_attrs.html +0 -0
  331. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/django/forms/widgets/date.html +0 -0
  332. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/django/forms/widgets/datetime.html +0 -0
  333. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/django/forms/widgets/input.html +0 -0
  334. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/django/forms/widgets/radio_option.html +0 -0
  335. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/django/forms/widgets/range.html +0 -0
  336. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/django/forms/widgets/select.html +0 -0
  337. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/django/forms/widgets/time.html +0 -0
  338. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/_base_confirm_dialog.html +0 -0
  339. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/_base_form_modal.html +0 -0
  340. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/_base_form_modal_button.html +0 -0
  341. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/_base_form_modal_experimental.html +0 -0
  342. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/base.html +0 -0
  343. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/components/_page_title.html +0 -0
  344. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/components/incident_list_refresh_info_select.html +0 -0
  345. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/destination/_content.html +0 -0
  346. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/destination/_delete_form.html +0 -0
  347. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/destination/_edit_form.html +0 -0
  348. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/destination/_form_list.html +0 -0
  349. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/forms/badge_dropdown_select_multiple.html +0 -0
  350. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/forms/checkbox_select_multiple.html +0 -0
  351. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/forms/dropdown_select_multiple.html +0 -0
  352. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/forms/input_field.html +0 -0
  353. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/_base.html +0 -0
  354. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/_base_incident_update_modal.html +0 -0
  355. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/_delete_filter_confirm_dialog.html +0 -0
  356. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/_existing_filters.html +0 -0
  357. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/_filter_controls.html +0 -0
  358. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/_filter_create_modal.html +0 -0
  359. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/_filter_delete_dropdown.html +0 -0
  360. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/_filter_select.html +0 -0
  361. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/_filter_update_dropdown.html +0 -0
  362. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/_incident_acknowledge_modal.html +0 -0
  363. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/_incident_close_modal.html +0 -0
  364. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/_incident_filterbox.html +0 -0
  365. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/_incident_list_menubar.html +0 -0
  366. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/_incident_list_refresh_info.html +0 -0
  367. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/_incident_list_update_menu.html +0 -0
  368. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/_incident_reopen_modal.html +0 -0
  369. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/_incident_table_cell_wrapper_default.html +0 -0
  370. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/_incident_table_cell_wrapper_link_to_details.html +0 -0
  371. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/_incident_table_paginator.html +0 -0
  372. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/_incident_table_paginator_pageitem.html +0 -0
  373. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/_incident_table_row.html +0 -0
  374. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/_incident_table_rows.html +0 -0
  375. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/_incident_ticket_autocreate_modal.html +0 -0
  376. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/_incident_ticket_edit_modal.html +0 -0
  377. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/_incident_ticket_manual_create_modal.html +0 -0
  378. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/_update_filter_confirm_dialog.html +0 -0
  379. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_ack.html +0 -0
  380. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_actions.html +0 -0
  381. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_checkbox.html +0 -0
  382. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_color_status.html +0 -0
  383. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_combined_status.html +0 -0
  384. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_description.html +0 -0
  385. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_filterable_column_header.html +0 -0
  386. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_level.html +0 -0
  387. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_list_select_all_checkbox_header.html +0 -0
  388. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_pk.html +0 -0
  389. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_source.html +0 -0
  390. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_start_time.html +0 -0
  391. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_start_time_header.html +0 -0
  392. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_status.html +0 -0
  393. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_tag.html +0 -0
  394. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_ticket.html +0 -0
  395. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/filter_list.html +0 -0
  396. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/responses/_incident_list_refresh.html +0 -0
  397. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/incident/responses/empty_list_item.html +0 -0
  398. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/notificationprofile/_notificationprofile_form.html +0 -0
  399. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/notificationprofile/_notificationprofile_form_div.html +0 -0
  400. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/notificationprofile/notificationprofile_confirm_delete.html +0 -0
  401. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/timeslot/_delete_timeslot_confirm_dialog.html +0 -0
  402. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/timeslot/_timeslot_detail.html +0 -0
  403. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/timeslot/_timeslot_form.html +0 -0
  404. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/timeslot/checkbox_option.html +0 -0
  405. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/timeslot/timerecurrence_div.html +0 -0
  406. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/timeslot/timeslot_confirm_delete.html +0 -0
  407. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/timeslot/timeslot_form.html +0 -0
  408. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/user/_current_theme.html +0 -0
  409. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/user/_dateformat_dropdown.html +0 -0
  410. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/user/_incidents_table_columns_dropdown.html +0 -0
  411. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/user/_incidents_table_layout_dropdown.html +0 -0
  412. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/user/_page_size_dropdown.html +0 -0
  413. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/user/_theme_dropdown.html +0 -0
  414. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/user/_update_interval_dropdown.html +0 -0
  415. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/user/_user_menu_logout.html +0 -0
  416. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/user/_user_menu_notification_config.html +0 -0
  417. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/htmx/user/preference_field_form.html +0 -0
  418. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/messages/_notification_message.html +0 -0
  419. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/messages/_notification_messages.html +0 -0
  420. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/messages/_notification_messages_htmx_append.html +0 -0
  421. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/tailwind/styles.css +0 -0
  422. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/tailwind/tailwind.config.js +0 -0
  423. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templates/tailwind_whitelist.html +0 -0
  424. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/templatetags/__init__.py +0 -0
  425. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/themes/__init__.py +0 -0
  426. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/themes/utils.py +0 -0
  427. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/timeslot/__init__.py +0 -0
  428. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/timeslot/urls.py +0 -0
  429. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/timeslot/views.py +0 -0
  430. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/urls.py +0 -0
  431. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/user/__init__.py +0 -0
  432. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/user/factories.py +0 -0
  433. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/user/preferences/__init__.py +0 -0
  434. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/user/preferences/models.py +0 -0
  435. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/user/preferences/utils.py +0 -0
  436. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/user/urls.py +0 -0
  437. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/utils.py +0 -0
  438. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/htmx/views.py +0 -0
  439. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/incident/__init__.py +0 -0
  440. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/incident/admin.py +0 -0
  441. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/incident/apps.py +0 -0
  442. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/incident/constants.py +0 -0
  443. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/incident/fields.py +0 -0
  444. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/incident/forms.py +0 -0
  445. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/incident/migrations/0001_initial.py +0 -0
  446. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/incident/migrations/0001_squashed_incident_20250514.py +0 -0
  447. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/incident/migrations/0002_empty_source_incident_id.py +0 -0
  448. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/incident/migrations/0003_incident_level.py +0 -0
  449. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/incident/migrations/0004_add_ChangeEvent_proxy.py +0 -0
  450. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/incident/migrations/0005_alter_event_type.py +0 -0
  451. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/incident/migrations/0006_incident_search_text.py +0 -0
  452. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/incident/migrations/0007_alter_event_type.py +0 -0
  453. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/incident/migrations/0008_incident_metadata.py +0 -0
  454. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/incident/migrations/0009_use_bigautofield_on_quickly_growing_tables.py +0 -0
  455. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/incident/migrations/__init__.py +0 -0
  456. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/incident/serializers.py +0 -0
  457. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/incident/templates/incident/admin/fake_incident_add_form.html +0 -0
  458. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/incident/templates/incident/admin/incident_change_list.html +0 -0
  459. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/incident/templates/incident/admin/widgets/split_datetime_infinity.html +0 -0
  460. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/incident/templates/incident/ticket/default_ticket_body.html +0 -0
  461. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/incident/ticket/__init__.py +0 -0
  462. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/incident/ticket/base.py +0 -0
  463. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/incident/ticket/dummy.py +0 -0
  464. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/incident/ticket/utils.py +0 -0
  465. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/incident/urls.py +0 -0
  466. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/incident/validators.py +0 -0
  467. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/incident/views.py +0 -0
  468. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/incident/widgets.py +0 -0
  469. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/notificationprofile/__init__.py +0 -0
  470. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/notificationprofile/admin.py +0 -0
  471. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/notificationprofile/apps.py +0 -0
  472. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/notificationprofile/checks.py +0 -0
  473. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/notificationprofile/factories.py +0 -0
  474. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/notificationprofile/media/__init__.py +0 -0
  475. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/notificationprofile/media/base.py +0 -0
  476. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/notificationprofile/media/email.py +0 -0
  477. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/notificationprofile/media/sms_as_email.py +0 -0
  478. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/notificationprofile/migrations/0001_squashed_0015_remove_days_alter_days_array.py +0 -0
  479. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/notificationprofile/migrations/0001_squashed_notificationprofile_20250512.py +0 -0
  480. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/notificationprofile/migrations/0016_noop.py +0 -0
  481. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/notificationprofile/migrations/0017_change_event_type_to_event_types.py +0 -0
  482. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/notificationprofile/migrations/0018_remove_closed_and_unacked_from_filterblob.py +0 -0
  483. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/notificationprofile/migrations/__init__.py +0 -0
  484. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/notificationprofile/models.py +0 -0
  485. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/notificationprofile/serializers.py +0 -0
  486. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/notificationprofile/signals.py +0 -0
  487. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/notificationprofile/templates/notificationprofile/email.html +0 -0
  488. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/notificationprofile/templates/notificationprofile/email.txt +0 -0
  489. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/notificationprofile/templates/schemawrapper.html +0 -0
  490. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/notificationprofile/urls.py +0 -0
  491. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/notificationprofile/views.py +0 -0
  492. {argus_server-2.3.0/src/argus/site → argus_server-2.5.0/src/argus/plannedmaintenance}/__init__.py +0 -0
  493. {argus_server-2.3.0/src/argus/util → argus_server-2.5.0/src/argus/plannedmaintenance/migrations}/__init__.py +0 -0
  494. {argus_server-2.3.0/tests → argus_server-2.5.0/src/argus/site}/__init__.py +0 -0
  495. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/site/api_v2_urls.py +0 -0
  496. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/site/logging.py +0 -0
  497. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/site/serializers.py +0 -0
  498. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/site/settings/__init__.py +0 -0
  499. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/site/settings/_serializers.py +0 -0
  500. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/site/settings/backend.py +0 -0
  501. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/site/settings/dev.py +0 -0
  502. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/site/settings/dockerdev.py +0 -0
  503. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/site/settings/prod.py +0 -0
  504. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/site/settings/test_CI.py +0 -0
  505. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/site/utils.py +0 -0
  506. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/site/wsgi.py +0 -0
  507. {argus_server-2.3.0/tests/auth/management_commands → argus_server-2.5.0/src/argus/util}/__init__.py +0 -0
  508. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/util/admin_utils.py +0 -0
  509. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/util/datetime_utils.py +0 -0
  510. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/util/testing.py +0 -0
  511. {argus_server-2.3.0 → argus_server-2.5.0}/src/argus/util/utils.py +0 -0
  512. {argus_server-2.3.0/tests/dev → argus_server-2.5.0/tests}/__init__.py +0 -0
  513. {argus_server-2.3.0 → argus_server-2.5.0}/tests/auth/__init__.py +0 -0
  514. {argus_server-2.3.0/tests/filter → argus_server-2.5.0/tests/auth/management_commands}/__init__.py +0 -0
  515. {argus_server-2.3.0 → argus_server-2.5.0}/tests/auth/management_commands/test_changeuser.py +0 -0
  516. {argus_server-2.3.0 → argus_server-2.5.0}/tests/auth/management_commands/test_createuser.py +0 -0
  517. {argus_server-2.3.0 → argus_server-2.5.0}/tests/auth/models.py +0 -0
  518. {argus_server-2.3.0 → argus_server-2.5.0}/tests/auth/test_auth.py +0 -0
  519. {argus_server-2.3.0 → argus_server-2.5.0}/tests/auth/test_models.py +0 -0
  520. {argus_server-2.3.0 → argus_server-2.5.0}/tests/auth/test_utils.py +0 -0
  521. {argus_server-2.3.0 → argus_server-2.5.0}/tests/auth/test_views.py +0 -0
  522. {argus_server-2.3.0/tests/htmx → argus_server-2.5.0/tests/dev}/__init__.py +0 -0
  523. {argus_server-2.3.0 → argus_server-2.5.0}/tests/dev/test_bulk_incidents.py +0 -0
  524. {argus_server-2.3.0 → argus_server-2.5.0}/tests/dev/test_check_token_expiry.py +0 -0
  525. {argus_server-2.3.0 → argus_server-2.5.0}/tests/dev/test_close_incident.py +0 -0
  526. {argus_server-2.3.0 → argus_server-2.5.0}/tests/dev/test_create_fake_incident.py +0 -0
  527. {argus_server-2.3.0 → argus_server-2.5.0}/tests/dev/test_gen_secret_key.py +0 -0
  528. {argus_server-2.3.0 → argus_server-2.5.0}/tests/dev/test_initial_setup.py +0 -0
  529. {argus_server-2.3.0 → argus_server-2.5.0}/tests/dev/test_list_filters.py +0 -0
  530. {argus_server-2.3.0 → argus_server-2.5.0}/tests/dev/test_toggle_profile_activation.py +0 -0
  531. {argus_server-2.3.0 → argus_server-2.5.0}/tests/dev/test_utils.py +0 -0
  532. {argus_server-2.3.0/tests/htmx/incident → argus_server-2.5.0/tests/filter}/__init__.py +0 -0
  533. {argus_server-2.3.0 → argus_server-2.5.0}/tests/filter/dummyplugin.py +0 -0
  534. {argus_server-2.3.0 → argus_server-2.5.0}/tests/filter/test_filterplugin.py +0 -0
  535. {argus_server-2.3.0 → argus_server-2.5.0}/tests/filter/test_queryset_filters.py +0 -0
  536. {argus_server-2.3.0 → argus_server-2.5.0}/tests/helpers.py +0 -0
  537. {argus_server-2.3.0/tests/htmx/notificationprofile → argus_server-2.5.0/tests/htmx}/__init__.py +0 -0
  538. {argus_server-2.3.0/tests/incident/fixtures → argus_server-2.5.0/tests/htmx/incident}/__init__.py +0 -0
  539. {argus_server-2.3.0 → argus_server-2.5.0}/tests/htmx/incident/test_customization.py +0 -0
  540. {argus_server-2.3.0 → argus_server-2.5.0}/tests/htmx/incident/test_forms_incident_filters.py +0 -0
  541. {argus_server-2.3.0 → argus_server-2.5.0}/tests/htmx/incident/test_utils.py +0 -0
  542. {argus_server-2.3.0 → argus_server-2.5.0}/tests/htmx/incident/test_views.py +0 -0
  543. {argus_server-2.3.0/tests/incident/ticket_plugins → argus_server-2.5.0/tests/htmx/notificationprofile}/__init__.py +0 -0
  544. {argus_server-2.3.0 → argus_server-2.5.0}/tests/htmx/notificationprofile/test_forms.py +0 -0
  545. {argus_server-2.3.0 → argus_server-2.5.0}/tests/htmx/test_incident_columns_rendering.py +0 -0
  546. {argus_server-2.3.0 → argus_server-2.5.0}/tests/htmx/test_middleware.py +0 -0
  547. {argus_server-2.3.0 → argus_server-2.5.0}/tests/htmx/test_templatetags.py +0 -0
  548. {argus_server-2.3.0 → argus_server-2.5.0}/tests/htmx/test_utils.py +0 -0
  549. {argus_server-2.3.0 → argus_server-2.5.0}/tests/incident/__init__.py +0 -0
  550. {argus_server-2.3.0/tests/incident/unit → argus_server-2.5.0/tests/incident/fixtures}/__init__.py +0 -0
  551. {argus_server-2.3.0 → argus_server-2.5.0}/tests/incident/test_change_event.py +0 -0
  552. {argus_server-2.3.0 → argus_server-2.5.0}/tests/incident/test_create_fake_incident.py +0 -0
  553. {argus_server-2.3.0 → argus_server-2.5.0}/tests/incident/test_event.py +0 -0
  554. {argus_server-2.3.0 → argus_server-2.5.0}/tests/incident/test_filters.py +0 -0
  555. {argus_server-2.3.0 → argus_server-2.5.0}/tests/incident/test_incident.py +0 -0
  556. {argus_server-2.3.0 → argus_server-2.5.0}/tests/incident/test_incident_fields.py +0 -0
  557. {argus_server-2.3.0 → argus_server-2.5.0}/tests/incident/test_queryset.py +0 -0
  558. {argus_server-2.3.0 → argus_server-2.5.0}/tests/incident/test_serializers.py +0 -0
  559. {argus_server-2.3.0 → argus_server-2.5.0}/tests/incident/test_source_system.py +0 -0
  560. {argus_server-2.3.0 → argus_server-2.5.0}/tests/incident/test_source_system_type.py +0 -0
  561. {argus_server-2.3.0 → argus_server-2.5.0}/tests/incident/test_views.py +0 -0
  562. {argus_server-2.3.0/tests/notificationprofile/destinations → argus_server-2.5.0/tests/incident/ticket_plugins}/__init__.py +0 -0
  563. {argus_server-2.3.0 → argus_server-2.5.0}/tests/incident/ticket_plugins/test_base.py +0 -0
  564. {argus_server-2.3.0 → argus_server-2.5.0}/tests/incident/ticket_plugins/test_dummy.py +0 -0
  565. {argus_server-2.3.0 → argus_server-2.5.0}/tests/incident/ticket_plugins/test_utils.py +0 -0
  566. {argus_server-2.3.0/tests/notificationprofile/migrations → argus_server-2.5.0/tests/incident/unit}/__init__.py +0 -0
  567. {argus_server-2.3.0 → argus_server-2.5.0}/tests/incident/unit/test_incident_details_url.py +0 -0
  568. {argus_server-2.3.0 → argus_server-2.5.0}/tests/migration_example.py +0 -0
  569. {argus_server-2.3.0 → argus_server-2.5.0}/tests/notificationprofile/__init__.py +0 -0
  570. {argus_server-2.3.0/tests/site → argus_server-2.5.0/tests/notificationprofile/destinations}/__init__.py +0 -0
  571. {argus_server-2.3.0 → argus_server-2.5.0}/tests/notificationprofile/destinations/test_email.py +0 -0
  572. {argus_server-2.3.0 → argus_server-2.5.0}/tests/notificationprofile/destinations/test_sms.py +0 -0
  573. {argus_server-2.3.0/tests/util → argus_server-2.5.0/tests/notificationprofile/migrations}/__init__.py +0 -0
  574. {argus_server-2.3.0 → argus_server-2.5.0}/tests/notificationprofile/test_github236.py +0 -0
  575. {argus_server-2.3.0 → argus_server-2.5.0}/tests/notificationprofile/test_media.py +0 -0
  576. {argus_server-2.3.0 → argus_server-2.5.0}/tests/notificationprofile/test_models.py +0 -0
  577. {argus_server-2.3.0 → argus_server-2.5.0}/tests/notificationprofile/test_serializers.py +0 -0
  578. {argus_server-2.3.0 → argus_server-2.5.0}/tests/notificationprofile/test_views.py +0 -0
  579. {argus_server-2.3.0 → argus_server-2.5.0}/tests/site/test_misc.py +0 -0
  580. {argus_server-2.3.0 → argus_server-2.5.0}/tests/site/test_settings_helpers.py +0 -0
  581. {argus_server-2.3.0 → argus_server-2.5.0}/tests/site/test_settings_validators.py +0 -0
  582. {argus_server-2.3.0 → argus_server-2.5.0}/tests/util/test_utils.py +0 -0
@@ -4,10 +4,88 @@ read by developers.
4
4
 
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
- This project uses [*towncrier*](https://towncrier.readthedocs.io/) and the changes for the upcoming release can be found in <https://github.com/Uninett/Argus/tree/master/changelog.d/>.
7
+ This project uses [*towncrier*](https://towncrier.readthedocs.io/) and the changes for the upcoming release can be found in <https://github.com/Uninett/Argus/tree/main/changelog.d/>.
8
8
 
9
9
  <!-- towncrier release notes start -->
10
10
 
11
+ ## [2.5.0] - 2025-12-04
12
+
13
+ The big new thing this time around is a way to prevent notifications from
14
+ certain incidents by masking them via a planned maintenance filter stored in
15
+ a planned maintenance task. This task works just like a notification profile:
16
+ more filters add precision. The only way to set up a filter right now is via
17
+ the admin. Users with admin-access can click on the admin link, see the section
18
+ "ARGUS_PLANNEDMAINTENANCE".
19
+
20
+ We want some feedback on the feature before we add support
21
+ for setting up planned maintenance tasks via the API and the frontend.
22
+
23
+ Otherwise: work on increasing consistency in the frontend continues, and the
24
+ version number of argus should now always be available.
25
+
26
+ Customizers, please see the NOTES.md, the preferences page has more changes.
27
+
28
+ Remember to migrate if upgrading.
29
+
30
+ ### Added
31
+
32
+ - Add preview for theme and date format preferences
33
+ ([#1557](https://github.com/Uninett/Argus/issues/1557))
34
+ - Add model for planned maintenance tasks
35
+ ([#1586](https://github.com/Uninett/Argus/issues/1586))
36
+ - Added functionality to add/edit planned maintenance tasks to Django admin
37
+ ([#1587](https://github.com/Uninett/Argus/issues/1587))
38
+ - Filter out events covered by ongoing planned maintenance tasks from being
39
+ sent ([#1588](https://github.com/Uninett/Argus/issues/1588))
40
+ - Added Argus version number to user menu dropdown and login page
41
+ ([#1650](https://github.com/Uninett/Argus/issues/1650))
42
+
43
+ ### Changed
44
+
45
+ - Split user preferences into multiple sections
46
+ ([#1557](https://github.com/Uninett/Argus/issues/1557))
47
+ - Increase accessibility of cards by using borders instead of shadow
48
+ ([#1641](https://github.com/Uninett/Argus/issues/1641))
49
+
50
+
51
+ ## [2.4.0] - 2025-11-28
52
+
53
+ The most important feature this release is being able to filter on source
54
+ system type. If you have multiple source systems in a filter, all of them of
55
+ the same type, it might pay off to switch over to using the source system type
56
+ instead.
57
+
58
+ The rest is frontend improvements: The tags filter now has typeahead find. The
59
+ header and footer of the incident list never scroll off screen. The status
60
+ columns have variants with icons instead of text, and there's new columns
61
+ showing an incident's age (time since it happened).
62
+
63
+ See NOTES.md for further detail.
64
+
65
+ ### Added
66
+
67
+ - Added test error page ([#1024](https://github.com/Uninett/Argus/issues/1024))
68
+ - Add age columns to incident table
69
+ ([#1552](https://github.com/Uninett/Argus/issues/1552))
70
+ - Made it possible to filter on a source's type in the incident list, API, and
71
+ for sending notifications. Also added a new built-in column "source type" for
72
+ the incident list. When there are very many sources of the same type, the
73
+ filter and column become useful.
74
+ ([#1556](https://github.com/Uninett/Argus/issues/1556))
75
+ - Add status columns that use icons instead of text
76
+ ([#1635](https://github.com/Uninett/Argus/issues/1635))
77
+ - Made a system for rendering previews of preference choices.
78
+
79
+ ### Changed
80
+
81
+ - Change incident table header and footer to always be visible
82
+ ([#1548](https://github.com/Uninett/Argus/issues/1548))
83
+ - Add clear button to search column header
84
+ ([#1573](https://github.com/Uninett/Argus/issues/1573))
85
+ - Change tags input to use searchable multiselect
86
+ ([#1604](https://github.com/Uninett/Argus/issues/1604))
87
+
88
+
11
89
  ## [2.3.0] - 2025-11-20
12
90
 
13
91
  This release has numerous improvements to the frontend. The various
@@ -35,7 +113,6 @@ See NOTES.md for how to convert an existing column layout to the new format.
35
113
  ([#1553](https://github.com/Uninett/Argus/issues/1553))
36
114
  - Sort list of sources in filter dropdown alphabetically
37
115
  ([#1554](https://github.com/Uninett/Argus/issues/1554))
38
- - [#1576](https://github.com/Uninett/Argus/issues/1576)
39
116
  - Added and documented more searchable columns for the incident list:
40
117
  `search_description`, `select_levels`, `has_ticket_url`,
41
118
  `search_ticket_url`, and a way to mass-produce single-field forms to
@@ -3,6 +3,38 @@
3
3
  This file documents changes to Argus that are relevant for operations,
4
4
  customizers and end-users.
5
5
 
6
+ ## [2.5.0] - 2025-12-04
7
+
8
+ This release adds a new app, "argus.plannedmaintenance", which uses a new
9
+ database table, so remember to migrate.
10
+
11
+ The new table is to store planned maintenance tasks, which are used to exclude
12
+ some notifications from being sent. A notification is only sent *iff* an
13
+ incident and its events are not found by any filter during a currently ongoing
14
+ planned maintenance task.
15
+
16
+ Customizers: We have started work on adding previews to all the preferences;
17
+ first out is previews of themes and date formats. If you have added your own
18
+ preferences or otherwise customized the preferences page you need to take extra
19
+ care when upgrading.
20
+
21
+ ## [2.4.0] - 2025-11-28
22
+
23
+ The most important feature this release is being able to filter on source
24
+ system type. If you have multiple source systems in a filter, all of them of
25
+ the same type, it might pay off to switch over to using the source system type
26
+ instead.
27
+
28
+ The rest is frontend improvements: The tags filter now has typeahead find. The
29
+ header and footer of the incident list never scroll off screen. The status
30
+ columns have variants with icons instead of text, and there's new columns
31
+ showing an incident's age (time since it happened).
32
+
33
+ The new columns are called `age`, `start_time_and_age`, `status_icon`,
34
+ `ack_icon` and `combined_status_icons`. The last takes up the least horizontal
35
+ space in the table.
36
+
37
+
6
38
  ## [2.3.0] - 2025-11-20
7
39
 
8
40
  This release has numerous improvements to the frontend. The various
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: argus-server
3
- Version: 2.3.0
3
+ Version: 2.5.0
4
4
  Summary: Argus is an alert aggregator for monitoring systems
5
5
  Project-URL: Homepage, https://github.com/Uninett/Argus
6
6
  Author-email: Uninett Opensource <opensource@uninett.no>
@@ -59,7 +59,7 @@ Description-Content-Type: text/markdown
59
59
 
60
60
  # Argus
61
61
  [![test badge](https://github.com/Uninett/Argus/actions/workflows/python.yml/badge.svg)](https://github.com/Uninett/Argus/actions)
62
- [![codecov badge](https://codecov.io/gh/Uninett/Argus/branch/master/graph/badge.svg)](https://codecov.io/gh/Uninett/Argus)
62
+ [![codecov badge](https://codecov.io/gh/Uninett/Argus/branch/main/graph/badge.svg)](https://codecov.io/gh/Uninett/Argus)
63
63
  [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
64
64
  [![djLint](https://img.shields.io/badge/html%20style-djlint-blue.svg)](https://www.djlint.com)
65
65
  [![docs badge](https://readthedocs.org/projects/argus-server/badge/?version=latest&style=flat)](http://argus-server.rtfd.io/en/latest/)
@@ -320,12 +320,12 @@ Refer to the [tox.ini](tox.ini) file for further options.
320
320
 
321
321
  Do not ever remove these
322
322
 
323
- * master
323
+ * main
324
324
  * argus-demo
325
325
  * stable/SOMETHING
326
326
 
327
327
  The last branch-type is for backporting bugfixes and similar to older releases,
328
- bypassing master if necessary.
328
+ bypassing main if necessary.
329
329
 
330
330
 
331
331
  ## How to do maintenance
@@ -1,6 +1,6 @@
1
1
  # Argus
2
2
  [![test badge](https://github.com/Uninett/Argus/actions/workflows/python.yml/badge.svg)](https://github.com/Uninett/Argus/actions)
3
- [![codecov badge](https://codecov.io/gh/Uninett/Argus/branch/master/graph/badge.svg)](https://codecov.io/gh/Uninett/Argus)
3
+ [![codecov badge](https://codecov.io/gh/Uninett/Argus/branch/main/graph/badge.svg)](https://codecov.io/gh/Uninett/Argus)
4
4
  [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
5
5
  [![djLint](https://img.shields.io/badge/html%20style-djlint-blue.svg)](https://www.djlint.com)
6
6
  [![docs badge](https://readthedocs.org/projects/argus-server/badge/?version=latest&style=flat)](http://argus-server.rtfd.io/en/latest/)
@@ -261,12 +261,12 @@ Refer to the [tox.ini](tox.ini) file for further options.
261
261
 
262
262
  Do not ever remove these
263
263
 
264
- * master
264
+ * main
265
265
  * argus-demo
266
266
  * stable/SOMETHING
267
267
 
268
268
  The last branch-type is for backporting bugfixes and similar to older releases,
269
- bypassing master if necessary.
269
+ bypassing main if necessary.
270
270
 
271
271
 
272
272
  ## How to do maintenance
@@ -2,10 +2,10 @@ coverage:
2
2
  status:
3
3
  project:
4
4
  default:
5
- threshold: 90%
5
+ threshold: 1%
6
6
  patch:
7
7
  default:
8
- threshold: 90%
8
+ threshold: 1%
9
9
 
10
10
  ignore:
11
11
  - "manage.py"
@@ -67,6 +67,7 @@ server, such as:
67
67
  * Administration of Argus user accounts
68
68
  * Creating API authentication tokens for users
69
69
  * Defining new source systems to collect incidents from
70
+ * Creating and updating planned maintenance tasks
70
71
 
71
72
  Pick and choose
72
73
  ---------------
@@ -20,7 +20,7 @@ Test by making a .dot-file
20
20
 
21
21
  To test if everything is installed correctly, run::
22
22
 
23
- python manage.py graph_models argus_auth argus_incident argus_notificationprofile \
23
+ python manage.py graph_models argus_auth argus_incident argus_notificationprofile argus_plannedmaintenance \
24
24
  --group-models -X Permission,AbstractUser,AbstractBaseUser,PermissionsMixin
25
25
 
26
26
  This will dump a `.dot-file <https://graphviz.org/doc/info/lang.html>`_, the
@@ -42,7 +42,7 @@ We need to have one more dependency installed: one of ``pygraphviz`` or
42
42
 
43
43
  To generate the final PNG in the correct location, run::
44
44
 
45
- python manage.py graph_models argus_auth argus_incident argus_notificationprofile \
45
+ python manage.py graph_models argus_auth argus_incident argus_notificationprofile argus_plannedmaintenance \
46
46
  --group-models -X Permission,AbstractUser,AbstractBaseUser,PermissionsMixin \
47
47
  -o docs/reference/img/ER_model.png
48
48
 
@@ -52,7 +52,7 @@ Use ``graphviz`` directly on a .dot-file
52
52
  1. Make sure you have graphviz installed, how is OS/distro dependent
53
53
  2. Generate the dot-file with::
54
54
 
55
- python manage.py graph_models argus_auth argus_incident argus_notificationprofile \
55
+ python manage.py graph_models argus_auth argus_incident argus_notificationprofile argus_plannedmaintenance \
56
56
  --group-models -X Permission,AbstractUser,AbstractBaseUser,PermissionsMixin \
57
57
  -o ER_model.dot
58
58
  3. Generate the PNG with ``dot``::
@@ -43,11 +43,11 @@ not needed to do this yet.
43
43
  Checklist
44
44
  ---------
45
45
 
46
- #. Ensure you're on the correct branch to be released. Either ``master`` or
46
+ #. Ensure you're on the correct branch to be released. Either ``main`` or
47
47
  newest stable, which has a name of the form ``stable/1.5.x``. Release from
48
48
  the stable branch only under exceptional circumstances. For instance:
49
49
  there's a critical bugfix for production and there's a lot of new stuff on
50
- master that is not ready to go.
50
+ main that is not ready to go.
51
51
 
52
52
  #. Check that there are no files that have not been commited:
53
53
 
@@ -0,0 +1,14 @@
1
+ ===============================
2
+ How to trigger test error pages
3
+ ===============================
4
+
5
+ To test Django's error views in Argus, the following endpoint can be used:
6
+
7
+ ``/.error/?status-code=<error_code>``
8
+
9
+ Replace ``<error_code>`` with one of the supported HTML error codes: 400, 401, 403, 404, 410, or 500.
10
+
11
+ Notes
12
+ ~~~~~
13
+ - DEBUG must be set to False in the Django settings to view the standard error pages.
14
+ - Status codes ``404`` and ``500`` will trigger relevant exceptions, which in turn send messages to the user in the main view.
@@ -55,7 +55,7 @@ Prep the ORIGIN repo
55
55
 
56
56
  git fetch TARGET
57
57
 
58
- 9. Merge ORIGIN-clone's "main" into feceiving's "master"::
58
+ 9. Merge ORIGIN-clone's "main" into receiving's "master"::
59
59
 
60
60
  git merge --allow-unrelated-histories TARGET/master
61
61
 
@@ -25,6 +25,7 @@ INSTALLED_APPS = [
25
25
  "argus.filter",
26
26
  "argus.notificationprofile",
27
27
  "argus.dev",
28
+ "argus.plannedmaintenance",
28
29
  ]
29
30
 
30
31
  MEDIA_PLUGINS = []
@@ -4,7 +4,7 @@ Writing your own notification plugin
4
4
  ====================================
5
5
 
6
6
  When writing a new notification plugin the plugins for
7
- `SMS-as-Email <https://github.com/Uninett/Argus/blob/master/src/argus/notificationprofile/media/sms_as_email.py>`_
7
+ `SMS-as-Email <https://github.com/Uninett/Argus/blob/main/src/argus/notificationprofile/media/sms_as_email.py>`_
8
8
  and
9
9
  `Teams <https://github.com/Uninett/argus_notification_msteams/blob/main/src/argus_notification_msteams.py>`_
10
10
  can be used as guides.
@@ -607,6 +607,9 @@ Notification profile endpoints
607
607
  "sourceSystemIds": [
608
608
  2
609
609
  ],
610
+ "source_types": [
611
+ "argus"
612
+ ],
610
613
  "open": null,
611
614
  "acked": null,
612
615
  "stateful": null,
@@ -931,6 +934,9 @@ Notification profile endpoints
931
934
  "sourceSystemIds": [
932
935
  1
933
936
  ],
937
+ "source_types": [
938
+ "argus"
939
+ ],
934
940
  "tags": [
935
941
  "key1=value1"
936
942
  ],
@@ -955,6 +961,9 @@ Notification profile endpoints
955
961
  "sourceSystemIds": [
956
962
  1
957
963
  ],
964
+ "source_types": [
965
+ "argus"
966
+ ],
958
967
  "tags": [
959
968
  "key1=value1"
960
969
  ],
@@ -210,7 +210,13 @@ ack
210
210
  :From: ack
211
211
  :Name: ack
212
212
  :Description: Show whether the incident is acked or not.
213
- :Redundant with: combined_status
213
+ :Redundant with: combined_status, combined_status_icons
214
+
215
+ ack_icon
216
+ :From: ack
217
+ :Name: ack_icon
218
+ :Description: Show whether the incident is acked or not, using an icon instead of text.
219
+ :Redundant with: combined_status, combined_status_icons
214
220
 
215
221
  color_status
216
222
  :From: ack + status
@@ -222,6 +228,11 @@ combined_status
222
228
  :Name: combined_status
223
229
  :Description: Merges the "open" column and the "ack" column into one.
224
230
 
231
+ combined_status_icons
232
+ :From: ack + status
233
+ :Name: combined_status_icons
234
+ :Description: Merges the "open" column and the "ack" column into one, using icons instead of text.
235
+
225
236
  description
226
237
  :From: description
227
238
  :Name: description
@@ -259,7 +270,13 @@ status
259
270
  :From: open
260
271
  :Name: status
261
272
  :Description: Whether the incident is still ongoing or has been closed.
262
- :Redundant with: combined_status
273
+ :Redundant with: combined_status, combined_status_icons
274
+
275
+ status_icon
276
+ :From: open
277
+ :Name: status_icon
278
+ :Description: Whether the incident is still ongoing or has been closed, using an icon instead of text.
279
+ :Redundant with: combined_status, combined_status_icons
263
280
 
264
281
  row_select
265
282
  :From: depends on incident id
@@ -275,11 +292,25 @@ start_time
275
292
  :From: start_time
276
293
  :Name: start_time
277
294
  :Description: When the incident started, fixed width.
295
+ :Redundant with: narrow_start_time
278
296
 
279
297
  narrow_start_time
280
298
  :From: start_time
281
299
  :Name: start_time
282
300
  :Description: When the incident started, width depends on date format.
301
+ :Redundant with: start_time
302
+
303
+ start_time_and_age
304
+ :From: start_time + age
305
+ :Name: start_time_and_age
306
+ :Description: When the incident started, and how long it has been ongoing.
307
+ :Redundant with: start_time
308
+
309
+ age
310
+ :From: age
311
+ :Name: age
312
+ :Description: How long the incident has been ongoing.
313
+ :Redundant with: start_time_and_age
283
314
 
284
315
  ticket
285
316
  :From: ticket_url
@@ -310,6 +341,20 @@ If you wish to change the available themes, first make sure the support for
310
341
  Tailwind CSS and daisyUI has been installed, then see
311
342
  :ref:`customize-htmx-frontend`.
312
343
 
344
+ Usage of Javascript
345
+ ===================
346
+
347
+ The amount of javascript libraries is deliberately being kept to a minimum. The
348
+ ones in use are vendored to avoid a build step and stored locally to not depend
349
+ on DNS.
350
+
351
+ The following are in use:
352
+
353
+ * `htmx <https://htmx.org/>`_ for updating parts of a page smoothly
354
+ * `hyperscript <https://hyperscript.org/>`_ for adding client-side interactivity, used for cases where htmx alone is not sufficient
355
+ * `choices.js <https://choices-js.github.io/Choices/>`_ for typeahead search,
356
+ multi select
357
+
313
358
  Customization
314
359
  =============
315
360
 
@@ -89,6 +89,18 @@ Handling notifications
89
89
  Holds a ``DestinationConfig``'s type. The ``installed``-field is updated
90
90
  on startup to keep track of which ``notification plugin``\s are installed.
91
91
 
92
+ Handling maintenance work
93
+ =========================
94
+
95
+ .. glossary::
96
+
97
+ PlannedMaintenanceTask
98
+ Holds who created the task and when (not editable), the start and end time
99
+ of such a task, and a description of what this maintenance work entails and/or
100
+ why it is happening.
101
+
102
+ It also holds a collection of ``Filter``\s that describe what kind of events are
103
+ covered by that planned maintenance.
92
104
 
93
105
  ER diagram
94
106
  ==========
@@ -0,0 +1,43 @@
1
+ ===================
2
+ Planned maintenance
3
+ ===================
4
+
5
+ To interact with planned maintenance tasks visit the admin interface at:
6
+ ``/admin/argus_plannedmaintenance/plannedmaintenancetask/``.
7
+
8
+ A planned maintenance task consists of a start time and an end time (where the latter
9
+ is by default infinity). Those define the period during which planned work is happening
10
+ and when notifications for events, for example for affected devices, should not be
11
+ sent.
12
+
13
+ Filters are used to define exactly which kind of events notifications should be
14
+ suppressed for. As it is for notification profiles, if multiple filters are connected
15
+ to one planned maintenance task, then that tasks will only lead to a notification being
16
+ suppressed if all of the filters apply to that event.
17
+
18
+ .. warning:: When notifications are suppressed during a planned maintenance task and
19
+ that task ends, while the incident is still open, you will not receive a
20
+ notification.
21
+ It is your responsibility to check that everything is resolved when a planned
22
+ maintenance task is finished!
23
+
24
+ The planned maintenance task list
25
+ =================================
26
+
27
+ In the admin you can view a list of planned maintenance tasks, filter them and search
28
+ for specific ones.
29
+
30
+ You can also select multiple planned maintenance tasks and delete them or mark them as
31
+ finished. Marking a task as finished will set an open task's end time to the current
32
+ time. If you mark a task as finished that has not begun yet, then that task will be
33
+ deleted.
34
+
35
+ Adding/editing a planned maintenance task
36
+ =========================================
37
+
38
+ If you want to add a planned maintenance task click the
39
+ ``Add planned maintenance task`` button. If you want to see details for a specific
40
+ task or edit it, click the username in the column ``created by``.
41
+
42
+ You can mark an existing task as finished and see its history by clicking on the
43
+ buttons in the top right corner of the edit page.
@@ -16,7 +16,6 @@ class BaseUserFactory(factory.django.DjangoModelFactory):
16
16
 
17
17
  is_staff = False
18
18
  is_superuser = False
19
- password = factory.PostGenerationMethodCall("set_password", "defaultpassword")
20
19
 
21
20
 
22
21
  class PersonUserFactory(BaseUserFactory):
@@ -30,6 +29,7 @@ class PersonUserFactory(BaseUserFactory):
30
29
  lambda o: "%s.%s@%s" % (o.first_name.lower(), o.last_name.lower(), factory.Faker("safe_domain_name"))
31
30
  )
32
31
  username = email
32
+ password = factory.django.Password("very SECRET P455w0rD")
33
33
 
34
34
 
35
35
  class SourceUserFactory(BaseUserFactory):
@@ -40,6 +40,7 @@ class SourceUserFactory(BaseUserFactory):
40
40
  username = factory.Sequence(lambda n: "source_%d" % n)
41
41
  is_staff = False
42
42
  is_superuser = False
43
+ password = factory.django.Password(None)
43
44
 
44
45
 
45
46
  class AdminUserFactory(PersonUserFactory):
@@ -8,6 +8,7 @@ from django.contrib.auth import get_user_model
8
8
  from django.core.exceptions import ValidationError
9
9
  from django.core.management import CommandError, call_command
10
10
  from django.core.management.base import BaseCommand
11
+ from django.db.utils import IntegrityError
11
12
 
12
13
  from argus.dev.utils import get_json_from_file
13
14
  from argus.incident.constants import Level
@@ -125,5 +126,5 @@ class Command(BaseCommand):
125
126
 
126
127
  try:
127
128
  create_fake_incident(**incident)
128
- except (ValueError, ValidationError) as e:
129
+ except (IntegrityError, ValueError, ValidationError) as e:
129
130
  self.stderr.write(self.style.ERROR(str(e)))
@@ -1,6 +1,9 @@
1
1
  from django.core.management.base import BaseCommand
2
+ from django.db import transaction
2
3
 
4
+ from argus.auth.factories import SourceUserFactory
3
5
  from argus.incident.factories import SourceSystemFactory, SourceSystemTypeFactory
6
+ from argus.incident.models import SourceSystem
4
7
 
5
8
 
6
9
  class Command(BaseCommand):
@@ -15,5 +18,9 @@ class Command(BaseCommand):
15
18
  def handle(self, *args, **options):
16
19
  source = options["source"]
17
20
  source_type = options.get("source_type") or "argus"
18
- sst = SourceSystemTypeFactory(name=source_type.lower())
19
- SourceSystemFactory(name=source, type=sst)
21
+ if SourceSystem.objects.filter(name=source, type__name=source_type).exists():
22
+ return
23
+ with transaction.atomic():
24
+ user = SourceUserFactory(username=source)
25
+ sst = SourceSystemTypeFactory(name=source_type.lower())
26
+ SourceSystemFactory(user=user, name=source, type=sst)
@@ -32,6 +32,7 @@ class FilterKey(StrEnum):
32
32
  ACKED = "acked"
33
33
  STATEFUL = "stateful"
34
34
  SOURCE_SYSTEM_IDS = "sourceSystemIds"
35
+ SOURCE_SYSTEM_TYPES = "source_types"
35
36
  TAGS = "tags"
36
37
  EVENT_TYPES = "event_types"
37
38
  MAXLEVEL = "maxlevel"
@@ -39,7 +40,7 @@ class FilterKey(StrEnum):
39
40
 
40
41
  class FilterWrapper:
41
42
  TRINARY_FILTERS = (FilterKey.OPEN, FilterKey.ACKED, FilterKey.STATEFUL)
42
- LIST_FILTERS = (FilterKey.SOURCE_SYSTEM_IDS, FilterKey.TAGS, FilterKey.EVENT_TYPES)
43
+ LIST_FILTERS = (FilterKey.SOURCE_SYSTEM_IDS, FilterKey.SOURCE_SYSTEM_TYPES, FilterKey.TAGS, FilterKey.EVENT_TYPES)
43
44
  INT_FILTERS = (FilterKey.MAXLEVEL,)
44
45
  FILTER_KEYS = TRINARY_FILTERS + LIST_FILTERS + INT_FILTERS
45
46
 
@@ -71,6 +72,12 @@ class FilterWrapper:
71
72
  return None
72
73
  return incident.source.id in filter_
73
74
 
75
+ def _incident_fits_source_system_type(self, incident: Incident) -> TriState:
76
+ filter_, ignored = self._get_filter_value_and_ignored_status(FilterKey.SOURCE_SYSTEM_TYPES)
77
+ if ignored:
78
+ return None
79
+ return incident.source.type.name in filter_
80
+
74
81
  def _incident_fits_tags(self, incident: Incident) -> TriState:
75
82
  filter_, ignored = self._get_filter_value_and_ignored_status(FilterKey.TAGS)
76
83
  if ignored:
@@ -100,6 +107,7 @@ class FilterWrapper:
100
107
  return False # Filter is empty!
101
108
  checks = {}
102
109
  checks["source"] = self._incident_fits_source_system(incident)
110
+ checks["source_type"] = self._incident_fits_source_system_type(incident)
103
111
  checks["tags"] = self._incident_fits_tags(incident)
104
112
  checks["max_level"] = self._incident_fits_maxlevel(incident)
105
113
  for tristate in self.TRINARY_FILTERS:
@@ -16,6 +16,11 @@ class FilterBlobSerializer(serializers.Serializer):
16
16
  allow_empty=True,
17
17
  required=False,
18
18
  )
19
+ source_types = serializers.ListField(
20
+ child=serializers.CharField(),
21
+ allow_empty=True,
22
+ required=False,
23
+ )
19
24
  tags = serializers.ListField(
20
25
  child=serializers.CharField(min_length=3),
21
26
  allow_empty=True,
@@ -10,6 +10,7 @@ See django settings for ``TEMPLATES``.
10
10
  from django.conf import settings
11
11
 
12
12
  from . import defaults
13
+ from argus.site.views import get_version
13
14
 
14
15
 
15
16
  def static_paths(request):
@@ -17,8 +18,13 @@ def static_paths(request):
17
18
  "stylesheet_path": getattr(settings, "STYLESHEET_PATH", defaults.STYLESHEET_PATH),
18
19
  "htmx_path": getattr(settings, "HTMX_PATH", defaults.HTMX_PATH),
19
20
  "hyperscript_path": getattr(settings, "HYPERSCRIPT_PATH", defaults.HYPERSCRIPT_PATH),
21
+ "choices_path": getattr(settings, "CHOICES_PATH", defaults.CHOICES_PATH),
20
22
  }
21
23
 
22
24
 
23
25
  def banner_message(request):
24
26
  return {"banner_message": getattr(settings, "BANNER_MESSAGE", None)}
27
+
28
+
29
+ def metadata(request):
30
+ return {"version": get_version()}
@@ -67,6 +67,7 @@ TAILWIND_THEME_OVERRIDE = get_json_env("TAILWIND_THEME_OVERRIDE", DEFAULT_THEME_
67
67
  STYLESHEET_PATH = get_str_env("ARGUS_STYLESHEET_PATH", STYLESHEET_PATH_DEFAULT)
68
68
  HTMX_PATH = get_str_env("ARGUS_HTMX_PATH", HTMX_PATH_DEFAULT)
69
69
  HYPERSCRIPT_PATH = get_str_env("ARGUS_HYPERSCRIPT_PATH", HYPERSCRIPT_PATH_DEFAULT)
70
+ CHOICES_PATH = "choices-11.1.0.min.js"
70
71
 
71
72
  NOTIFICATION_TOAST_AUTOCLOSE_SECONDS = {
72
73
  "success": 10,