argus-server 2.1.0__tar.gz → 2.2.1__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.1}/CHANGELOG.md +79 -0
  2. argus_server-2.2.1/CONTRIBUTING.rst +56 -0
  3. argus_server-2.2.1/CONTRIBUTORS.md +36 -0
  4. {argus_server-2.1.0 → argus_server-2.2.1}/Dockerfile +1 -1
  5. {argus_server-2.1.0 → argus_server-2.2.1}/Makefile +6 -1
  6. {argus_server-2.1.0 → argus_server-2.2.1}/NOTES.md +33 -27
  7. {argus_server-2.1.0 → argus_server-2.2.1}/PKG-INFO +42 -27
  8. {argus_server-2.1.0 → argus_server-2.2.1}/README.md +38 -21
  9. {argus_server-2.1.0 → argus_server-2.2.1}/docker/Dockerfile +15 -4
  10. {argus_server-2.1.0 → argus_server-2.2.1}/docker/README.md +19 -7
  11. {argus_server-2.1.0 → argus_server-2.2.1}/docker/docker-entrypoint.sh +1 -2
  12. {argus_server-2.1.0 → argus_server-2.2.1}/docker-compose.yml +0 -7
  13. {argus_server-2.1.0 → argus_server-2.2.1}/docker-entrypoint.sh +1 -1
  14. argus_server-2.2.1/docs/development/howtos/change-settings.rst +82 -0
  15. argus_server-2.2.1/docs/development/howtos/howtos-for-git.rst +37 -0
  16. argus_server-2.2.1/docs/development/howtos/howtos-for-github.rst +26 -0
  17. argus_server-2.2.1/docs/development/howtos/update-contributors.rst +62 -0
  18. argus_server-2.2.1/docs/development/makefile-rules.rst +93 -0
  19. {argus_server-2.1.0 → argus_server-2.2.1}/docs/development.rst +1 -0
  20. argus_server-2.2.1/docs/img/default_timeslot.png +0 -0
  21. argus_server-2.2.1/docs/img/destinations_view.png +0 -0
  22. argus_server-2.2.1/docs/img/example_timeslot.png +0 -0
  23. argus_server-2.2.1/docs/img/filter_selector.png +0 -0
  24. argus_server-2.2.1/docs/img/incident_details_view.png +0 -0
  25. argus_server-2.2.1/docs/img/incidents_filter.png +0 -0
  26. argus_server-2.2.1/docs/img/incidents_page.png +0 -0
  27. argus_server-2.2.1/docs/img/new_notification_profile.png +0 -0
  28. argus_server-2.2.1/docs/img/notification_profiles.png +0 -0
  29. argus_server-2.2.1/docs/img/synced_destination_delete_error.png +0 -0
  30. argus_server-2.2.1/docs/img/timeslots_view.png +0 -0
  31. argus_server-2.2.1/docs/img/unsaved_recurrence.png +0 -0
  32. argus_server-2.2.1/docs/img/user_menu.png +0 -0
  33. {argus_server-2.1.0 → argus_server-2.2.1}/docs/integrations/glue-services/index.rst +44 -0
  34. {argus_server-2.1.0 → argus_server-2.2.1}/docs/reference/htmx-frontend.rst +26 -87
  35. {argus_server-2.1.0 → argus_server-2.2.1}/docs/user-manual.rst +354 -245
  36. {argus_server-2.1.0 → argus_server-2.2.1}/pyproject.toml +6 -7
  37. {argus_server-2.1.0 → argus_server-2.2.1}/requirements-django52.txt +1 -1
  38. {argus_server-2.1.0 → argus_server-2.2.1}/requirements.txt +1 -1
  39. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/constants.py +2 -8
  40. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/incident/constants.py +13 -12
  41. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/incident/filter.py +10 -23
  42. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/incident/utils.py +8 -0
  43. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/incident/views.py +1 -1
  44. argus_server-2.2.1/src/argus/htmx/settings.py +14 -0
  45. argus_server-2.2.1/src/argus/htmx/tailwindtheme/config.py +33 -0
  46. argus_server-2.2.1/src/argus/htmx/tailwindtheme/get_tailwind.py +28 -0
  47. argus_server-2.2.1/src/argus/htmx/tailwindtheme/utils.py +42 -0
  48. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/_incident_list_refresh_info.html +6 -5
  49. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/user/_incidents_table_layout_dropdown.html +3 -3
  50. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/user/_page_size_dropdown.html +3 -3
  51. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/user/_update_interval_dropdown.html +4 -4
  52. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/user/preferences/models.py +7 -7
  53. argus_server-2.2.1/src/argus/site/settings/backend.py +5 -0
  54. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/site/settings/base.py +15 -0
  55. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/site/settings/dev.py +1 -7
  56. argus_server-2.1.0/src/argus/site/settings/backend.py → argus_server-2.2.1/src/argus/site/settings/prod.py +11 -7
  57. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/site/settings/test_CI.py +2 -7
  58. argus_server-2.2.1/src/argus/version.py +1 -0
  59. argus_server-2.2.1/tests/util/__init__.py +0 -0
  60. {argus_server-2.1.0 → argus_server-2.2.1}/tox.ini +1 -1
  61. argus_server-2.1.0/CONTRIBUTORS.md +0 -10
  62. argus_server-2.1.0/docs/development/howtos/change-settings.rst +0 -46
  63. argus_server-2.1.0/src/argus/htmx/settings.py +0 -9
  64. argus_server-2.1.0/src/argus/site/settings/prod.py +0 -12
  65. argus_server-2.1.0/src/argus/version.py +0 -1
  66. {argus_server-2.1.0 → argus_server-2.2.1}/.git-blame-ignore-revs +0 -0
  67. {argus_server-2.1.0 → argus_server-2.2.1}/.gitattributes +0 -0
  68. {argus_server-2.1.0 → argus_server-2.2.1}/.gitignore +0 -0
  69. {argus_server-2.1.0 → argus_server-2.2.1}/.mailmap +0 -0
  70. {argus_server-2.1.0 → argus_server-2.2.1}/.pre-commit-config.yaml +0 -0
  71. {argus_server-2.1.0 → argus_server-2.2.1}/.readthedocs.yaml +0 -0
  72. {argus_server-2.1.0 → argus_server-2.2.1}/.sonarcloud.properties +0 -0
  73. {argus_server-2.1.0 → argus_server-2.2.1}/LICENSE +0 -0
  74. {argus_server-2.1.0 → argus_server-2.2.1}/MAINTAINING.rst +0 -0
  75. {argus_server-2.1.0 → argus_server-2.2.1}/UPGRADING.md +0 -0
  76. {argus_server-2.1.0 → argus_server-2.2.1}/changelog.d/.gitkeep +0 -0
  77. {argus_server-2.1.0 → argus_server-2.2.1}/cmd.sh-template +0 -0
  78. {argus_server-2.1.0 → argus_server-2.2.1}/codecov.yml +0 -0
  79. {argus_server-2.1.0 → argus_server-2.2.1}/constraints.txt +0 -0
  80. {argus_server-2.1.0 → argus_server-2.2.1}/docker/dockersettings.py +0 -0
  81. {argus_server-2.1.0 → argus_server-2.2.1}/docs/Makefile +0 -0
  82. {argus_server-2.1.0 → argus_server-2.2.1}/docs/_exts/djangodocs.py +0 -0
  83. {argus_server-2.1.0 → argus_server-2.2.1}/docs/_static/.gitkeep +0 -0
  84. {argus_server-2.1.0 → argus_server-2.2.1}/docs/_templates/.gitkeep +0 -0
  85. {argus_server-2.1.0 → argus_server-2.2.1}/docs/about-argus.rst +0 -0
  86. {argus_server-2.1.0 → argus_server-2.2.1}/docs/conf.py +0 -0
  87. {argus_server-2.1.0 → argus_server-2.2.1}/docs/customization/htmx-frontend.rst +0 -0
  88. {argus_server-2.1.0 → argus_server-2.2.1}/docs/customization.rst +0 -0
  89. {argus_server-2.1.0 → argus_server-2.2.1}/docs/development/howtos/add-more-preferences.rst +0 -0
  90. {argus_server-2.1.0 → argus_server-2.2.1}/docs/development/howtos/changelog-entry.rst +0 -0
  91. {argus_server-2.1.0 → argus_server-2.2.1}/docs/development/howtos/commit-messages.rst +0 -0
  92. {argus_server-2.1.0 → argus_server-2.2.1}/docs/development/howtos/customizing-filtering.rst +0 -0
  93. {argus_server-2.1.0 → argus_server-2.2.1}/docs/development/howtos/federated-logins.rst +0 -0
  94. {argus_server-2.1.0 → argus_server-2.2.1}/docs/development/howtos/htmx-frontend/column_for_specific_ack_group.rst +0 -0
  95. {argus_server-2.1.0 → argus_server-2.2.1}/docs/development/howtos/htmx-frontend/column_for_specific_tag.rst +0 -0
  96. {argus_server-2.1.0 → argus_server-2.2.1}/docs/development/howtos/htmx-frontend/custom-incident-actions.rst +0 -0
  97. {argus_server-2.1.0 → argus_server-2.2.1}/docs/development/howtos/htmx-frontend/customize-filtering.rst +0 -0
  98. {argus_server-2.1.0 → argus_server-2.2.1}/docs/development/howtos/htmx-frontend/dependencies.rst +0 -0
  99. {argus_server-2.1.0 → argus_server-2.2.1}/docs/development/howtos/htmx-frontend/font_awesome.rst +0 -0
  100. {argus_server-2.1.0 → argus_server-2.2.1}/docs/development/howtos/htmx-frontend/override_templates.rst +0 -0
  101. {argus_server-2.1.0 → argus_server-2.2.1}/docs/development/howtos/htmx-frontend.rst +0 -0
  102. {argus_server-2.1.0 → argus_server-2.2.1}/docs/development/howtos/notification-system-testing.rst +0 -0
  103. {argus_server-2.1.0 → argus_server-2.2.1}/docs/development/howtos/recover-from-migration-trouble.rst +0 -0
  104. {argus_server-2.1.0 → argus_server-2.2.1}/docs/development/howtos/regenerate-the-ER-diagram.rst +0 -0
  105. {argus_server-2.1.0 → argus_server-2.2.1}/docs/development/howtos/release-checklist.rst +0 -0
  106. {argus_server-2.1.0 → argus_server-2.2.1}/docs/development/howtos/toggle-django-debug-toolbar.rst +0 -0
  107. {argus_server-2.1.0 → argus_server-2.2.1}/docs/development/howtos/vendor-a-repo.rst +0 -0
  108. {argus_server-2.1.0 → argus_server-2.2.1}/docs/development/howtos.rst +0 -0
  109. {argus_server-2.1.0 → argus_server-2.2.1}/docs/development/management-commands.rst +0 -0
  110. {argus_server-2.1.0 → argus_server-2.2.1}/docs/development/notes.rst +0 -0
  111. {argus_server-2.1.0 → argus_server-2.2.1}/docs/development/troubleshooting.rst +0 -0
  112. {argus_server-2.1.0 → argus_server-2.2.1}/docs/django_settings.py +0 -0
  113. {argus_server-2.1.0 → argus_server-2.2.1}/docs/index.rst +0 -0
  114. {argus_server-2.1.0 → argus_server-2.2.1}/docs/integrations/_note.rst +0 -0
  115. {argus_server-2.1.0 → argus_server-2.2.1}/docs/integrations/glue-services/writing-glueservices.rst +0 -0
  116. {argus_server-2.1.0 → argus_server-2.2.1}/docs/integrations/index.rst +0 -0
  117. {argus_server-2.1.0 → argus_server-2.2.1}/docs/integrations/notifications/email-plugin.rst +0 -0
  118. {argus_server-2.1.0 → argus_server-2.2.1}/docs/integrations/notifications/index.rst +0 -0
  119. {argus_server-2.1.0 → argus_server-2.2.1}/docs/integrations/notifications/sms-plugin.rst +0 -0
  120. {argus_server-2.1.0 → argus_server-2.2.1}/docs/integrations/notifications/writing-notification-plugins.rst +0 -0
  121. {argus_server-2.1.0 → argus_server-2.2.1}/docs/integrations/ticket-systems/index.rst +0 -0
  122. {argus_server-2.1.0 → argus_server-2.2.1}/docs/integrations/ticket-systems/writing-ticket-system-plugins.rst +0 -0
  123. {argus_server-2.1.0 → argus_server-2.2.1}/docs/make.bat +0 -0
  124. {argus_server-2.1.0 → argus_server-2.2.1}/docs/reference/admin.rst +0 -0
  125. {argus_server-2.1.0 → argus_server-2.2.1}/docs/reference/api/v2.rst +0 -0
  126. {argus_server-2.1.0 → argus_server-2.2.1}/docs/reference/api.rst +0 -0
  127. {argus_server-2.1.0 → argus_server-2.2.1}/docs/reference/authentication.rst +0 -0
  128. {argus_server-2.1.0 → argus_server-2.2.1}/docs/reference/glossary.rst +0 -0
  129. {argus_server-2.1.0 → argus_server-2.2.1}/docs/reference/img/ER_model.png +0 -0
  130. {argus_server-2.1.0 → argus_server-2.2.1}/docs/reference/models.rst +0 -0
  131. {argus_server-2.1.0 → argus_server-2.2.1}/docs/reference/site-specific-settings.rst +0 -0
  132. {argus_server-2.1.0 → argus_server-2.2.1}/docs/reference.rst +0 -0
  133. {argus_server-2.1.0 → argus_server-2.2.1}/manage.py +0 -0
  134. {argus_server-2.1.0 → argus_server-2.2.1}/requirements/dev.txt +0 -0
  135. {argus_server-2.1.0 → argus_server-2.2.1}/requirements/django52.txt +0 -0
  136. {argus_server-2.1.0 → argus_server-2.2.1}/requirements/please-pip-sync.txt +0 -0
  137. {argus_server-2.1.0 → argus_server-2.2.1}/requirements/test.txt +0 -0
  138. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/__init__.py +0 -0
  139. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/auth/__init__.py +0 -0
  140. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/auth/admin.py +0 -0
  141. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/auth/apps.py +0 -0
  142. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/auth/authentication.py +0 -0
  143. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/auth/context_processors.py +0 -0
  144. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/auth/drftoken/__init__.py +0 -0
  145. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/auth/drftoken/serializers.py +0 -0
  146. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/auth/drftoken/urls.py +0 -0
  147. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/auth/drftoken/views.py +0 -0
  148. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/auth/factories.py +0 -0
  149. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/auth/knox/__init__.py +0 -0
  150. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/auth/knox/serializers.py +0 -0
  151. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/auth/knox/urls.py +0 -0
  152. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/auth/knox/views.py +0 -0
  153. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/auth/management/__init__.py +0 -0
  154. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/auth/management/commands/__init__.py +0 -0
  155. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/auth/management/commands/changeuser.py +0 -0
  156. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/auth/management/commands/createuser.py +0 -0
  157. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/auth/management/commands/grantsuperuser.py +0 -0
  158. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/auth/management/commands/revokesuperuser.py +0 -0
  159. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/auth/management/commands/setpassword.py +0 -0
  160. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/auth/migrations/0001_initial.py +0 -0
  161. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/auth/migrations/0002_alter_user_first_name.py +0 -0
  162. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/auth/migrations/0002_squashed_auth_20250512_add_preferences_model.py +0 -0
  163. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/auth/migrations/0003_delete_phonenumber.py +0 -0
  164. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/auth/migrations/0004_add_preferences_model.py +0 -0
  165. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/auth/migrations/__init__.py +0 -0
  166. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/auth/models.py +0 -0
  167. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/auth/serializers.py +0 -0
  168. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/auth/urls.py +0 -0
  169. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/auth/utils.py +0 -0
  170. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/auth/views.py +0 -0
  171. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/base/__init__.py +0 -0
  172. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/base/apps.py +0 -0
  173. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/base/static/favicon.svg +0 -0
  174. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/base/templates/base.html +0 -0
  175. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/base/templates/index.html +0 -0
  176. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/compat.py +0 -0
  177. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/dev/__init__.py +0 -0
  178. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/dev/apps.py +0 -0
  179. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/dev/management/__init__.py +0 -0
  180. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/dev/management/commands/__init__.py +0 -0
  181. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/dev/management/commands/bulk_incidents.py +0 -0
  182. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/dev/management/commands/check_token_expiry.py +0 -0
  183. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/dev/management/commands/close_incident.py +0 -0
  184. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/dev/management/commands/create_fake_incident.py +0 -0
  185. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/dev/management/commands/create_source.py +0 -0
  186. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/dev/management/commands/gen_secret_key.py +0 -0
  187. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/dev/management/commands/initial_setup.py +0 -0
  188. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/dev/management/commands/list_filters.py +0 -0
  189. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/dev/management/commands/stresstest.py +0 -0
  190. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/dev/management/commands/toggle_profile_activation.py +0 -0
  191. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/dev/utils.py +0 -0
  192. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/drf/__init__.py +0 -0
  193. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/drf/permissions.py +0 -0
  194. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/filter/__init__.py +0 -0
  195. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/filter/apps.py +0 -0
  196. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/filter/checks.py +0 -0
  197. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/filter/default.py +0 -0
  198. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/filter/factories.py +0 -0
  199. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/filter/filters.py +0 -0
  200. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/filter/filterwrapper.py +0 -0
  201. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/filter/primitive_serializers.py +0 -0
  202. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/filter/queryset_filters.py +0 -0
  203. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/filter/serializers.py +0 -0
  204. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/filter/swappable/__init__.py +0 -0
  205. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/filter/swappable/serializers.py +0 -0
  206. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/filter/validators.py +0 -0
  207. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/__init__.py +0 -0
  208. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/appconfig.py +0 -0
  209. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/apps.py +0 -0
  210. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/auth/__init__.py +0 -0
  211. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/auth/views.py +0 -0
  212. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/checks.py +0 -0
  213. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/context_processors.py +0 -0
  214. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/dateformat/__init__.py +0 -0
  215. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/dateformat/constants.py +0 -0
  216. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/defaults.py +0 -0
  217. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/destination/__init__.py +0 -0
  218. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/destination/forms.py +0 -0
  219. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/destination/urls.py +0 -0
  220. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/destination/views.py +0 -0
  221. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/htmx_urls.py +0 -0
  222. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/incident/__init__.py +0 -0
  223. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/incident/customization.py +0 -0
  224. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/incident/forms.py +0 -0
  225. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/incident/urls.py +0 -0
  226. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/management/__init__.py +0 -0
  227. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/management/commands/__init__.py +0 -0
  228. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/management/commands/tailwind_config.py +0 -0
  229. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/middleware.py +0 -0
  230. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/migrations/0001_initial.py +0 -0
  231. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/migrations/__init__.py +0 -0
  232. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/modals.py +0 -0
  233. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/models.py +0 -0
  234. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/notificationprofile/__init__.py +0 -0
  235. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/notificationprofile/urls.py +0 -0
  236. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/notificationprofile/views.py +0 -0
  237. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/request.py +0 -0
  238. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/root_urls.py +0 -0
  239. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/static/htmx-2.0.2.min.js +0 -0
  240. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/static/hyperscript-0.9.13.min.js +0 -0
  241. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/static/logo_white.svg +0 -0
  242. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/static/styles.css +0 -0
  243. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/tailwindtheme/README.md +0 -0
  244. {argus_server-2.1.0/src/argus/htmx/templatetags → argus_server-2.2.1/src/argus/htmx/tailwindtheme}/__init__.py +0 -0
  245. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/tailwindtheme/snippets/10-tailwind.css +0 -0
  246. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/tailwindtheme/snippets/15-alert-message.css +0 -0
  247. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/tailwindtheme/snippets/20-loading-box.css +0 -0
  248. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/tailwindtheme/styles.css +0 -0
  249. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/tailwindtheme/tailwind.config.js +0 -0
  250. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/django/forms/div.html +0 -0
  251. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/django/forms/widgets/attrs.html +0 -0
  252. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/_base_confirm_dialog.html +0 -0
  253. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/_base_form_modal.html +0 -0
  254. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/_base_form_modal_button.html +0 -0
  255. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/_base_form_modal_experimental.html +0 -0
  256. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/base.html +0 -0
  257. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/destination/_collapse_with_forms.html +0 -0
  258. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/destination/_content.html +0 -0
  259. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/destination/_create_form.html +0 -0
  260. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/destination/_delete_form.html +0 -0
  261. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/destination/_edit_form.html +0 -0
  262. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/destination/_form_list.html +0 -0
  263. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/destination/destination_list.html +0 -0
  264. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/forms/badge_dropdown_select_multiple.html +0 -0
  265. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/forms/checkbox_select_multiple.html +0 -0
  266. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/forms/dropdown_select_multiple.html +0 -0
  267. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/forms/input_field.html +0 -0
  268. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/_base.html +0 -0
  269. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/_base_incident_update_modal.html +0 -0
  270. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/_delete_filter_confirm_dialog.html +0 -0
  271. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/_existing_filters.html +0 -0
  272. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/_filter_controls.html +0 -0
  273. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/_filter_create_modal.html +0 -0
  274. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/_filter_delete_dropdown.html +0 -0
  275. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/_filter_select.html +0 -0
  276. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/_filter_update_dropdown.html +0 -0
  277. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/_incident_acknowledge_modal.html +0 -0
  278. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/_incident_close_modal.html +0 -0
  279. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/_incident_filterbox.html +0 -0
  280. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/_incident_list_menubar.html +0 -0
  281. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/_incident_list_update_menu.html +0 -0
  282. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/_incident_reopen_modal.html +0 -0
  283. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/_incident_table.html +0 -0
  284. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/_incident_table_cell_wrapper_default.html +0 -0
  285. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/_incident_table_cell_wrapper_link_to_details.html +0 -0
  286. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/_incident_table_paginator.html +0 -0
  287. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/_incident_table_paginator_pageitem.html +0 -0
  288. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/_incident_table_row.html +0 -0
  289. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/_incident_table_rows.html +0 -0
  290. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/_incident_ticket_autocreate_modal.html +0 -0
  291. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/_incident_ticket_edit_modal.html +0 -0
  292. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/_incident_ticket_manual_create_modal.html +0 -0
  293. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/_update_filter_confirm_dialog.html +0 -0
  294. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/cells/_incident_ack.html +0 -0
  295. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/cells/_incident_actions.html +0 -0
  296. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/cells/_incident_checkbox.html +0 -0
  297. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/cells/_incident_color_status.html +0 -0
  298. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/cells/_incident_combined_status.html +0 -0
  299. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/cells/_incident_description.html +0 -0
  300. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/cells/_incident_filterable_column_header.html +0 -0
  301. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/cells/_incident_level.html +0 -0
  302. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/cells/_incident_list_select_all_checkbox_header.html +0 -0
  303. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/cells/_incident_pk.html +0 -0
  304. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/cells/_incident_source.html +0 -0
  305. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/cells/_incident_start_time.html +0 -0
  306. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/cells/_incident_start_time_header.html +0 -0
  307. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/cells/_incident_status.html +0 -0
  308. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/cells/_incident_tag.html +0 -0
  309. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/cells/_incident_ticket.html +0 -0
  310. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/filter_list.html +0 -0
  311. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/incident_detail.html +0 -0
  312. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/incident_list.html +0 -0
  313. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/responses/_incident_list_refresh.html +0 -0
  314. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/incident/responses/empty_list_item.html +0 -0
  315. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/notificationprofile/_notificationprofile_form.html +0 -0
  316. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/notificationprofile/_notificationprofile_form_div.html +0 -0
  317. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/notificationprofile/base.html +0 -0
  318. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/notificationprofile/notificationprofile_confirm_delete.html +0 -0
  319. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/notificationprofile/notificationprofile_form.html +0 -0
  320. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/notificationprofile/notificationprofile_list.html +0 -0
  321. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/timeslot/_delete_timeslot_confirm_dialog.html +0 -0
  322. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/timeslot/_timeslot_detail.html +0 -0
  323. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/timeslot/_timeslot_form.html +0 -0
  324. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/timeslot/base.html +0 -0
  325. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/timeslot/checkbox_option.html +0 -0
  326. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/timeslot/timerecurrence_div.html +0 -0
  327. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/timeslot/timeslot_confirm_delete.html +0 -0
  328. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/timeslot/timeslot_form.html +0 -0
  329. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/timeslot/timeslot_list.html +0 -0
  330. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/user/_current_theme.html +0 -0
  331. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/user/_dateformat_dropdown.html +0 -0
  332. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/user/_theme_dropdown.html +0 -0
  333. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/user/_user_menu.html +0 -0
  334. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/user/_user_menu_logout.html +0 -0
  335. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/user/_user_menu_notification_config.html +0 -0
  336. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/user/_user_menu_user_preferences.html +0 -0
  337. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx/user/preferences.html +0 -0
  338. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/htmx_base.html +0 -0
  339. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/messages/_notification_message.html +0 -0
  340. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/messages/_notification_messages.html +0 -0
  341. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/messages/_notification_messages_htmx_append.html +0 -0
  342. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/registration/login.html +0 -0
  343. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/tailwind/styles.css +0 -0
  344. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/tailwind/tailwind.config.js +0 -0
  345. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templates/tailwind_whitelist.html +0 -0
  346. {argus_server-2.1.0/src/argus/htmx/themes → argus_server-2.2.1/src/argus/htmx/templatetags}/__init__.py +0 -0
  347. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/templatetags/argus_htmx.py +0 -0
  348. {argus_server-2.1.0/src/argus/htmx/timeslot → argus_server-2.2.1/src/argus/htmx/themes}/__init__.py +0 -0
  349. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/themes/constants.py +0 -0
  350. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/themes/utils.py +0 -0
  351. {argus_server-2.1.0/src/argus/htmx/user/preferences → argus_server-2.2.1/src/argus/htmx/timeslot}/__init__.py +0 -0
  352. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/timeslot/urls.py +0 -0
  353. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/timeslot/views.py +0 -0
  354. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/urls.py +0 -0
  355. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/user/__init__.py +0 -0
  356. {argus_server-2.1.0/src/argus/incident/migrations → argus_server-2.2.1/src/argus/htmx/user/preferences}/__init__.py +0 -0
  357. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/user/urls.py +0 -0
  358. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/user/views.py +0 -0
  359. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/utils.py +0 -0
  360. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/views.py +0 -0
  361. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/htmx/widgets.py +0 -0
  362. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/incident/__init__.py +0 -0
  363. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/incident/admin.py +0 -0
  364. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/incident/apps.py +0 -0
  365. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/incident/constants.py +0 -0
  366. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/incident/factories.py +0 -0
  367. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/incident/fields.py +0 -0
  368. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/incident/forms.py +0 -0
  369. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/incident/migrations/0001_initial.py +0 -0
  370. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/incident/migrations/0001_squashed_incident_20250514.py +0 -0
  371. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/incident/migrations/0002_empty_source_incident_id.py +0 -0
  372. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/incident/migrations/0003_incident_level.py +0 -0
  373. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/incident/migrations/0004_add_ChangeEvent_proxy.py +0 -0
  374. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/incident/migrations/0005_alter_event_type.py +0 -0
  375. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/incident/migrations/0006_incident_search_text.py +0 -0
  376. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/incident/migrations/0007_alter_event_type.py +0 -0
  377. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/incident/migrations/0008_incident_metadata.py +0 -0
  378. {argus_server-2.1.0 → argus_server-2.2.1}/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.1/src/argus/incident/migrations}/__init__.py +0 -0
  380. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/incident/models.py +0 -0
  381. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/incident/serializers.py +0 -0
  382. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/incident/signals.py +0 -0
  383. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/incident/templates/incident/admin/fake_incident_add_form.html +0 -0
  384. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/incident/templates/incident/admin/incident_change_list.html +0 -0
  385. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/incident/templates/incident/admin/widgets/split_datetime_infinity.html +0 -0
  386. {argus_server-2.1.0 → argus_server-2.2.1}/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.1/src/argus/incident/ticket}/__init__.py +0 -0
  388. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/incident/ticket/base.py +0 -0
  389. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/incident/ticket/dummy.py +0 -0
  390. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/incident/ticket/utils.py +0 -0
  391. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/incident/urls.py +0 -0
  392. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/incident/validators.py +0 -0
  393. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/incident/views.py +0 -0
  394. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/incident/widgets.py +0 -0
  395. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/notificationprofile/__init__.py +0 -0
  396. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/notificationprofile/admin.py +0 -0
  397. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/notificationprofile/apps.py +0 -0
  398. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/notificationprofile/checks.py +0 -0
  399. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/notificationprofile/factories.py +0 -0
  400. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/notificationprofile/media/__init__.py +0 -0
  401. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/notificationprofile/media/base.py +0 -0
  402. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/notificationprofile/media/email.py +0 -0
  403. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/notificationprofile/media/sms_as_email.py +0 -0
  404. {argus_server-2.1.0 → argus_server-2.2.1}/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.1}/src/argus/notificationprofile/migrations/0001_squashed_notificationprofile_20250512.py +0 -0
  406. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/notificationprofile/migrations/0016_noop.py +0 -0
  407. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/notificationprofile/migrations/0017_change_event_type_to_event_types.py +0 -0
  408. {argus_server-2.1.0 → argus_server-2.2.1}/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.1/src/argus/notificationprofile/migrations}/__init__.py +0 -0
  410. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/notificationprofile/models.py +0 -0
  411. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/notificationprofile/serializers.py +0 -0
  412. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/notificationprofile/signals.py +0 -0
  413. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/notificationprofile/templates/notificationprofile/email.html +0 -0
  414. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/notificationprofile/templates/notificationprofile/email.txt +0 -0
  415. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/notificationprofile/templates/schemawrapper.html +0 -0
  416. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/notificationprofile/urls.py +0 -0
  417. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/notificationprofile/views.py +0 -0
  418. {argus_server-2.1.0/src/argus/util → argus_server-2.2.1/src/argus/site}/__init__.py +0 -0
  419. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/site/api_v2_urls.py +0 -0
  420. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/site/logging.py +0 -0
  421. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/site/serializers.py +0 -0
  422. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/site/settings/__init__.py +0 -0
  423. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/site/settings/_serializers.py +0 -0
  424. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/site/settings/dockerdev.py +0 -0
  425. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/site/urls.py +0 -0
  426. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/site/utils.py +0 -0
  427. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/site/views.py +0 -0
  428. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/site/wsgi.py +0 -0
  429. {argus_server-2.1.0/tests → argus_server-2.2.1/src/argus/util}/__init__.py +0 -0
  430. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/util/admin_utils.py +0 -0
  431. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/util/datetime_utils.py +0 -0
  432. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/util/testing.py +0 -0
  433. {argus_server-2.1.0 → argus_server-2.2.1}/src/argus/util/utils.py +0 -0
  434. {argus_server-2.1.0/tests/auth/management_commands → argus_server-2.2.1/tests}/__init__.py +0 -0
  435. {argus_server-2.1.0 → argus_server-2.2.1}/tests/auth/__init__.py +0 -0
  436. {argus_server-2.1.0/tests/dev → argus_server-2.2.1/tests/auth/management_commands}/__init__.py +0 -0
  437. {argus_server-2.1.0 → argus_server-2.2.1}/tests/auth/management_commands/test_changeuser.py +0 -0
  438. {argus_server-2.1.0 → argus_server-2.2.1}/tests/auth/management_commands/test_createuser.py +0 -0
  439. {argus_server-2.1.0 → argus_server-2.2.1}/tests/auth/models.py +0 -0
  440. {argus_server-2.1.0 → argus_server-2.2.1}/tests/auth/test_auth.py +0 -0
  441. {argus_server-2.1.0 → argus_server-2.2.1}/tests/auth/test_knox_views.py +0 -0
  442. {argus_server-2.1.0 → argus_server-2.2.1}/tests/auth/test_models.py +0 -0
  443. {argus_server-2.1.0 → argus_server-2.2.1}/tests/auth/test_utils.py +0 -0
  444. {argus_server-2.1.0 → argus_server-2.2.1}/tests/auth/test_views.py +0 -0
  445. {argus_server-2.1.0/tests/filter → argus_server-2.2.1/tests/dev}/__init__.py +0 -0
  446. {argus_server-2.1.0 → argus_server-2.2.1}/tests/dev/test_bulk_incidents.py +0 -0
  447. {argus_server-2.1.0 → argus_server-2.2.1}/tests/dev/test_check_token_expiry.py +0 -0
  448. {argus_server-2.1.0 → argus_server-2.2.1}/tests/dev/test_close_incident.py +0 -0
  449. {argus_server-2.1.0 → argus_server-2.2.1}/tests/dev/test_create_fake_incident.py +0 -0
  450. {argus_server-2.1.0 → argus_server-2.2.1}/tests/dev/test_create_source.py +0 -0
  451. {argus_server-2.1.0 → argus_server-2.2.1}/tests/dev/test_gen_secret_key.py +0 -0
  452. {argus_server-2.1.0 → argus_server-2.2.1}/tests/dev/test_initial_setup.py +0 -0
  453. {argus_server-2.1.0 → argus_server-2.2.1}/tests/dev/test_list_filters.py +0 -0
  454. {argus_server-2.1.0 → argus_server-2.2.1}/tests/dev/test_toggle_profile_activation.py +0 -0
  455. {argus_server-2.1.0 → argus_server-2.2.1}/tests/dev/test_utils.py +0 -0
  456. {argus_server-2.1.0/tests/htmx → argus_server-2.2.1/tests/filter}/__init__.py +0 -0
  457. {argus_server-2.1.0 → argus_server-2.2.1}/tests/filter/dummyplugin.py +0 -0
  458. {argus_server-2.1.0 → argus_server-2.2.1}/tests/filter/test_filterplugin.py +0 -0
  459. {argus_server-2.1.0 → argus_server-2.2.1}/tests/filter/test_filterwrapper.py +0 -0
  460. {argus_server-2.1.0 → argus_server-2.2.1}/tests/filter/test_queryset_filters.py +0 -0
  461. {argus_server-2.1.0 → argus_server-2.2.1}/tests/helpers.py +0 -0
  462. {argus_server-2.1.0/tests/htmx/incident → argus_server-2.2.1/tests/htmx}/__init__.py +0 -0
  463. {argus_server-2.1.0/tests/htmx/notificationprofile → argus_server-2.2.1/tests/htmx/incident}/__init__.py +0 -0
  464. {argus_server-2.1.0 → argus_server-2.2.1}/tests/htmx/incident/test_customization.py +0 -0
  465. {argus_server-2.1.0 → argus_server-2.2.1}/tests/htmx/incident/test_filter.py +0 -0
  466. {argus_server-2.1.0 → argus_server-2.2.1}/tests/htmx/incident/test_utils.py +0 -0
  467. {argus_server-2.1.0/tests/incident/fixtures → argus_server-2.2.1/tests/htmx/notificationprofile}/__init__.py +0 -0
  468. {argus_server-2.1.0 → argus_server-2.2.1}/tests/htmx/notificationprofile/test_forms.py +0 -0
  469. {argus_server-2.1.0 → argus_server-2.2.1}/tests/htmx/test_incident.py +0 -0
  470. {argus_server-2.1.0 → argus_server-2.2.1}/tests/htmx/test_middleware.py +0 -0
  471. {argus_server-2.1.0 → argus_server-2.2.1}/tests/htmx/test_utils.py +0 -0
  472. {argus_server-2.1.0 → argus_server-2.2.1}/tests/incident/__init__.py +0 -0
  473. {argus_server-2.1.0/tests/incident/ticket_plugins → argus_server-2.2.1/tests/incident/fixtures}/__init__.py +0 -0
  474. {argus_server-2.1.0 → argus_server-2.2.1}/tests/incident/test_change_event.py +0 -0
  475. {argus_server-2.1.0 → argus_server-2.2.1}/tests/incident/test_create_fake_incident.py +0 -0
  476. {argus_server-2.1.0 → argus_server-2.2.1}/tests/incident/test_event.py +0 -0
  477. {argus_server-2.1.0 → argus_server-2.2.1}/tests/incident/test_filters.py +0 -0
  478. {argus_server-2.1.0 → argus_server-2.2.1}/tests/incident/test_incident.py +0 -0
  479. {argus_server-2.1.0 → argus_server-2.2.1}/tests/incident/test_incident_fields.py +0 -0
  480. {argus_server-2.1.0 → argus_server-2.2.1}/tests/incident/test_queryset.py +0 -0
  481. {argus_server-2.1.0 → argus_server-2.2.1}/tests/incident/test_serializers.py +0 -0
  482. {argus_server-2.1.0 → argus_server-2.2.1}/tests/incident/test_source_system.py +0 -0
  483. {argus_server-2.1.0 → argus_server-2.2.1}/tests/incident/test_source_system_type.py +0 -0
  484. {argus_server-2.1.0 → argus_server-2.2.1}/tests/incident/test_views.py +0 -0
  485. {argus_server-2.1.0/tests/incident/unit → argus_server-2.2.1/tests/incident/ticket_plugins}/__init__.py +0 -0
  486. {argus_server-2.1.0 → argus_server-2.2.1}/tests/incident/ticket_plugins/test_base.py +0 -0
  487. {argus_server-2.1.0 → argus_server-2.2.1}/tests/incident/ticket_plugins/test_dummy.py +0 -0
  488. {argus_server-2.1.0 → argus_server-2.2.1}/tests/incident/ticket_plugins/test_utils.py +0 -0
  489. {argus_server-2.1.0/tests/notificationprofile/destinations → argus_server-2.2.1/tests/incident/unit}/__init__.py +0 -0
  490. {argus_server-2.1.0 → argus_server-2.2.1}/tests/incident/unit/test_incident_details_url.py +0 -0
  491. {argus_server-2.1.0 → argus_server-2.2.1}/tests/migration_example.py +0 -0
  492. {argus_server-2.1.0 → argus_server-2.2.1}/tests/notificationprofile/__init__.py +0 -0
  493. {argus_server-2.1.0/tests/notificationprofile/migrations → argus_server-2.2.1/tests/notificationprofile/destinations}/__init__.py +0 -0
  494. {argus_server-2.1.0 → argus_server-2.2.1}/tests/notificationprofile/destinations/test_email.py +0 -0
  495. {argus_server-2.1.0 → argus_server-2.2.1}/tests/notificationprofile/destinations/test_sms.py +0 -0
  496. {argus_server-2.1.0/tests/site → argus_server-2.2.1/tests/notificationprofile/migrations}/__init__.py +0 -0
  497. {argus_server-2.1.0 → argus_server-2.2.1}/tests/notificationprofile/test_github236.py +0 -0
  498. {argus_server-2.1.0 → argus_server-2.2.1}/tests/notificationprofile/test_media.py +0 -0
  499. {argus_server-2.1.0 → argus_server-2.2.1}/tests/notificationprofile/test_models.py +0 -0
  500. {argus_server-2.1.0 → argus_server-2.2.1}/tests/notificationprofile/test_serializers.py +0 -0
  501. {argus_server-2.1.0 → argus_server-2.2.1}/tests/notificationprofile/test_views.py +0 -0
  502. {argus_server-2.1.0/tests/util → argus_server-2.2.1/tests/site}/__init__.py +0 -0
  503. {argus_server-2.1.0 → argus_server-2.2.1}/tests/site/test_misc.py +0 -0
  504. {argus_server-2.1.0 → argus_server-2.2.1}/tests/site/test_settings_helpers.py +0 -0
  505. {argus_server-2.1.0 → argus_server-2.2.1}/tests/site/test_settings_validators.py +0 -0
  506. {argus_server-2.1.0 → argus_server-2.2.1}/tests/site/test_views.py +0 -0
  507. {argus_server-2.1.0 → argus_server-2.2.1}/tests/util/test_utils.py +0 -0
