argus-server 2.1.0__tar.gz → 2.2.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 (507) hide show
  1. {argus_server-2.1.0 → argus_server-2.2.0}/CHANGELOG.md +63 -0
  2. argus_server-2.2.0/CONTRIBUTING.rst +56 -0
  3. argus_server-2.2.0/CONTRIBUTORS.md +36 -0
  4. {argus_server-2.1.0 → argus_server-2.2.0}/Dockerfile +1 -1
  5. {argus_server-2.1.0 → argus_server-2.2.0}/Makefile +6 -1
  6. {argus_server-2.1.0 → argus_server-2.2.0}/NOTES.md +28 -27
  7. {argus_server-2.1.0 → argus_server-2.2.0}/PKG-INFO +13 -6
  8. {argus_server-2.1.0 → argus_server-2.2.0}/README.md +9 -0
  9. {argus_server-2.1.0 → argus_server-2.2.0}/docker/Dockerfile +10 -3
  10. {argus_server-2.1.0 → argus_server-2.2.0}/docker/README.md +3 -4
  11. {argus_server-2.1.0 → argus_server-2.2.0}/docker/docker-entrypoint.sh +1 -2
  12. {argus_server-2.1.0 → argus_server-2.2.0}/docker-compose.yml +0 -7
  13. {argus_server-2.1.0 → argus_server-2.2.0}/docker-entrypoint.sh +1 -1
  14. argus_server-2.2.0/docs/development/howtos/change-settings.rst +82 -0
  15. argus_server-2.2.0/docs/development/howtos/howtos-for-git.rst +37 -0
  16. argus_server-2.2.0/docs/development/howtos/howtos-for-github.rst +26 -0
  17. argus_server-2.2.0/docs/development/howtos/update-contributors.rst +62 -0
  18. argus_server-2.2.0/docs/development/makefile-rules.rst +93 -0
  19. {argus_server-2.1.0 → argus_server-2.2.0}/docs/development.rst +1 -0
  20. argus_server-2.2.0/docs/img/default_timeslot.png +0 -0
  21. argus_server-2.2.0/docs/img/destinations_view.png +0 -0
  22. argus_server-2.2.0/docs/img/example_timeslot.png +0 -0
  23. argus_server-2.2.0/docs/img/filter_selector.png +0 -0
  24. argus_server-2.2.0/docs/img/incident_details_view.png +0 -0
  25. argus_server-2.2.0/docs/img/incidents_filter.png +0 -0
  26. argus_server-2.2.0/docs/img/incidents_page.png +0 -0
  27. argus_server-2.2.0/docs/img/new_notification_profile.png +0 -0
  28. argus_server-2.2.0/docs/img/notification_profiles.png +0 -0
  29. argus_server-2.2.0/docs/img/synced_destination_delete_error.png +0 -0
  30. argus_server-2.2.0/docs/img/timeslots_view.png +0 -0
  31. argus_server-2.2.0/docs/img/unsaved_recurrence.png +0 -0
  32. argus_server-2.2.0/docs/img/user_menu.png +0 -0
  33. {argus_server-2.1.0 → argus_server-2.2.0}/docs/integrations/glue-services/index.rst +44 -0
  34. {argus_server-2.1.0 → argus_server-2.2.0}/docs/reference/htmx-frontend.rst +26 -87
  35. {argus_server-2.1.0 → argus_server-2.2.0}/docs/user-manual.rst +354 -245
  36. {argus_server-2.1.0 → argus_server-2.2.0}/pyproject.toml +6 -7
  37. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/constants.py +2 -8
  38. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/incident/constants.py +13 -12
  39. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/incident/filter.py +10 -23
  40. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/incident/utils.py +8 -0
  41. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/incident/views.py +1 -1
  42. argus_server-2.2.0/src/argus/htmx/settings.py +14 -0
  43. argus_server-2.2.0/src/argus/htmx/tailwindtheme/config.py +33 -0
  44. argus_server-2.2.0/src/argus/htmx/tailwindtheme/get_tailwind.py +28 -0
  45. argus_server-2.2.0/src/argus/htmx/tailwindtheme/utils.py +42 -0
  46. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/_incident_list_refresh_info.html +6 -5
  47. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/user/_page_size_dropdown.html +3 -3
  48. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/user/_update_interval_dropdown.html +4 -4
  49. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/user/preferences/models.py +7 -7
  50. argus_server-2.2.0/src/argus/site/settings/backend.py +5 -0
  51. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/site/settings/base.py +15 -0
  52. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/site/settings/dev.py +1 -7
  53. argus_server-2.1.0/src/argus/site/settings/backend.py → argus_server-2.2.0/src/argus/site/settings/prod.py +11 -7
  54. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/site/settings/test_CI.py +2 -7
  55. argus_server-2.2.0/src/argus/version.py +1 -0
  56. argus_server-2.2.0/tests/util/__init__.py +0 -0
  57. {argus_server-2.1.0 → argus_server-2.2.0}/tox.ini +1 -1
  58. argus_server-2.1.0/CONTRIBUTORS.md +0 -10
  59. argus_server-2.1.0/docs/development/howtos/change-settings.rst +0 -46
  60. argus_server-2.1.0/src/argus/htmx/settings.py +0 -9
  61. argus_server-2.1.0/src/argus/site/settings/prod.py +0 -12
  62. argus_server-2.1.0/src/argus/version.py +0 -1
  63. {argus_server-2.1.0 → argus_server-2.2.0}/.git-blame-ignore-revs +0 -0
  64. {argus_server-2.1.0 → argus_server-2.2.0}/.gitattributes +0 -0
  65. {argus_server-2.1.0 → argus_server-2.2.0}/.gitignore +0 -0
  66. {argus_server-2.1.0 → argus_server-2.2.0}/.mailmap +0 -0
  67. {argus_server-2.1.0 → argus_server-2.2.0}/.pre-commit-config.yaml +0 -0
  68. {argus_server-2.1.0 → argus_server-2.2.0}/.readthedocs.yaml +0 -0
  69. {argus_server-2.1.0 → argus_server-2.2.0}/.sonarcloud.properties +0 -0
  70. {argus_server-2.1.0 → argus_server-2.2.0}/LICENSE +0 -0
  71. {argus_server-2.1.0 → argus_server-2.2.0}/MAINTAINING.rst +0 -0
  72. {argus_server-2.1.0 → argus_server-2.2.0}/UPGRADING.md +0 -0
  73. {argus_server-2.1.0 → argus_server-2.2.0}/changelog.d/.gitkeep +0 -0
  74. {argus_server-2.1.0 → argus_server-2.2.0}/cmd.sh-template +0 -0
  75. {argus_server-2.1.0 → argus_server-2.2.0}/codecov.yml +0 -0
  76. {argus_server-2.1.0 → argus_server-2.2.0}/constraints.txt +0 -0
  77. {argus_server-2.1.0 → argus_server-2.2.0}/docker/dockersettings.py +0 -0
  78. {argus_server-2.1.0 → argus_server-2.2.0}/docs/Makefile +0 -0
  79. {argus_server-2.1.0 → argus_server-2.2.0}/docs/_exts/djangodocs.py +0 -0
  80. {argus_server-2.1.0 → argus_server-2.2.0}/docs/_static/.gitkeep +0 -0
  81. {argus_server-2.1.0 → argus_server-2.2.0}/docs/_templates/.gitkeep +0 -0
  82. {argus_server-2.1.0 → argus_server-2.2.0}/docs/about-argus.rst +0 -0
  83. {argus_server-2.1.0 → argus_server-2.2.0}/docs/conf.py +0 -0
  84. {argus_server-2.1.0 → argus_server-2.2.0}/docs/customization/htmx-frontend.rst +0 -0
  85. {argus_server-2.1.0 → argus_server-2.2.0}/docs/customization.rst +0 -0
  86. {argus_server-2.1.0 → argus_server-2.2.0}/docs/development/howtos/add-more-preferences.rst +0 -0
  87. {argus_server-2.1.0 → argus_server-2.2.0}/docs/development/howtos/changelog-entry.rst +0 -0
  88. {argus_server-2.1.0 → argus_server-2.2.0}/docs/development/howtos/commit-messages.rst +0 -0
  89. {argus_server-2.1.0 → argus_server-2.2.0}/docs/development/howtos/customizing-filtering.rst +0 -0
  90. {argus_server-2.1.0 → argus_server-2.2.0}/docs/development/howtos/federated-logins.rst +0 -0
  91. {argus_server-2.1.0 → argus_server-2.2.0}/docs/development/howtos/htmx-frontend/column_for_specific_ack_group.rst +0 -0
  92. {argus_server-2.1.0 → argus_server-2.2.0}/docs/development/howtos/htmx-frontend/column_for_specific_tag.rst +0 -0
  93. {argus_server-2.1.0 → argus_server-2.2.0}/docs/development/howtos/htmx-frontend/custom-incident-actions.rst +0 -0
  94. {argus_server-2.1.0 → argus_server-2.2.0}/docs/development/howtos/htmx-frontend/customize-filtering.rst +0 -0
  95. {argus_server-2.1.0 → argus_server-2.2.0}/docs/development/howtos/htmx-frontend/dependencies.rst +0 -0
  96. {argus_server-2.1.0 → argus_server-2.2.0}/docs/development/howtos/htmx-frontend/font_awesome.rst +0 -0
  97. {argus_server-2.1.0 → argus_server-2.2.0}/docs/development/howtos/htmx-frontend/override_templates.rst +0 -0
  98. {argus_server-2.1.0 → argus_server-2.2.0}/docs/development/howtos/htmx-frontend.rst +0 -0
  99. {argus_server-2.1.0 → argus_server-2.2.0}/docs/development/howtos/notification-system-testing.rst +0 -0
  100. {argus_server-2.1.0 → argus_server-2.2.0}/docs/development/howtos/recover-from-migration-trouble.rst +0 -0
  101. {argus_server-2.1.0 → argus_server-2.2.0}/docs/development/howtos/regenerate-the-ER-diagram.rst +0 -0
  102. {argus_server-2.1.0 → argus_server-2.2.0}/docs/development/howtos/release-checklist.rst +0 -0
  103. {argus_server-2.1.0 → argus_server-2.2.0}/docs/development/howtos/toggle-django-debug-toolbar.rst +0 -0
  104. {argus_server-2.1.0 → argus_server-2.2.0}/docs/development/howtos/vendor-a-repo.rst +0 -0
  105. {argus_server-2.1.0 → argus_server-2.2.0}/docs/development/howtos.rst +0 -0
  106. {argus_server-2.1.0 → argus_server-2.2.0}/docs/development/management-commands.rst +0 -0
  107. {argus_server-2.1.0 → argus_server-2.2.0}/docs/development/notes.rst +0 -0
  108. {argus_server-2.1.0 → argus_server-2.2.0}/docs/development/troubleshooting.rst +0 -0
  109. {argus_server-2.1.0 → argus_server-2.2.0}/docs/django_settings.py +0 -0
  110. {argus_server-2.1.0 → argus_server-2.2.0}/docs/index.rst +0 -0
  111. {argus_server-2.1.0 → argus_server-2.2.0}/docs/integrations/_note.rst +0 -0
  112. {argus_server-2.1.0 → argus_server-2.2.0}/docs/integrations/glue-services/writing-glueservices.rst +0 -0
  113. {argus_server-2.1.0 → argus_server-2.2.0}/docs/integrations/index.rst +0 -0
  114. {argus_server-2.1.0 → argus_server-2.2.0}/docs/integrations/notifications/email-plugin.rst +0 -0
  115. {argus_server-2.1.0 → argus_server-2.2.0}/docs/integrations/notifications/index.rst +0 -0
  116. {argus_server-2.1.0 → argus_server-2.2.0}/docs/integrations/notifications/sms-plugin.rst +0 -0
  117. {argus_server-2.1.0 → argus_server-2.2.0}/docs/integrations/notifications/writing-notification-plugins.rst +0 -0
  118. {argus_server-2.1.0 → argus_server-2.2.0}/docs/integrations/ticket-systems/index.rst +0 -0
  119. {argus_server-2.1.0 → argus_server-2.2.0}/docs/integrations/ticket-systems/writing-ticket-system-plugins.rst +0 -0
  120. {argus_server-2.1.0 → argus_server-2.2.0}/docs/make.bat +0 -0
  121. {argus_server-2.1.0 → argus_server-2.2.0}/docs/reference/admin.rst +0 -0
  122. {argus_server-2.1.0 → argus_server-2.2.0}/docs/reference/api/v2.rst +0 -0
  123. {argus_server-2.1.0 → argus_server-2.2.0}/docs/reference/api.rst +0 -0
  124. {argus_server-2.1.0 → argus_server-2.2.0}/docs/reference/authentication.rst +0 -0
  125. {argus_server-2.1.0 → argus_server-2.2.0}/docs/reference/glossary.rst +0 -0
  126. {argus_server-2.1.0 → argus_server-2.2.0}/docs/reference/img/ER_model.png +0 -0
  127. {argus_server-2.1.0 → argus_server-2.2.0}/docs/reference/models.rst +0 -0
  128. {argus_server-2.1.0 → argus_server-2.2.0}/docs/reference/site-specific-settings.rst +0 -0
  129. {argus_server-2.1.0 → argus_server-2.2.0}/docs/reference.rst +0 -0
  130. {argus_server-2.1.0 → argus_server-2.2.0}/manage.py +0 -0
  131. {argus_server-2.1.0 → argus_server-2.2.0}/requirements/dev.txt +0 -0
  132. {argus_server-2.1.0 → argus_server-2.2.0}/requirements/django52.txt +0 -0
  133. {argus_server-2.1.0 → argus_server-2.2.0}/requirements/please-pip-sync.txt +0 -0
  134. {argus_server-2.1.0 → argus_server-2.2.0}/requirements/test.txt +0 -0
  135. {argus_server-2.1.0 → argus_server-2.2.0}/requirements-django52.txt +0 -0
  136. {argus_server-2.1.0 → argus_server-2.2.0}/requirements.txt +0 -0
  137. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/__init__.py +0 -0
  138. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/auth/__init__.py +0 -0
  139. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/auth/admin.py +0 -0
  140. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/auth/apps.py +0 -0
  141. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/auth/authentication.py +0 -0
  142. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/auth/context_processors.py +0 -0
  143. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/auth/drftoken/__init__.py +0 -0
  144. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/auth/drftoken/serializers.py +0 -0
  145. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/auth/drftoken/urls.py +0 -0
  146. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/auth/drftoken/views.py +0 -0
  147. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/auth/factories.py +0 -0
  148. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/auth/knox/__init__.py +0 -0
  149. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/auth/knox/serializers.py +0 -0
  150. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/auth/knox/urls.py +0 -0
  151. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/auth/knox/views.py +0 -0
  152. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/auth/management/__init__.py +0 -0
  153. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/auth/management/commands/__init__.py +0 -0
  154. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/auth/management/commands/changeuser.py +0 -0
  155. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/auth/management/commands/createuser.py +0 -0
  156. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/auth/management/commands/grantsuperuser.py +0 -0
  157. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/auth/management/commands/revokesuperuser.py +0 -0
  158. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/auth/management/commands/setpassword.py +0 -0
  159. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/auth/migrations/0001_initial.py +0 -0
  160. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/auth/migrations/0002_alter_user_first_name.py +0 -0
  161. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/auth/migrations/0002_squashed_auth_20250512_add_preferences_model.py +0 -0
  162. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/auth/migrations/0003_delete_phonenumber.py +0 -0
  163. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/auth/migrations/0004_add_preferences_model.py +0 -0
  164. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/auth/migrations/__init__.py +0 -0
  165. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/auth/models.py +0 -0
  166. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/auth/serializers.py +0 -0
  167. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/auth/urls.py +0 -0
  168. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/auth/utils.py +0 -0
  169. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/auth/views.py +0 -0
  170. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/base/__init__.py +0 -0
  171. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/base/apps.py +0 -0
  172. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/base/static/favicon.svg +0 -0
  173. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/base/templates/base.html +0 -0
  174. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/base/templates/index.html +0 -0
  175. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/compat.py +0 -0
  176. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/dev/__init__.py +0 -0
  177. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/dev/apps.py +0 -0
  178. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/dev/management/__init__.py +0 -0
  179. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/dev/management/commands/__init__.py +0 -0
  180. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/dev/management/commands/bulk_incidents.py +0 -0
  181. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/dev/management/commands/check_token_expiry.py +0 -0
  182. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/dev/management/commands/close_incident.py +0 -0
  183. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/dev/management/commands/create_fake_incident.py +0 -0
  184. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/dev/management/commands/create_source.py +0 -0
  185. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/dev/management/commands/gen_secret_key.py +0 -0
  186. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/dev/management/commands/initial_setup.py +0 -0
  187. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/dev/management/commands/list_filters.py +0 -0
  188. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/dev/management/commands/stresstest.py +0 -0
  189. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/dev/management/commands/toggle_profile_activation.py +0 -0
  190. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/dev/utils.py +0 -0
  191. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/drf/__init__.py +0 -0
  192. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/drf/permissions.py +0 -0
  193. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/filter/__init__.py +0 -0
  194. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/filter/apps.py +0 -0
  195. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/filter/checks.py +0 -0
  196. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/filter/default.py +0 -0
  197. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/filter/factories.py +0 -0
  198. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/filter/filters.py +0 -0
  199. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/filter/filterwrapper.py +0 -0
  200. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/filter/primitive_serializers.py +0 -0
  201. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/filter/queryset_filters.py +0 -0
  202. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/filter/serializers.py +0 -0
  203. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/filter/swappable/__init__.py +0 -0
  204. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/filter/swappable/serializers.py +0 -0
  205. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/filter/validators.py +0 -0
  206. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/__init__.py +0 -0
  207. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/appconfig.py +0 -0
  208. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/apps.py +0 -0
  209. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/auth/__init__.py +0 -0
  210. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/auth/views.py +0 -0
  211. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/checks.py +0 -0
  212. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/context_processors.py +0 -0
  213. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/dateformat/__init__.py +0 -0
  214. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/dateformat/constants.py +0 -0
  215. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/defaults.py +0 -0
  216. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/destination/__init__.py +0 -0
  217. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/destination/forms.py +0 -0
  218. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/destination/urls.py +0 -0
  219. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/destination/views.py +0 -0
  220. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/htmx_urls.py +0 -0
  221. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/incident/__init__.py +0 -0
  222. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/incident/customization.py +0 -0
  223. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/incident/forms.py +0 -0
  224. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/incident/urls.py +0 -0
  225. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/management/__init__.py +0 -0
  226. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/management/commands/__init__.py +0 -0
  227. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/management/commands/tailwind_config.py +0 -0
  228. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/middleware.py +0 -0
  229. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/migrations/0001_initial.py +0 -0
  230. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/migrations/__init__.py +0 -0
  231. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/modals.py +0 -0
  232. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/models.py +0 -0
  233. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/notificationprofile/__init__.py +0 -0
  234. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/notificationprofile/urls.py +0 -0
  235. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/notificationprofile/views.py +0 -0
  236. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/request.py +0 -0
  237. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/root_urls.py +0 -0
  238. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/static/htmx-2.0.2.min.js +0 -0
  239. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/static/hyperscript-0.9.13.min.js +0 -0
  240. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/static/logo_white.svg +0 -0
  241. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/static/styles.css +0 -0
  242. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/tailwindtheme/README.md +0 -0
  243. {argus_server-2.1.0/src/argus/htmx/templatetags → argus_server-2.2.0/src/argus/htmx/tailwindtheme}/__init__.py +0 -0
  244. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/tailwindtheme/snippets/10-tailwind.css +0 -0
  245. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/tailwindtheme/snippets/15-alert-message.css +0 -0
  246. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/tailwindtheme/snippets/20-loading-box.css +0 -0
  247. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/tailwindtheme/styles.css +0 -0
  248. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/tailwindtheme/tailwind.config.js +0 -0
  249. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/django/forms/div.html +0 -0
  250. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/django/forms/widgets/attrs.html +0 -0
  251. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/_base_confirm_dialog.html +0 -0
  252. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/_base_form_modal.html +0 -0
  253. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/_base_form_modal_button.html +0 -0
  254. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/_base_form_modal_experimental.html +0 -0
  255. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/base.html +0 -0
  256. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/destination/_collapse_with_forms.html +0 -0
  257. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/destination/_content.html +0 -0
  258. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/destination/_create_form.html +0 -0
  259. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/destination/_delete_form.html +0 -0
  260. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/destination/_edit_form.html +0 -0
  261. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/destination/_form_list.html +0 -0
  262. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/destination/destination_list.html +0 -0
  263. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/forms/badge_dropdown_select_multiple.html +0 -0
  264. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/forms/checkbox_select_multiple.html +0 -0
  265. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/forms/dropdown_select_multiple.html +0 -0
  266. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/forms/input_field.html +0 -0
  267. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/_base.html +0 -0
  268. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/_base_incident_update_modal.html +0 -0
  269. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/_delete_filter_confirm_dialog.html +0 -0
  270. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/_existing_filters.html +0 -0
  271. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/_filter_controls.html +0 -0
  272. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/_filter_create_modal.html +0 -0
  273. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/_filter_delete_dropdown.html +0 -0
  274. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/_filter_select.html +0 -0
  275. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/_filter_update_dropdown.html +0 -0
  276. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/_incident_acknowledge_modal.html +0 -0
  277. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/_incident_close_modal.html +0 -0
  278. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/_incident_filterbox.html +0 -0
  279. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/_incident_list_menubar.html +0 -0
  280. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/_incident_list_update_menu.html +0 -0
  281. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/_incident_reopen_modal.html +0 -0
  282. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/_incident_table.html +0 -0
  283. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/_incident_table_cell_wrapper_default.html +0 -0
  284. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/_incident_table_cell_wrapper_link_to_details.html +0 -0
  285. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/_incident_table_paginator.html +0 -0
  286. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/_incident_table_paginator_pageitem.html +0 -0
  287. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/_incident_table_row.html +0 -0
  288. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/_incident_table_rows.html +0 -0
  289. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/_incident_ticket_autocreate_modal.html +0 -0
  290. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/_incident_ticket_edit_modal.html +0 -0
  291. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/_incident_ticket_manual_create_modal.html +0 -0
  292. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/_update_filter_confirm_dialog.html +0 -0
  293. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_ack.html +0 -0
  294. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_actions.html +0 -0
  295. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_checkbox.html +0 -0
  296. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_color_status.html +0 -0
  297. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_combined_status.html +0 -0
  298. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_description.html +0 -0
  299. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_filterable_column_header.html +0 -0
  300. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_level.html +0 -0
  301. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_list_select_all_checkbox_header.html +0 -0
  302. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_pk.html +0 -0
  303. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_source.html +0 -0
  304. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_start_time.html +0 -0
  305. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_start_time_header.html +0 -0
  306. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_status.html +0 -0
  307. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_tag.html +0 -0
  308. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/cells/_incident_ticket.html +0 -0
  309. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/filter_list.html +0 -0
  310. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/incident_detail.html +0 -0
  311. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/incident_list.html +0 -0
  312. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/responses/_incident_list_refresh.html +0 -0
  313. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/incident/responses/empty_list_item.html +0 -0
  314. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/notificationprofile/_notificationprofile_form.html +0 -0
  315. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/notificationprofile/_notificationprofile_form_div.html +0 -0
  316. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/notificationprofile/base.html +0 -0
  317. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/notificationprofile/notificationprofile_confirm_delete.html +0 -0
  318. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/notificationprofile/notificationprofile_form.html +0 -0
  319. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/notificationprofile/notificationprofile_list.html +0 -0
  320. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/timeslot/_delete_timeslot_confirm_dialog.html +0 -0
  321. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/timeslot/_timeslot_detail.html +0 -0
  322. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/timeslot/_timeslot_form.html +0 -0
  323. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/timeslot/base.html +0 -0
  324. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/timeslot/checkbox_option.html +0 -0
  325. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/timeslot/timerecurrence_div.html +0 -0
  326. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/timeslot/timeslot_confirm_delete.html +0 -0
  327. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/timeslot/timeslot_form.html +0 -0
  328. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/timeslot/timeslot_list.html +0 -0
  329. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/user/_current_theme.html +0 -0
  330. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/user/_dateformat_dropdown.html +0 -0
  331. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/user/_incidents_table_layout_dropdown.html +0 -0
  332. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/user/_theme_dropdown.html +0 -0
  333. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/user/_user_menu.html +0 -0
  334. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/user/_user_menu_logout.html +0 -0
  335. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/user/_user_menu_notification_config.html +0 -0
  336. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/user/_user_menu_user_preferences.html +0 -0
  337. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx/user/preferences.html +0 -0
  338. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/htmx_base.html +0 -0
  339. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/messages/_notification_message.html +0 -0
  340. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/messages/_notification_messages.html +0 -0
  341. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/messages/_notification_messages_htmx_append.html +0 -0
  342. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/registration/login.html +0 -0
  343. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/tailwind/styles.css +0 -0
  344. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/tailwind/tailwind.config.js +0 -0
  345. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templates/tailwind_whitelist.html +0 -0
  346. {argus_server-2.1.0/src/argus/htmx/themes → argus_server-2.2.0/src/argus/htmx/templatetags}/__init__.py +0 -0
  347. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/templatetags/argus_htmx.py +0 -0
  348. {argus_server-2.1.0/src/argus/htmx/timeslot → argus_server-2.2.0/src/argus/htmx/themes}/__init__.py +0 -0
  349. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/themes/constants.py +0 -0
  350. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/themes/utils.py +0 -0
  351. {argus_server-2.1.0/src/argus/htmx/user/preferences → argus_server-2.2.0/src/argus/htmx/timeslot}/__init__.py +0 -0
  352. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/timeslot/urls.py +0 -0
  353. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/timeslot/views.py +0 -0
  354. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/urls.py +0 -0
  355. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/user/__init__.py +0 -0
  356. {argus_server-2.1.0/src/argus/incident/migrations → argus_server-2.2.0/src/argus/htmx/user/preferences}/__init__.py +0 -0
  357. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/user/urls.py +0 -0
  358. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/user/views.py +0 -0
  359. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/utils.py +0 -0
  360. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/views.py +0 -0
  361. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/htmx/widgets.py +0 -0
  362. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/incident/__init__.py +0 -0
  363. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/incident/admin.py +0 -0
  364. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/incident/apps.py +0 -0
  365. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/incident/constants.py +0 -0
  366. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/incident/factories.py +0 -0
  367. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/incident/fields.py +0 -0
  368. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/incident/forms.py +0 -0
  369. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/incident/migrations/0001_initial.py +0 -0
  370. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/incident/migrations/0001_squashed_incident_20250514.py +0 -0
  371. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/incident/migrations/0002_empty_source_incident_id.py +0 -0
  372. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/incident/migrations/0003_incident_level.py +0 -0
  373. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/incident/migrations/0004_add_ChangeEvent_proxy.py +0 -0
  374. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/incident/migrations/0005_alter_event_type.py +0 -0
  375. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/incident/migrations/0006_incident_search_text.py +0 -0
  376. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/incident/migrations/0007_alter_event_type.py +0 -0
  377. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/incident/migrations/0008_incident_metadata.py +0 -0
  378. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/incident/migrations/0009_use_bigautofield_on_quickly_growing_tables.py +0 -0
  379. {argus_server-2.1.0/src/argus/incident/ticket → argus_server-2.2.0/src/argus/incident/migrations}/__init__.py +0 -0
  380. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/incident/models.py +0 -0
  381. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/incident/serializers.py +0 -0
  382. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/incident/signals.py +0 -0
  383. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/incident/templates/incident/admin/fake_incident_add_form.html +0 -0
  384. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/incident/templates/incident/admin/incident_change_list.html +0 -0
  385. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/incident/templates/incident/admin/widgets/split_datetime_infinity.html +0 -0
  386. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/incident/templates/incident/ticket/default_ticket_body.html +0 -0
  387. {argus_server-2.1.0/src/argus/notificationprofile/migrations → argus_server-2.2.0/src/argus/incident/ticket}/__init__.py +0 -0
  388. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/incident/ticket/base.py +0 -0
  389. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/incident/ticket/dummy.py +0 -0
  390. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/incident/ticket/utils.py +0 -0
  391. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/incident/urls.py +0 -0
  392. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/incident/validators.py +0 -0
  393. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/incident/views.py +0 -0
  394. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/incident/widgets.py +0 -0
  395. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/notificationprofile/__init__.py +0 -0
  396. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/notificationprofile/admin.py +0 -0
  397. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/notificationprofile/apps.py +0 -0
  398. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/notificationprofile/checks.py +0 -0
  399. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/notificationprofile/factories.py +0 -0
  400. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/notificationprofile/media/__init__.py +0 -0
  401. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/notificationprofile/media/base.py +0 -0
  402. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/notificationprofile/media/email.py +0 -0
  403. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/notificationprofile/media/sms_as_email.py +0 -0
  404. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/notificationprofile/migrations/0001_squashed_0015_remove_days_alter_days_array.py +0 -0
  405. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/notificationprofile/migrations/0001_squashed_notificationprofile_20250512.py +0 -0
  406. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/notificationprofile/migrations/0016_noop.py +0 -0
  407. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/notificationprofile/migrations/0017_change_event_type_to_event_types.py +0 -0
  408. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/notificationprofile/migrations/0018_remove_closed_and_unacked_from_filterblob.py +0 -0
  409. {argus_server-2.1.0/src/argus/site → argus_server-2.2.0/src/argus/notificationprofile/migrations}/__init__.py +0 -0
  410. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/notificationprofile/models.py +0 -0
  411. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/notificationprofile/serializers.py +0 -0
  412. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/notificationprofile/signals.py +0 -0
  413. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/notificationprofile/templates/notificationprofile/email.html +0 -0
  414. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/notificationprofile/templates/notificationprofile/email.txt +0 -0
  415. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/notificationprofile/templates/schemawrapper.html +0 -0
  416. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/notificationprofile/urls.py +0 -0
  417. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/notificationprofile/views.py +0 -0
  418. {argus_server-2.1.0/src/argus/util → argus_server-2.2.0/src/argus/site}/__init__.py +0 -0
  419. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/site/api_v2_urls.py +0 -0
  420. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/site/logging.py +0 -0
  421. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/site/serializers.py +0 -0
  422. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/site/settings/__init__.py +0 -0
  423. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/site/settings/_serializers.py +0 -0
  424. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/site/settings/dockerdev.py +0 -0
  425. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/site/urls.py +0 -0
  426. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/site/utils.py +0 -0
  427. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/site/views.py +0 -0
  428. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/site/wsgi.py +0 -0
  429. {argus_server-2.1.0/tests → argus_server-2.2.0/src/argus/util}/__init__.py +0 -0
  430. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/util/admin_utils.py +0 -0
  431. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/util/datetime_utils.py +0 -0
  432. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/util/testing.py +0 -0
  433. {argus_server-2.1.0 → argus_server-2.2.0}/src/argus/util/utils.py +0 -0
  434. {argus_server-2.1.0/tests/auth/management_commands → argus_server-2.2.0/tests}/__init__.py +0 -0
  435. {argus_server-2.1.0 → argus_server-2.2.0}/tests/auth/__init__.py +0 -0
  436. {argus_server-2.1.0/tests/dev → argus_server-2.2.0/tests/auth/management_commands}/__init__.py +0 -0
  437. {argus_server-2.1.0 → argus_server-2.2.0}/tests/auth/management_commands/test_changeuser.py +0 -0
  438. {argus_server-2.1.0 → argus_server-2.2.0}/tests/auth/management_commands/test_createuser.py +0 -0
  439. {argus_server-2.1.0 → argus_server-2.2.0}/tests/auth/models.py +0 -0
  440. {argus_server-2.1.0 → argus_server-2.2.0}/tests/auth/test_auth.py +0 -0
  441. {argus_server-2.1.0 → argus_server-2.2.0}/tests/auth/test_knox_views.py +0 -0
  442. {argus_server-2.1.0 → argus_server-2.2.0}/tests/auth/test_models.py +0 -0
  443. {argus_server-2.1.0 → argus_server-2.2.0}/tests/auth/test_utils.py +0 -0
  444. {argus_server-2.1.0 → argus_server-2.2.0}/tests/auth/test_views.py +0 -0
  445. {argus_server-2.1.0/tests/filter → argus_server-2.2.0/tests/dev}/__init__.py +0 -0
  446. {argus_server-2.1.0 → argus_server-2.2.0}/tests/dev/test_bulk_incidents.py +0 -0
  447. {argus_server-2.1.0 → argus_server-2.2.0}/tests/dev/test_check_token_expiry.py +0 -0
  448. {argus_server-2.1.0 → argus_server-2.2.0}/tests/dev/test_close_incident.py +0 -0
  449. {argus_server-2.1.0 → argus_server-2.2.0}/tests/dev/test_create_fake_incident.py +0 -0
  450. {argus_server-2.1.0 → argus_server-2.2.0}/tests/dev/test_create_source.py +0 -0
  451. {argus_server-2.1.0 → argus_server-2.2.0}/tests/dev/test_gen_secret_key.py +0 -0
  452. {argus_server-2.1.0 → argus_server-2.2.0}/tests/dev/test_initial_setup.py +0 -0
  453. {argus_server-2.1.0 → argus_server-2.2.0}/tests/dev/test_list_filters.py +0 -0
  454. {argus_server-2.1.0 → argus_server-2.2.0}/tests/dev/test_toggle_profile_activation.py +0 -0
  455. {argus_server-2.1.0 → argus_server-2.2.0}/tests/dev/test_utils.py +0 -0
  456. {argus_server-2.1.0/tests/htmx → argus_server-2.2.0/tests/filter}/__init__.py +0 -0
  457. {argus_server-2.1.0 → argus_server-2.2.0}/tests/filter/dummyplugin.py +0 -0
  458. {argus_server-2.1.0 → argus_server-2.2.0}/tests/filter/test_filterplugin.py +0 -0
  459. {argus_server-2.1.0 → argus_server-2.2.0}/tests/filter/test_filterwrapper.py +0 -0
  460. {argus_server-2.1.0 → argus_server-2.2.0}/tests/filter/test_queryset_filters.py +0 -0
  461. {argus_server-2.1.0 → argus_server-2.2.0}/tests/helpers.py +0 -0
  462. {argus_server-2.1.0/tests/htmx/incident → argus_server-2.2.0/tests/htmx}/__init__.py +0 -0
  463. {argus_server-2.1.0/tests/htmx/notificationprofile → argus_server-2.2.0/tests/htmx/incident}/__init__.py +0 -0
  464. {argus_server-2.1.0 → argus_server-2.2.0}/tests/htmx/incident/test_customization.py +0 -0
  465. {argus_server-2.1.0 → argus_server-2.2.0}/tests/htmx/incident/test_filter.py +0 -0
  466. {argus_server-2.1.0 → argus_server-2.2.0}/tests/htmx/incident/test_utils.py +0 -0
  467. {argus_server-2.1.0/tests/incident/fixtures → argus_server-2.2.0/tests/htmx/notificationprofile}/__init__.py +0 -0
  468. {argus_server-2.1.0 → argus_server-2.2.0}/tests/htmx/notificationprofile/test_forms.py +0 -0
  469. {argus_server-2.1.0 → argus_server-2.2.0}/tests/htmx/test_incident.py +0 -0
  470. {argus_server-2.1.0 → argus_server-2.2.0}/tests/htmx/test_middleware.py +0 -0
  471. {argus_server-2.1.0 → argus_server-2.2.0}/tests/htmx/test_utils.py +0 -0
  472. {argus_server-2.1.0 → argus_server-2.2.0}/tests/incident/__init__.py +0 -0
  473. {argus_server-2.1.0/tests/incident/ticket_plugins → argus_server-2.2.0/tests/incident/fixtures}/__init__.py +0 -0
  474. {argus_server-2.1.0 → argus_server-2.2.0}/tests/incident/test_change_event.py +0 -0
  475. {argus_server-2.1.0 → argus_server-2.2.0}/tests/incident/test_create_fake_incident.py +0 -0
  476. {argus_server-2.1.0 → argus_server-2.2.0}/tests/incident/test_event.py +0 -0
  477. {argus_server-2.1.0 → argus_server-2.2.0}/tests/incident/test_filters.py +0 -0
  478. {argus_server-2.1.0 → argus_server-2.2.0}/tests/incident/test_incident.py +0 -0
  479. {argus_server-2.1.0 → argus_server-2.2.0}/tests/incident/test_incident_fields.py +0 -0
  480. {argus_server-2.1.0 → argus_server-2.2.0}/tests/incident/test_queryset.py +0 -0
  481. {argus_server-2.1.0 → argus_server-2.2.0}/tests/incident/test_serializers.py +0 -0
  482. {argus_server-2.1.0 → argus_server-2.2.0}/tests/incident/test_source_system.py +0 -0
  483. {argus_server-2.1.0 → argus_server-2.2.0}/tests/incident/test_source_system_type.py +0 -0
  484. {argus_server-2.1.0 → argus_server-2.2.0}/tests/incident/test_views.py +0 -0
  485. {argus_server-2.1.0/tests/incident/unit → argus_server-2.2.0/tests/incident/ticket_plugins}/__init__.py +0 -0
  486. {argus_server-2.1.0 → argus_server-2.2.0}/tests/incident/ticket_plugins/test_base.py +0 -0
  487. {argus_server-2.1.0 → argus_server-2.2.0}/tests/incident/ticket_plugins/test_dummy.py +0 -0
  488. {argus_server-2.1.0 → argus_server-2.2.0}/tests/incident/ticket_plugins/test_utils.py +0 -0
  489. {argus_server-2.1.0/tests/notificationprofile/destinations → argus_server-2.2.0/tests/incident/unit}/__init__.py +0 -0
  490. {argus_server-2.1.0 → argus_server-2.2.0}/tests/incident/unit/test_incident_details_url.py +0 -0
  491. {argus_server-2.1.0 → argus_server-2.2.0}/tests/migration_example.py +0 -0
  492. {argus_server-2.1.0 → argus_server-2.2.0}/tests/notificationprofile/__init__.py +0 -0
  493. {argus_server-2.1.0/tests/notificationprofile/migrations → argus_server-2.2.0/tests/notificationprofile/destinations}/__init__.py +0 -0
  494. {argus_server-2.1.0 → argus_server-2.2.0}/tests/notificationprofile/destinations/test_email.py +0 -0
  495. {argus_server-2.1.0 → argus_server-2.2.0}/tests/notificationprofile/destinations/test_sms.py +0 -0
  496. {argus_server-2.1.0/tests/site → argus_server-2.2.0/tests/notificationprofile/migrations}/__init__.py +0 -0
  497. {argus_server-2.1.0 → argus_server-2.2.0}/tests/notificationprofile/test_github236.py +0 -0
  498. {argus_server-2.1.0 → argus_server-2.2.0}/tests/notificationprofile/test_media.py +0 -0
  499. {argus_server-2.1.0 → argus_server-2.2.0}/tests/notificationprofile/test_models.py +0 -0
  500. {argus_server-2.1.0 → argus_server-2.2.0}/tests/notificationprofile/test_serializers.py +0 -0
  501. {argus_server-2.1.0 → argus_server-2.2.0}/tests/notificationprofile/test_views.py +0 -0
  502. {argus_server-2.1.0/tests/util → argus_server-2.2.0/tests/site}/__init__.py +0 -0
  503. {argus_server-2.1.0 → argus_server-2.2.0}/tests/site/test_misc.py +0 -0
  504. {argus_server-2.1.0 → argus_server-2.2.0}/tests/site/test_settings_helpers.py +0 -0
  505. {argus_server-2.1.0 → argus_server-2.2.0}/tests/site/test_settings_validators.py +0 -0
  506. {argus_server-2.1.0 → argus_server-2.2.0}/tests/site/test_views.py +0 -0
  507. {argus_server-2.1.0 → argus_server-2.2.0}/tests/util/test_utils.py +0 -0
@@ -8,6 +8,69 @@ This project uses [*towncrier*](https://towncrier.readthedocs.io/) and the chang
8
8
 
9
9
  <!-- towncrier release notes start -->
10
10
 
11
+ ## [2.2.0] - 2025-08-26
12
+
13
+ The most important bit of this release is the new (old) way to install and set
14
+ up argus-server, including the frontend. Please see the NOTES.
15
+
16
+ ### Added, frontend
17
+
18
+ - Added option 'Last 3 days' to the Timeframe selector.
19
+ ([#1440](https://github.com/Uninett/Argus/issues/1440))
20
+
21
+ ### Added
22
+
23
+ - Added rule to Makefile that downloads standalone tailwind CLI client as per
24
+ the version configured in `src/argus/htmx/tailwindtheme/config.py`.
25
+ ([#1531](https://github.com/Uninett/Argus/issues/1531))
26
+ - Add a fledgling CONTRIBUTING.rst for onboarding new developers.
27
+ - Added documentation for the rules in the `Makefile`.
28
+ - Two new development howtos have been added, with tips for using git and
29
+ GitHub.
30
+
31
+ ### Changed
32
+
33
+ - Make example production Docker image work properly for Argus 2
34
+ - The settings files have changed, since the HTMx frontend app is now included
35
+ by default. The frontend settings has been merged in and no longer need the
36
+ settings overriding machinery. It is no longer necessary to install the
37
+ frontend with `pip install argus-server[htmx]`, just `pip install
38
+ argus-server` will do.
39
+ - Updated contributors file with contributors that joined after 2019, and added
40
+ a howto for how to keep the list updated.
41
+
42
+
43
+ ## [2.1.1] - 2025-07-16
44
+
45
+ ### Added
46
+
47
+ - Added new sections to the user manual: *How to select from existing themes*,
48
+ *How to add your own theme*,
49
+ *How to choose what columns are shown in the incidents table*, and *How to
50
+ change the date and time format*.
51
+ ([#1491](https://github.com/Uninett/Argus/issues/1491))
52
+
53
+ ### Changed
54
+
55
+ - Added info about more glue services.
56
+ ([#1508](https://github.com/Uninett/Argus/issues/1508))
57
+ - Updated the README with a link and info about the publicly accessible
58
+ demo-site.
59
+ ([#1510](https://github.com/Uninett/Argus/issues/1510))
60
+ - Updated the content of the user manual (outdated text, screenshots and broken
61
+ external links). ([#1490](https://github.com/Uninett/Argus/issues/1490))
62
+
63
+ ### Fixed
64
+
65
+ - Fixed automatic ticket creation, which was broken by
66
+ [#1497](https://github.com/Uninett/Argus/issues/1497)
67
+ ([#1516](https://github.com/Uninett/Argus/issues/1516))
68
+ - Made `docker compose up` for development work with Argus 2.1+
69
+ ([#1513](https://github.com/Uninett/Argus/issues/1513))
70
+ - Fixed broken links in the user manual.
71
+ ([#1492](https://github.com/Uninett/Argus/issues/1492))
72
+
73
+
11
74
  ## [2.1.0] - 2025-06-30
12
75
 
13
76
  ### Added
@@ -0,0 +1,56 @@
1
+ ============
2
+ CONTRIBUTING
3
+ ============
4
+
5
+ Issues are very welcome! If we tag it "wontfix" we will strive to explain why.
6
+
7
+ Patches are indeed also welcome, in prioritized order:
8
+
9
+ * Patches for existing issues
10
+ * Bugfixes
11
+ * More tests, based on ``unittest`` and ``django.test.TestCase`` please
12
+ * More integrations (glue services, ticket plugins, notification destinations,
13
+ API clients, especially in other languages..)
14
+
15
+ * For integrations in Python "all" (ha!) you need is a package on PyPI and
16
+ a patch with updated info about your integration for the docs. We'll check
17
+ that the package installs and do a quick security check.
18
+ * For integrations in other languages you just need a patch with updated info
19
+ about your integration for the docs.
20
+
21
+ * Docs fixes
22
+ * Fixes that makes the generated OpenAPI better
23
+ * Handy tricks in the admin as well as management commands
24
+
25
+ We're not so keen on:
26
+
27
+ * Changes to the database schema that can not be considered a bugfix. There
28
+ will be discussions and gnashing of teeth!
29
+ * Changes to the stable API
30
+ * Lots of information about the world being stored in the same database as
31
+ Argus. Argus isn't an inventory manager for instance. If you need that, build
32
+ something on top of Argus instead, using Argus as a dependency.
33
+
34
+ Nuts and bolts
35
+ ==============
36
+
37
+ * Please set your name and email address in ``git`` and GitHub before your
38
+ first commit if you haven't already:
39
+
40
+ * How to set name and email address in git `(local copy) <./docs/development/howtos/howtos-for-git.rst>`_, `RTD <https://argus-server.readthedocs.io/en/latest/development/howtos/howtos-for-git.html>`_
41
+ * How to set email address in GitHub `(local copy) <./docs/development/howtos/howtos-for-github.rst>`_, `RTD <https://argus-server.readthedocs.io/en/latest/development/howtos/howtos-for-github.html>`_
42
+
43
+ * We use pre-commit for linting. We lint the same stuff in CI so make sure your
44
+ stuff is linted before you ask for a review.
45
+ * Add yourself to the bottom of the CONTRIBUTORS.md-file if this is your first
46
+ patch.
47
+ * We use a template for the message in PRs, it's good enough that we use it
48
+ ourselves. It helps us review the code faster!
49
+
50
+ * If there are visible changes to the frontend, add screenshots of before and
51
+ after.
52
+
53
+ * See the docs for
54
+
55
+ * How to write a changelog, and when `(local copy) <./docs/development/howtos/changelog-entry.rst>`_, `RTD <https://argus-server.readthedocs.io/en/latest/development/howtos/changelog-entry.html>`_
56
+ * What we want to see in a commit message `(local copy) <./docs/development/howtos/commit-messages.rst>`_, `RTD <https://argus-server.readthedocs.io/en/latest/development/howtos/commit-messages.html>`_
@@ -0,0 +1,36 @@
1
+ # Argus contributors
2
+
3
+ *Listed in order of first appearance in the commit log:*
4
+
5
+ ## 2019
6
+
7
+ * [Anders Hovden](https://github.com/ddabble) \<andershovden at protonmail.com\>
8
+ * [Alexander Michael Staff](https://github.com/tralphium) \<alexandermstaff at gmail.com\>
9
+ * [Karoline Bonnerud](https://github.com/karolbon) \<kbonnerud at gmail.com\>
10
+ * [Theodor Astrup Wiik](https://github.com/tjedor) \<theo.aw at hotmail.com\>
11
+ * [Andreas Kristiansen Melzer](https://github.com/akrimelzer) \<akrimelzer at gmail.com\>
12
+
13
+ ## 2020
14
+
15
+ * [Morten Brekkevold](https://github.com/lunkwill42) \<morten.brekkevold@sikt.no\>
16
+ * [Hanne Moa](https://github.com/hmpf) \<hanne.moa@sikt.no\>
17
+ * [Jørgen Bele Reinfjell](https://github.com/jorgenbele) \<jorgen.bele at gmail.com\>
18
+ * [Kat Hößel](https://github.com/katsel) \<kathoe@uninett.no\>
19
+
20
+ ## 2021
21
+ * [dependabot](https://github.com/dependabot) \<49699333+dependabot[bot]@users.noreply.github.com\>
22
+ * [Ilona Podliashanyk](https://github.com/podliashanyk) \<ilona.podliashanyk@sikt.no\>
23
+
24
+ ## 2022
25
+
26
+ * [Johanna England](https://github.com/johannaengland) \<johanna.england@sikt.no\>
27
+ * [Simon Oliver Tveit](https://github.com/stveit) \<simon.tveit@sikt.no\>
28
+
29
+ ## 2024
30
+
31
+ * [Pelle Koster](https://github.com/elfjes) \<pelle.koster@geant.org\>
32
+ * [jorund1](https://github.com/jorund1) \<jorund@washbear.eu\>
33
+
34
+ ## 2025
35
+
36
+ * [James Ladd](https://github.com/jladd-geant) \<james.ladd@geant.org\>
@@ -11,7 +11,7 @@ COPY requirements.txt /argus
11
11
  COPY requirements/*.txt /argus/requirements/
12
12
 
13
13
  WORKDIR /argus
14
- RUN pip install -r requirements.txt -r /argus/requirements/dev.txt
14
+ RUN pip install gunicorn -r requirements.txt -r /argus/requirements/dev.txt
15
15
 
16
16
  ENV PYTHONPATH=/argus/src
17
17
  ENV PYTHONDONTWRITEBYTECODE=1
@@ -1,7 +1,9 @@
1
- .PHONY: clean testclean distclean coverageclean cacheclean nuke tailwind docclean
1
+ .PHONY: clean testclean distclean coverageclean cacheclean nuke tailwind docclean upgrade-tailwind
2
2
 
3
3
  TAILWINDDIR=src/argus/htmx/tailwindtheme
4
4
  STATICDIR=src/argus/htmx/static
5
+ PYTHONPATH=./src
6
+
5
7
 
6
8
  clean:
7
9
  -find . -name __pycache__ -print0 | xargs -0 rm -rf
@@ -31,3 +33,6 @@ nuke: clean docclean distclean testclean cacheclean
31
33
 
32
34
  tailwind:
33
35
  tailwindcss -c $(TAILWINDDIR)/tailwind.config.js -i $(TAILWINDDIR)/styles.css -o $(STATICDIR)/styles.css
36
+
37
+ upgrade-tailwind:
38
+ PYTHONPATH=$(PYTHONPATH) python3 src/argus/htmx/tailwindtheme/get_tailwind.py
@@ -3,6 +3,34 @@
3
3
  This file documents changes to Argus that are relevant for operations,
4
4
  customizers and end-users.
5
5
 
6
+
7
+ ## [2.2.0] - 2025-08-26
8
+
9
+ It is no longer necessary to install the frontend with `pip install
10
+ argus-server[htmx]`, just `pip install argus-server` will do. The first method
11
+ will still work but is deprecated.
12
+
13
+ The included settings files were using the `update_settings` trick to set up
14
+ the frontend, this has now been fixed. If you do not use separate settings
15
+ files you should not need to do anything, but if you *do* use your own
16
+ settings-files you no longer need invoke `update_settings`, just choose what
17
+ settings-file to import/copy from with care.
18
+
19
+ It is now also possible to look at only the last three days of incidents in the
20
+ frontend.
21
+
22
+ All other changes are related to maintenance and/or development. The rules in
23
+ the Makefile have been documented. A rule for controlling/upgrading the version
24
+ of Tailwind and Daisy UI has been added to the Makefile, and compiling CSS via
25
+ `make tailwind` will be using the versions downloaded with the new rule.
26
+
27
+
28
+ ## [2.1.1] - 2025-07-16
29
+
30
+ Updated the user manual in the docs, added the link to the Argus demo site
31
+ (https://argus-demo.uninett.no) to the README and fixed automatic ticket creation.
32
+
33
+
6
34
  ## [2.1.0] - 2025-06-30
7
35
 
8
36
  One new user preference.
@@ -10,14 +38,6 @@ One new user preference.
10
38
  One new and one changed management command, both for better manipulation of
11
39
  incidents via the CLI.
12
40
 
13
- ### Added
14
-
15
- - Add a preference to change the incidents table layout to compact or standard
16
- ([#1399](https://github.com/Uninett/Argus/issues/1399))
17
- - Add CLI command to close incidents
18
- ([#1450](https://github.com/Uninett/Argus/issues/1450))
19
- - Add option to `create_fake_incident` to generate incidents from json files
20
- ([#1451](https://github.com/Uninett/Argus/issues/1451))
21
41
 
22
42
  ## [2.0.0] - 2025-05-26
23
43
 
@@ -44,25 +64,6 @@ and corresponding imports if you are getting the error
44
64
  `django.core.exceptions.ImproperlyConfigured: Application labels aren't unique,
45
65
  duplicates: django_htmx`.
46
66
 
47
- ### Removed
48
-
49
- - Deleted API v1, its tests and mentions in the documentation. As well as all
50
- support for the old frontend. Any endpoint starting with "/api/v1" replies
51
- with "410 Gone". ([#1446](https://github.com/Uninett/Argus/pull/1446),
52
- [#1445](https://github.com/Uninett/Argus/pull/1445),
53
- [#1428](https://github.com/Uninett/Argus/pull/1428),
54
- [#1427](https://github.com/Uninett/Argus/pull/1427),
55
- [#1423](https://github.com/Uninett/Argus/pull/1423),
56
- [#1422](https://github.com/Uninett/Argus/pull/1422),
57
- [#1417](https://github.com/Uninett/Argus/pull/1417),
58
- [#1415](https://github.com/Uninett/Argus/pull/1415))
59
-
60
- ### Added
61
-
62
- - Added an optional banner below the navbar that can be filled with text
63
- controlled via environment variable/Django setting.
64
- ([#1164](https://github.com/Uninett/Argus/issues/1164))
65
-
66
67
 
67
68
  ## [1.37.0] - 2025-05-14
68
69
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: argus-server
3
- Version: 2.1.0
3
+ Version: 2.2.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>
@@ -21,13 +21,16 @@ Requires-Python: >=3.10
21
21
  Requires-Dist: dj-database-url>=0.5.0
22
22
  Requires-Dist: django-cors-headers>=3.2
23
23
  Requires-Dist: django-filter
24
+ Requires-Dist: django-htmx
24
25
  Requires-Dist: django-phonenumber-field[phonenumberslite]
25
26
  Requires-Dist: django-rest-knox
27
+ Requires-Dist: django-widget-tweaks==1.5.0
26
28
  Requires-Dist: django<6.0,>=5.2
27
29
  Requires-Dist: djangorestframework>=3.14
28
30
  Requires-Dist: drf-rw-serializers>=1.1
29
31
  Requires-Dist: drf-spectacular>=0.17
30
32
  Requires-Dist: factory-boy
33
+ Requires-Dist: fontawesomefree~=6.6
31
34
  Requires-Dist: httpx
32
35
  Requires-Dist: psycopg2
33
36
  Requires-Dist: pydantic>=2
@@ -52,11 +55,6 @@ Requires-Dist: werkzeug; extra == 'dev'
52
55
  Provides-Extra: docs
53
56
  Requires-Dist: sphinx>=2.2.0; extra == 'docs'
54
57
  Provides-Extra: htmx
55
- Requires-Dist: django-htmx; extra == 'htmx'
56
- Requires-Dist: django-widget-tweaks==1.5.0; extra == 'htmx'
57
- Requires-Dist: fontawesomefree~=6.6; extra == 'htmx'
58
- Requires-Dist: social-auth-app-django>=5.0; extra == 'htmx'
59
- Requires-Dist: social-auth-core>=4.1; extra == 'htmx'
60
58
  Description-Content-Type: text/markdown
61
59
 
62
60
  # Argus
@@ -79,6 +77,15 @@ See also the the [Python client library](https://github.com/Uninett/pyargus).
79
77
  > * Support for the REACT frontend was dropped in version 2.0 of
80
78
  > argus-server. Please try out the new built-in one.
81
79
 
80
+ ## DEMO
81
+
82
+ Give Argus a test-run!
83
+
84
+ See `https://argus-demo.uninett.no/`.
85
+
86
+ The demo has notification sending turned off, and automated ticket creation is
87
+ also turned off. The database is reset every 24 hours. Fake incidents are
88
+ randomly generated and randomly closed.
82
89
 
83
90
  ## Installation
84
91
 
@@ -18,6 +18,15 @@ See also the the [Python client library](https://github.com/Uninett/pyargus).
18
18
  > * Support for the REACT frontend was dropped in version 2.0 of
19
19
  > argus-server. Please try out the new built-in one.
20
20
 
21
+ ## DEMO
22
+
23
+ Give Argus a test-run!
24
+
25
+ See `https://argus-demo.uninett.no/`.
26
+
27
+ The demo has notification sending turned off, and automated ticket creation is
28
+ also turned off. The database is reset every 24 hours. Fake incidents are
29
+ randomly generated and randomly closed.
21
30
 
22
31
  ## Installation
23
32
 
@@ -1,12 +1,19 @@
1
1
  # Defines a production image for the Argus API server
2
- # Needs the repository root directory as its context
2
+ # Needs the repository root directory as its context:
3
+ #
4
+ # If you're in the same dorectory as this Dockerfile try:
5
+ # docker build ..
6
+ #
7
+ # If you're in the repository root try:
8
+ # docker build -f docker/Dockerfile .
9
+
3
10
  FROM python:3.12
4
11
  ENV DEBIAN_FRONTEND=noninteractive
5
12
 
6
13
  RUN apt-get update && apt-get install -y --no-install-recommends tini build-essential
7
14
 
8
15
  # Install some dev requirements that aren't part of the minimal dependencies:
9
- RUN pip install psycopg2-binary django-extensions python-dotenv gunicorn 'uvicorn[standard]'
16
+ RUN pip install psycopg2-binary django-extensions python-dotenv gunicorn
10
17
 
11
18
  # Make an unprivileged user to run the server
12
19
  RUN useradd --system argus
@@ -15,7 +22,7 @@ RUN mkdir -p /static && chown argus /static
15
22
  ENV STATIC_ROOT=/static
16
23
 
17
24
  COPY . /src
18
- RUN pip install '/src[spa]' && rm -rf /src
25
+ RUN pip install '/src' && rm -rf /src
19
26
 
20
27
  # Install API backend settings suitable for Docker deployment
21
28
  RUN mkdir /extrapython
@@ -28,10 +28,9 @@ settings](http://argus-server.rtfd.io/en/latest/site-specific-settings.html).
28
28
 
29
29
  ## Limitations
30
30
 
31
- This is not a complete Argus environment. This image only defines the backend
32
- API server component. It still depends on a PostgreSQL and a Redis server to be
33
- functional. Also, the Argus front-end component is needed to have a functional
34
- user interface against the API server.
31
+ This is not a complete Argus environment. This image only defines the web
32
+ server component: API and frontend. It still depends on a PostgreSQL server to
33
+ be functional.
35
34
 
36
35
  For a full production environment example, take a look at
37
36
  https://github.com/Uninett/argus-docker
@@ -3,8 +3,7 @@
3
3
  django-admin collectstatic --noinput
4
4
  django-admin migrate --noinput
5
5
  exec gunicorn \
6
- argus.spa.ws.asgi:application \
7
- -k uvicorn.workers.UvicornWorker \
6
+ argus.site.wsgi:application \
8
7
  --forwarded-allow-ips="*" \
9
8
  --access-logfile - \
10
9
  -b 0.0.0.0:$PORT \
@@ -6,12 +6,10 @@ services:
6
6
  - "8000:8000"
7
7
  depends_on:
8
8
  - postgres
9
- - redis
10
9
  environment:
11
10
  - TIME_ZONE=Europe/Oslo
12
11
  - DJANGO_SETTINGS_MODULE=argus.site.settings.dockerdev
13
12
  - DATABASE_URL=postgresql://argus:HahF9araeKoo@postgres/argus
14
- - ARGUS_REDIS_SERVER=redis
15
13
  volumes:
16
14
  - ${PWD}:/argus
17
15
  restart: always
@@ -28,11 +26,6 @@ services:
28
26
  - POSTGRES_DB=argus
29
27
 
30
28
 
31
- redis:
32
- image: "redis:latest"
33
- restart: always
34
-
35
-
36
29
  volumes:
37
30
  postgres:
38
31
  driver: local
@@ -4,4 +4,4 @@ cd /argus
4
4
  python3 -m pip install -e .
5
5
  python3 manage.py collectstatic --noinput
6
6
  python3 manage.py migrate --noinput
7
- exec daphne -b 0.0.0.0 -p 8000 argus.spa.ws.asgi:application
7
+ exec gunicorn -b 0.0.0.0 -p 8000 argus.site.wsgi:application
@@ -0,0 +1,82 @@
1
+ .. _howto-change-settings:
2
+
3
+ ====================================
4
+ How to change site-specific settings
5
+ ====================================
6
+
7
+ Two ways to define these site-specific settings follow.
8
+
9
+ The management command ``print_settings`` (which depends on the app
10
+ ``django-extensions``, a ``dev``-dependency installable via ``pip
11
+ install argus-server[dev]``) will print out the complete
12
+ settings that will be used.
13
+
14
+
15
+ Variant 1: Using environment variables in the shell
16
+ ===================================================
17
+
18
+ A subset of settings can be set per 12 factor, using environment variables.
19
+
20
+ Note that environment variables can only contain numbers and strings as values.
21
+ Strings have to be enclosed with double quotes, ``"a simple string"``.
22
+ Use ``1`` to represent Boolean True, ``0`` for False.
23
+
24
+ In bash/zsh you set an environment variable like this::
25
+
26
+ $ export DEBUG=1
27
+
28
+ Deployment-specific systems like docker-compose, heroku or kubernetes might have their
29
+ own way of setting environment variables.
30
+
31
+ Variant 2: Using a ``settings.py`` file
32
+ =======================================
33
+
34
+ A settings file is a regular importable Python file. The filename MUST start
35
+ with a letter, MUST only contain letters, numbers or underscores ("_"), and
36
+ MUST end with ".py".
37
+
38
+ This allows the use of more complex Python data types than environment variables.
39
+ A settings file may override anything set via environment variable.
40
+
41
+ ``argus.site.settings.dev`` has reasonable defaults for development while
42
+ ``argus.site.settings.prod`` is a good starting point for production.
43
+
44
+ .. note:: The development settings file assumes that the optional development
45
+ dependencies are installed. You can get them via ``pip install argus-server[dev]``.
46
+
47
+ Development
48
+ ~~~~~~~~~~~
49
+
50
+ Do this in your working directory, which could be the checked out `argus-server
51
+ <https://github.com/Uninett/Argus>`_ repo.
52
+
53
+ This assumes that you have a local settings file (we recommend calling it
54
+ "localsettings.py" since that is hidden by .gitignore) as a sibling of
55
+ ``src/``.
56
+
57
+ At the top of this local settings file you should have::
58
+
59
+ from argus.site.settings.dev import *
60
+
61
+ There, now you can alter anything.
62
+
63
+ If you don't want to use any of the development dependencies you can import
64
+ from ``argus.htmx.settings`` instead.
65
+
66
+ Settings can be tested in ``localsettings.py`` and moved to other settings files
67
+ later.
68
+
69
+ Production
70
+ ~~~~~~~~~~
71
+
72
+ Copy the contents of ``argus.site.settings.prod`` to your own settings-file.
73
+ It does not depend on any development dependencies. It will also turn on some
74
+ extra nagging for settings that MUST be set for production.
75
+
76
+ For production you MUST set :setting::`ALLOWED_HOSTS`, note how it's
77
+ commented out in ``argus.site.settings.prod``.
78
+
79
+ Use an expressive name for your ``settings.py`` file, such as
80
+ ``production_settings.py``.
81
+
82
+ You can combine settings files and environment variables.
@@ -0,0 +1,37 @@
1
+ =============================
2
+ Howtos and tips for using git
3
+ =============================
4
+
5
+ Set name and email address to use as "Author" or "Committer" for a commit
6
+ =========================================================================
7
+
8
+ This can be set per box you use ``git`` on, or per repo.
9
+
10
+ If you always want to use the same name and address for all code you commit,
11
+ use::
12
+
13
+ git config set --global user.name` "YOUR NAME"
14
+ git config set --global user.email "YOUR@EMAIL"
15
+
16
+ If you don't set ``user.name`` on Linux/\*nix, your username might be used.
17
+
18
+ If you want to set it per repo, enter the root of the repo and run the command
19
+ without the ``--global`` flag::
20
+
21
+ git config set user.name` "YOUR NAME"
22
+ git config set user.email "YOUR@EMAIL"
23
+
24
+ You might want to set the same address for GitHub too, see
25
+ :ref:`setting-email-addresses-in-GitHub`.
26
+
27
+ Merge several names and email address into one with the mailmap file
28
+ ====================================================================
29
+
30
+ Sometimes we end up commiting from several different places, with several
31
+ different names and email addresses, which makes things look a bit messy.
32
+ People also sometimes change their names and email addresses.
33
+
34
+ While it is possible to change the names and addresses already used for commits
35
+ after the fact, the mess can be hidden via a ``.mailmap`` file.
36
+
37
+ See :ref:`maintaining-mailmap` for how to do this.
@@ -0,0 +1,26 @@
1
+ ================================
2
+ Howtos and tips for using GitHub
3
+ ================================
4
+
5
+ .. _setting-email-addresses-in-GitHub:
6
+
7
+ Set email address used when committing in the web interface
8
+ ===========================================================
9
+
10
+ GitHub gives every user a magic no-reply email address of the form
11
+ ``0000000+username@users.noreply.github.com`` which by default is used as the
12
+ "Committer" in a git commit made via the web interface.
13
+
14
+ If this email address has not been set for the git repo or user on your
15
+ development box, the commits you make via CLI and the commits you make via the
16
+ web interface will have different email addresses.
17
+
18
+ You can associate other email addresses with your GitHub account in the `Github
19
+ email settings <https://github.com/settings/emails>`_ page and use those when
20
+ you commit (also useful if you have changed your email). The one set as primary
21
+ is the one that will be shown in the web interface unless you want to use the
22
+ magic address GitHub provides for you, then you need to toggle "Keep my email
23
+ addresses private" on the same page to "On". You can even prevent commits not
24
+ using the magic address from being pushed to GitHub.
25
+
26
+ See `Setting your commit email address at GitHub<https://docs.github.com/en/account-and-profile/how-tos/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address>`_ for more information.
@@ -0,0 +1,62 @@
1
+ ====================================================
2
+ Howto: Maintaining the contributors file and mailmap
3
+ ====================================================
4
+
5
+ Maintaining CONTRIBUTORS.md
6
+ ===========================
7
+
8
+ ``CONTRIBUTORS.md`` contains the official list of contributors to Argus.
9
+
10
+ It is preferrable that new contributors (both code authors and code committers)
11
+ add themselves at the end, but it can also be done after the fact via some
12
+ variation of::
13
+
14
+ $ git log --all --pretty="%ad %ae %an" --date=iso | sort -u
15
+
16
+ which outputs full ISO timestamp, email address and name for the commits,
17
+ sorted by date, oldest first.
18
+
19
+ As an example, as of the creation of this howto, the first entry for
20
+ "dependabot" is::
21
+
22
+ 2021-03-22T14:40:04+01:00 49699333+dependabot[bot]@users.noreply.github.com dependabot[bot]
23
+
24
+ The format for a contributor in the CONTRIBUTORS.md is::
25
+
26
+ * [Name of contributor](link to preferred homepage) \<preferred@email.address\>
27
+
28
+ If there is no preferred homepage the contributor name need not be a link::
29
+
30
+ * Name of contributor \<preferred@email.address\>
31
+
32
+ .. _maintaining-mailmap:
33
+
34
+ Maintaining .mailmap
35
+ ====================
36
+
37
+ ``.mailmap`` exists to combine email addresses and contributor names of
38
+ contributors that have several. This is useful for ``git blame`` and ``git
39
+ log``.
40
+
41
+ This happens when the contributor commits from several different computers and
42
+ tools with different configurations for name and email. Github also gives each
43
+ user a github-specific email address that may be used when authoring/committing.
44
+
45
+ .. tip:: To prevent multiple names and addresses for the same author/committer
46
+ in the first place, make sure to explicitly configure this in every tool
47
+ used to commit.
48
+
49
+ For readability, we update the `.mailmap`-file manually. The file starts with
50
+ a block of preferred names and email addresses in the "canonical" section.
51
+
52
+ The format is::
53
+
54
+ Preferred Name <preferred@email.address>
55
+
56
+ This is followed by a list of rewrites to map names and email addresses to the
57
+ preferred forms in the "rewrites" section. The format is described in
58
+ `gitmailmap(5) <https://git-scm.com/docs/gitmailmap>`_.
59
+
60
+ You can get a list of all used names and email addreses via::
61
+
62
+ $ git log --format='%an <%ae>' | sort -u