@@ -8,6 +8,85 @@ This project uses [*towncrier*](https://towncrier.readthedocs.io/) and the chang
8
8
 
9
9
  <!-- towncrier release notes start -->
10
10
 
11
+ ## [2.2.1] - 2025-09-18
12
+
13
+ ### Fixed, frontend
14
+
15
+ * The incident list layout preference selector is no longer buggy
16
+
17
+ ### Fixed
18
+
19
+ * Some problems with the dockerfile for production was fixed (see /docker), and
20
+ the README and the comments in the Dockerfile have been improved
21
+
22
+ ### Changed
23
+
24
+ * Updated the installation instructions in the README, should have ben part of
25
+ 2.2.0
26
+
27
+ ## [2.2.0] - 2025-08-26
28
+
29
+ The most important bit of this release is the new (old) way to install and set
30
+ up argus-server, including the frontend. Please see the NOTES.
31
+
32
+ ### Added, frontend
33
+
34
+ - Added option 'Last 3 days' to the Timeframe selector.
35
+ ([#1440](https://github.com/Uninett/Argus/issues/1440))
36
+
37
+ ### Added
38
+
39
+ - Added rule to Makefile that downloads standalone tailwind CLI client as per
40
+ the version configured in `src/argus/htmx/tailwindtheme/config.py`.
41
+ ([#1531](https://github.com/Uninett/Argus/issues/1531))
42
+ - Add a fledgling CONTRIBUTING.rst for onboarding new developers.
43
+ - Added documentation for the rules in the `Makefile`.
44
+ - Two new development howtos have been added, with tips for using git and
45
+ GitHub.
46
+
47
+ ### Changed
48
+
49
+ - Make example production Docker image work properly for Argus 2
50
+ - The settings files have changed, since the HTMx frontend app is now included
51
+ by default. The frontend settings has been merged in and no longer need the
52
+ settings overriding machinery. It is no longer necessary to install the
53
+ frontend with `pip install argus-server[htmx]`, just `pip install
54
+ argus-server` will do.
55
+ - Updated contributors file with contributors that joined after 2019, and added
56
+ a howto for how to keep the list updated.
57
+
58
+
59
+ ## [2.1.1] - 2025-07-16
60
+
61
+ ### Added
62
+
63
+ - Added new sections to the user manual: *How to select from existing themes*,
64
+ *How to add your own theme*,
65
+ *How to choose what columns are shown in the incidents table*, and *How to
66
+ change the date and time format*.
67
+ ([#1491](https://github.com/Uninett/Argus/issues/1491))
68
+
69
+ ### Changed
70
+
71
+ - Added info about more glue services.
72
+ ([#1508](https://github.com/Uninett/Argus/issues/1508))
73
+ - Updated the README with a link and info about the publicly accessible
74
+ demo-site.
75
+ ([#1510](https://github.com/Uninett/Argus/issues/1510))
76
+ - Updated the content of the user manual (outdated text, screenshots and broken
77
+ external links). ([#1490](https://github.com/Uninett/Argus/issues/1490))
78
+
79
+ ### Fixed
80
+
81
+ - Fixed automatic ticket creation, which was broken by
82
+ [#1497](https://github.com/Uninett/Argus/issues/1497)
83
+ ([#1516](https://github.com/Uninett/Argus/issues/1516))
84
+ - Made `docker compose up` for development work with Argus 2.1+
85
+ ([#1513](https://github.com/Uninett/Argus/issues/1513))
86
+ - Fixed broken links in the user manual.
87
+ ([#1492](https://github.com/Uninett/Argus/issues/1492))
88
+
89
+
11
90
  ## [2.1.0] - 2025-06-30
12
91
 
13
92
  ### 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,39 @@
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.1] - 2025-09-18
8
+
9
+ A bug in the user preference added in 2.1.0 was fixed, otherwise this is just
10
+ a polish this, document that, upgrade some dependencies release.
11
+
12
+ ## [2.2.0] - 2025-08-26
13
+
14
+ It is no longer necessary to install the frontend with `pip install
15
+ argus-server[htmx]`, just `pip install argus-server` will do. The first method
16
+ will still work but is deprecated.
17
+
18
+ The included settings files were using the `update_settings` trick to set up
19
+ the frontend, this has now been fixed. If you do not use separate settings
20
+ files you should not need to do anything, but if you *do* use your own
21
+ settings-files you no longer need invoke `update_settings`, just choose what
22
+ settings-file to import/copy from with care.
23
+
24
+ It is now also possible to look at only the last three days of incidents in the
25
+ frontend.
26
+
27
+ All other changes are related to maintenance and/or development. The rules in
28
+ the Makefile have been documented. A rule for controlling/upgrading the version
29
+ of Tailwind and Daisy UI has been added to the Makefile, and compiling CSS via
30
+ `make tailwind` will be using the versions downloaded with the new rule.
31
+
32
+
33
+ ## [2.1.1] - 2025-07-16
34
+
35
+ Updated the user manual in the docs, added the link to the Argus demo site
36
+ (https://argus-demo.uninett.no) to the README and fixed automatic ticket creation.
37
+
38
+
6
39
  ## [2.1.0] - 2025-06-30
7
40
 
8
41
  One new user preference.
@@ -10,14 +43,6 @@ One new user preference.
10
43
  One new and one changed management command, both for better manipulation of
11
44
  incidents via the CLI.
12
45
 
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
46
 
22
47
  ## [2.0.0] - 2025-05-26
23
48
 
@@ -44,25 +69,6 @@ and corresponding imports if you are getting the error
44
69
  `django.core.exceptions.ImproperlyConfigured: Application labels aren't unique,
45
70
  duplicates: django_htmx`.
46
71
 
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
72
 
67
73
  ## [1.37.0] - 2025-05-14
68
74
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: argus-server
3
- Version: 2.1.0
3
+ Version: 2.2.1
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
 
@@ -98,40 +105,35 @@ There are several ways to install Argus.
98
105
  * Docker and Docker Compose to run Argus in Docker. This will also run
99
106
  a PostgreSQL server for you.
100
107
 
101
- #### Optional: Frontend
102
-
103
- You need to have the frontend-specific dependencies installed.
104
-
105
- ```
106
- pip install argus-server[htmx]
107
- ```
108
-
109
- will do it.
110
-
111
108
  #### Optional: Federated login for frontend
112
109
 
113
110
  See [Federated Login @ Read The Docs](https://argus-server.rtfd.io/en/latest/development/howtos/federated-logins.html) or [local copy of Federated Login docs](docs/development/howtos/federated-logins.rst).
114
111
 
115
- ### Install Argus using pip
112
+ ### Install Argus using pip from PyPI
116
113
 
117
- You can also install Argus with `pip` via PyPI. The package name is `argus-server`:
114
+ You can install Argus with `pip` via PyPI. The package name is `argus-server`:
118
115
  ```console
119
116
  $ pip install argus-server
120
117
  ```
121
118
 
122
- If you are using the PyPI package in production, please note: The file
123
- `requirements.txt` contains the pinned versions of dependencies that the
124
- release was tested on. The file `constraints.txt` is for controlling versions
125
- of sub-dependencies so as to not poison the pyproject.toml.
119
+ If you are using the PyPI wheel package in production, please note: It does
120
+ not use pinned dependencies. (There is no single official standard for pinned
121
+ dependencies in Python as of yet.)
126
122
 
127
- To update the dependency lock-files, use `tox`:
123
+ ### Install Argus from source
128
124
 
125
+ Download the source code first.
129
126
  ```console
130
- $ pip install "tox>=4"
131
- $ tox run -e upgrade-deps -- -U
127
+ $ git clone https://github.com/Uninett/Argus.git
128
+ $ cd Argus
132
129
  ```
133
130
 
134
- To upgrade a single dependency, replace the `-U` flag with `-P PACKAGENAME`.
131
+ PyPI has sdists of the source if you do not want to use git.
132
+
133
+ The file `requirements.txt` contains the pinned versions of dependencies that
134
+ the release was tested on. The file `constraints.txt` is for controlling
135
+ versions of sub-dependencies so as to not poison the pyproject.toml. The wheel
136
+ package does not contain either of these two files.
135
137
 
136
138
  To install from the lock-file use pip:
137
139
 
@@ -139,6 +141,8 @@ To install from the lock-file use pip:
139
141
  $ pip install -c constraints.txt --upgrade -r requirements.txt
140
142
  ```
141
143
 
144
+ ### First run
145
+
142
146
  Now change and adapt [Argus' settings](#settings-in-argus) according to your needs.
143
147
 
144
148
  Run the initial Argus setup, and make note of the admin password that is generated:
@@ -160,6 +164,17 @@ Then run the Argus API server:
160
164
  $ python manage.py runserver
161
165
  ```
162
166
 
167
+ #### Update pinned dependencies
168
+
169
+ To update the dependency lock-files, use `tox`:
170
+
171
+ ```console
172
+ $ pip install "tox>=4"
173
+ $ tox run -e upgrade-deps -- -U
174
+ ```
175
+
176
+ To upgrade a single dependency, replace the `-U` flag with `-P PACKAGENAME`.
177
+
163
178
  ### Setup Argus using Docker Compose
164
179
 
165
180
  Download the source code first.
@@ -215,7 +230,7 @@ $ git clone https://github.com/Uninett/Argus.git
215
230
  $ cd Argus
216
231
  ```
217
232
 
218
- We recommend using virtualenv or virtaulenvwrapper to create
233
+ We recommend using virtualenv or virtualenvwrapper to create
219
234
  a place to stash Argus' dependencies.
220
235
 
221
236
  Create and activate a Python virtual environment.
@@ -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
 
@@ -37,40 +46,35 @@ There are several ways to install Argus.
37
46
  * Docker and Docker Compose to run Argus in Docker. This will also run
38
47
  a PostgreSQL server for you.
39
48
 
40
- #### Optional: Frontend
41
-
42
- You need to have the frontend-specific dependencies installed.
43
-
44
- ```
45
- pip install argus-server[htmx]
46
- ```
47
-
48
- will do it.
49
-
50
49
  #### Optional: Federated login for frontend
51
50
 
52
51
  See [Federated Login @ Read The Docs](https://argus-server.rtfd.io/en/latest/development/howtos/federated-logins.html) or [local copy of Federated Login docs](docs/development/howtos/federated-logins.rst).
53
52
 
54
- ### Install Argus using pip
53
+ ### Install Argus using pip from PyPI
55
54
 
56
- You can also install Argus with `pip` via PyPI. The package name is `argus-server`:
55
+ You can install Argus with `pip` via PyPI. The package name is `argus-server`:
57
56
  ```console
58
57
  $ pip install argus-server
59
58
  ```
60
59
 
61
- If you are using the PyPI package in production, please note: The file
62
- `requirements.txt` contains the pinned versions of dependencies that the
63
- release was tested on. The file `constraints.txt` is for controlling versions
64
- of sub-dependencies so as to not poison the pyproject.toml.
60
+ If you are using the PyPI wheel package in production, please note: It does
61
+ not use pinned dependencies. (There is no single official standard for pinned
62
+ dependencies in Python as of yet.)
65
63
 
66
- To update the dependency lock-files, use `tox`:
64
+ ### Install Argus from source
67
65
 
66
+ Download the source code first.
68
67
  ```console
69
- $ pip install "tox>=4"
70
- $ tox run -e upgrade-deps -- -U
68
+ $ git clone https://github.com/Uninett/Argus.git
69
+ $ cd Argus
71
70
  ```
72
71
 
73
- To upgrade a single dependency, replace the `-U` flag with `-P PACKAGENAME`.
72
+ PyPI has sdists of the source if you do not want to use git.
73
+
74
+ The file `requirements.txt` contains the pinned versions of dependencies that
75
+ the release was tested on. The file `constraints.txt` is for controlling
76
+ versions of sub-dependencies so as to not poison the pyproject.toml. The wheel
77
+ package does not contain either of these two files.
74
78
 
75
79
  To install from the lock-file use pip:
76
80
 
@@ -78,6 +82,8 @@ To install from the lock-file use pip:
78
82
  $ pip install -c constraints.txt --upgrade -r requirements.txt
79
83
  ```
80
84
 
85
+ ### First run
86
+
81
87
  Now change and adapt [Argus' settings](#settings-in-argus) according to your needs.
82
88
 
83
89
  Run the initial Argus setup, and make note of the admin password that is generated:
@@ -99,6 +105,17 @@ Then run the Argus API server:
99
105
  $ python manage.py runserver
100
106
  ```
101
107
 
108
+ #### Update pinned dependencies
109
+
110
+ To update the dependency lock-files, use `tox`:
111
+
112
+ ```console
113
+ $ pip install "tox>=4"
114
+ $ tox run -e upgrade-deps -- -U
115
+ ```
116
+
117
+ To upgrade a single dependency, replace the `-U` flag with `-P PACKAGENAME`.
118
+
102
119
  ### Setup Argus using Docker Compose
103
120
 
104
121
  Download the source code first.
@@ -154,7 +171,7 @@ $ git clone https://github.com/Uninett/Argus.git
154
171
  $ cd Argus
155
172
  ```
156
173
 
157
- We recommend using virtualenv or virtaulenvwrapper to create
174
+ We recommend using virtualenv or virtualenvwrapper to create
158
175
  a place to stash Argus' dependencies.
159
176
 
160
177
  Create and activate a Python virtual environment.
@@ -1,12 +1,23 @@
1
1
  # Defines a production image for the Argus API server
2
- # Needs the repository root directory as its context
3
- FROM python:3.12
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 -f Dockerfile ..
6
+ #
7
+ # If you're in the repository root try:
8
+ # docker build -f docker/Dockerfile .
9
+
10
+ FROM python:3.13-trixie
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
 
15
+ ENV VIRTUAL_ENV=/opt/venv
16
+ RUN python3 -m venv $VIRTUAL_ENV
17
+ ENV PATH="$VIRTUAL_ENV/bin:$PATH"
18
+
8
19
  # 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]'
20
+ RUN pip install psycopg2-binary django-extensions python-dotenv gunicorn
10
21
 
11
22
  # Make an unprivileged user to run the server
12
23
  RUN useradd --system argus
@@ -15,7 +26,7 @@ RUN mkdir -p /static && chown argus /static
15
26
  ENV STATIC_ROOT=/static
16
27
 
17
28
  COPY . /src
18
- RUN pip install '/src[spa]' && rm -rf /src
29
+ RUN pip install '/src' && rm -rf /src
19
30
 
20
31
  # Install API backend settings suitable for Docker deployment
21
32
  RUN mkdir /extrapython
@@ -21,17 +21,29 @@ docker build -t argus -f docker/Dockerfile .
21
21
  ## Configuration of the running container
22
22
 
23
23
  This image runs with default production settings, with a few tweaks from
24
- [dockersettings.py](dockersettings.py). This means that the most useful
25
- settings can be overriden through the use of environment variables exported to
26
- the container. Consult the documentation section on [site-specific
24
+ [dockersettings.py](dockersettings.py). The most useful settings can be
25
+ overriden through the use of environment variables exported to the container,
26
+ but some MUST be set.
27
+
28
+ The required environment variables in question are:
29
+
30
+ * `ARGUS_FRONTEND_URL` (url)
31
+ * `DATABASE_URL` (example: postgresql://argus:PASSWORD@HOST.NAME:5432/argus)
32
+ * `DEFAULT_FROM_EMAIL` (email address)
33
+ * `EMAIL_HOST` (hostname or ip address)
34
+ * `SECRET_KEY` (long random string, around 50 characters is good)
35
+
36
+ The `SECRET_KEY` and `DATABASE_URL` should be protected from prying eyes.
37
+
38
+ Consult the documentation section on [site-specific
27
39
  settings](http://argus-server.rtfd.io/en/latest/site-specific-settings.html).
40
+ for further details.
28
41
 
29
42
  ## Limitations
30
43
 
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.
44
+ This is not a complete Argus environment. This image only defines the web
45
+ server component: API and frontend. It still depends on a PostgreSQL server to
46
+ be functional.
35
47
 
36
48
  For a full production environment example, take a look at
37
49
  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