argus-server 2.2.1__tar.gz → 2.2.2__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 (521) hide show
  1. {argus_server-2.2.1 → argus_server-2.2.2}/CHANGELOG.md +22 -0
  2. {argus_server-2.2.1 → argus_server-2.2.2}/Dockerfile +6 -2
  3. {argus_server-2.2.1 → argus_server-2.2.2}/Makefile +5 -2
  4. {argus_server-2.2.1 → argus_server-2.2.2}/NOTES.md +10 -0
  5. {argus_server-2.2.1 → argus_server-2.2.2}/PKG-INFO +1 -1
  6. {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/howtos-for-github.rst +1 -1
  7. argus_server-2.2.2/docs/development/styleguide.rst +23 -0
  8. {argus_server-2.2.1 → argus_server-2.2.2}/docs/development.rst +1 -0
  9. {argus_server-2.2.1 → argus_server-2.2.2}/docs/integrations/glue-services/index.rst +11 -0
  10. {argus_server-2.2.1 → argus_server-2.2.2}/pyproject.toml +6 -1
  11. {argus_server-2.2.1 → argus_server-2.2.2}/requirements-django52.txt +3 -3
  12. {argus_server-2.2.1 → argus_server-2.2.2}/requirements.txt +3 -3
  13. argus_server-2.2.2/src/argus/htmx/forms.py +73 -0
  14. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/incident/filter.py +11 -7
  15. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/incident/forms.py +1 -1
  16. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/static/styles.css +50 -14
  17. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/tailwindtheme/config.py +1 -0
  18. argus_server-2.2.2/src/argus/htmx/templates/django/forms/errors/dict/ul.html +5 -0
  19. argus_server-2.2.2/src/argus/htmx/templates/django/forms/errors/list/ul.html +6 -0
  20. argus_server-2.2.2/src/argus/htmx/templates/django/forms/field.html +20 -0
  21. argus_server-2.2.2/src/argus/htmx/templates/django/forms/label.html +13 -0
  22. argus_server-2.2.2/src/argus/htmx/templates/django/forms/widgets/checkbox.html +6 -0
  23. argus_server-2.2.2/src/argus/htmx/templates/django/forms/widgets/checkbox_option.html +12 -0
  24. argus_server-2.2.2/src/argus/htmx/templates/django/forms/widgets/classless_attrs.html +9 -0
  25. argus_server-2.2.2/src/argus/htmx/templates/django/forms/widgets/date.html +6 -0
  26. argus_server-2.2.2/src/argus/htmx/templates/django/forms/widgets/datetime.html +6 -0
  27. argus_server-2.2.2/src/argus/htmx/templates/django/forms/widgets/input.html +6 -0
  28. argus_server-2.2.2/src/argus/htmx/templates/django/forms/widgets/radio_option.html +12 -0
  29. argus_server-2.2.2/src/argus/htmx/templates/django/forms/widgets/range.html +5 -0
  30. argus_server-2.2.2/src/argus/htmx/templates/django/forms/widgets/select.html +12 -0
  31. argus_server-2.2.2/src/argus/htmx/templates/django/forms/widgets/time.html +8 -0
  32. argus_server-2.2.2/src/argus/htmx/templates/htmx/styleguide.html +188 -0
  33. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/timeslot/timerecurrence_div.html +1 -1
  34. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/registration/login.html +1 -9
  35. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/timeslot/views.py +0 -1
  36. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/urls.py +2 -1
  37. argus_server-2.2.2/src/argus/htmx/views.py +39 -0
  38. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/media/__init__.py +24 -4
  39. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/media/base.py +40 -4
  40. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/media/email.py +18 -22
  41. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/media/sms_as_email.py +11 -15
  42. argus_server-2.2.2/src/argus/version.py +1 -0
  43. {argus_server-2.2.1 → argus_server-2.2.2}/tests/notificationprofile/test_media.py +21 -5
  44. argus_server-2.2.1/docker-entrypoint.sh +0 -7
  45. argus_server-2.2.1/manage.py +0 -24
  46. argus_server-2.2.1/src/argus/htmx/templates/django/forms/div.html +0 -28
  47. argus_server-2.2.1/src/argus/htmx/views.py +0 -9
  48. argus_server-2.2.1/src/argus/version.py +0 -1
  49. {argus_server-2.2.1 → argus_server-2.2.2}/.git-blame-ignore-revs +0 -0
  50. {argus_server-2.2.1 → argus_server-2.2.2}/.gitattributes +0 -0
  51. {argus_server-2.2.1 → argus_server-2.2.2}/.gitignore +0 -0
  52. {argus_server-2.2.1 → argus_server-2.2.2}/.mailmap +0 -0
  53. {argus_server-2.2.1 → argus_server-2.2.2}/.pre-commit-config.yaml +0 -0
  54. {argus_server-2.2.1 → argus_server-2.2.2}/.readthedocs.yaml +0 -0
  55. {argus_server-2.2.1 → argus_server-2.2.2}/.sonarcloud.properties +0 -0
  56. {argus_server-2.2.1 → argus_server-2.2.2}/CONTRIBUTING.rst +0 -0
  57. {argus_server-2.2.1 → argus_server-2.2.2}/CONTRIBUTORS.md +0 -0
  58. {argus_server-2.2.1 → argus_server-2.2.2}/LICENSE +0 -0
  59. {argus_server-2.2.1 → argus_server-2.2.2}/MAINTAINING.rst +0 -0
  60. {argus_server-2.2.1 → argus_server-2.2.2}/README.md +0 -0
  61. {argus_server-2.2.1 → argus_server-2.2.2}/UPGRADING.md +0 -0
  62. {argus_server-2.2.1 → argus_server-2.2.2}/changelog.d/.gitkeep +0 -0
  63. {argus_server-2.2.1 → argus_server-2.2.2}/cmd.sh-template +0 -0
  64. {argus_server-2.2.1 → argus_server-2.2.2}/codecov.yml +0 -0
  65. {argus_server-2.2.1 → argus_server-2.2.2}/constraints.txt +0 -0
  66. {argus_server-2.2.1 → argus_server-2.2.2}/docker/Dockerfile +0 -0
  67. {argus_server-2.2.1 → argus_server-2.2.2}/docker/README.md +0 -0
  68. {argus_server-2.2.1 → argus_server-2.2.2}/docker/docker-entrypoint.sh +0 -0
  69. {argus_server-2.2.1 → argus_server-2.2.2}/docker/dockersettings.py +0 -0
  70. {argus_server-2.2.1 → argus_server-2.2.2}/docker-compose.yml +0 -0
  71. {argus_server-2.2.1 → argus_server-2.2.2}/docs/Makefile +0 -0
  72. {argus_server-2.2.1 → argus_server-2.2.2}/docs/_exts/djangodocs.py +0 -0
  73. {argus_server-2.2.1 → argus_server-2.2.2}/docs/_static/.gitkeep +0 -0
  74. {argus_server-2.2.1 → argus_server-2.2.2}/docs/_templates/.gitkeep +0 -0
  75. {argus_server-2.2.1 → argus_server-2.2.2}/docs/about-argus.rst +0 -0
  76. {argus_server-2.2.1 → argus_server-2.2.2}/docs/conf.py +0 -0
  77. {argus_server-2.2.1 → argus_server-2.2.2}/docs/customization/htmx-frontend.rst +0 -0
  78. {argus_server-2.2.1 → argus_server-2.2.2}/docs/customization.rst +0 -0
  79. {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/add-more-preferences.rst +0 -0
  80. {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/change-settings.rst +0 -0
  81. {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/changelog-entry.rst +0 -0
  82. {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/commit-messages.rst +0 -0
  83. {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/customizing-filtering.rst +0 -0
  84. {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/federated-logins.rst +0 -0
  85. {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/howtos-for-git.rst +0 -0
  86. {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/htmx-frontend/column_for_specific_ack_group.rst +0 -0
  87. {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/htmx-frontend/column_for_specific_tag.rst +0 -0
  88. {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/htmx-frontend/custom-incident-actions.rst +0 -0
  89. {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/htmx-frontend/customize-filtering.rst +0 -0
  90. {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/htmx-frontend/dependencies.rst +0 -0
  91. {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/htmx-frontend/font_awesome.rst +0 -0
  92. {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/htmx-frontend/override_templates.rst +0 -0
  93. {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/htmx-frontend.rst +0 -0
  94. {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/notification-system-testing.rst +0 -0
  95. {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/recover-from-migration-trouble.rst +0 -0
  96. {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/regenerate-the-ER-diagram.rst +0 -0
  97. {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/release-checklist.rst +0 -0
  98. {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/toggle-django-debug-toolbar.rst +0 -0
  99. {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/update-contributors.rst +0 -0
  100. {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/vendor-a-repo.rst +0 -0
  101. {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos.rst +0 -0
  102. {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/makefile-rules.rst +0 -0
  103. {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/management-commands.rst +0 -0
  104. {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/notes.rst +0 -0
  105. {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/troubleshooting.rst +0 -0
  106. {argus_server-2.2.1 → argus_server-2.2.2}/docs/django_settings.py +0 -0
  107. {argus_server-2.2.1 → argus_server-2.2.2}/docs/img/default_timeslot.png +0 -0
  108. {argus_server-2.2.1 → argus_server-2.2.2}/docs/img/destinations_view.png +0 -0
  109. {argus_server-2.2.1 → argus_server-2.2.2}/docs/img/example_timeslot.png +0 -0
  110. {argus_server-2.2.1 → argus_server-2.2.2}/docs/img/filter_selector.png +0 -0
  111. {argus_server-2.2.1 → argus_server-2.2.2}/docs/img/incident_details_view.png +0 -0
  112. {argus_server-2.2.1 → argus_server-2.2.2}/docs/img/incidents_filter.png +0 -0
  113. {argus_server-2.2.1 → argus_server-2.2.2}/docs/img/incidents_page.png +0 -0
  114. {argus_server-2.2.1 → argus_server-2.2.2}/docs/img/new_notification_profile.png +0 -0
  115. {argus_server-2.2.1 → argus_server-2.2.2}/docs/img/notification_profiles.png +0 -0
  116. {argus_server-2.2.1 → argus_server-2.2.2}/docs/img/synced_destination_delete_error.png +0 -0
  117. {argus_server-2.2.1 → argus_server-2.2.2}/docs/img/timeslots_view.png +0 -0
  118. {argus_server-2.2.1 → argus_server-2.2.2}/docs/img/unsaved_recurrence.png +0 -0
  119. {argus_server-2.2.1 → argus_server-2.2.2}/docs/img/user_menu.png +0 -0
  120. {argus_server-2.2.1 → argus_server-2.2.2}/docs/index.rst +0 -0
  121. {argus_server-2.2.1 → argus_server-2.2.2}/docs/integrations/_note.rst +0 -0
  122. {argus_server-2.2.1 → argus_server-2.2.2}/docs/integrations/glue-services/writing-glueservices.rst +0 -0
  123. {argus_server-2.2.1 → argus_server-2.2.2}/docs/integrations/index.rst +0 -0
  124. {argus_server-2.2.1 → argus_server-2.2.2}/docs/integrations/notifications/email-plugin.rst +0 -0
  125. {argus_server-2.2.1 → argus_server-2.2.2}/docs/integrations/notifications/index.rst +0 -0
  126. {argus_server-2.2.1 → argus_server-2.2.2}/docs/integrations/notifications/sms-plugin.rst +0 -0
  127. {argus_server-2.2.1 → argus_server-2.2.2}/docs/integrations/notifications/writing-notification-plugins.rst +0 -0
  128. {argus_server-2.2.1 → argus_server-2.2.2}/docs/integrations/ticket-systems/index.rst +0 -0
  129. {argus_server-2.2.1 → argus_server-2.2.2}/docs/integrations/ticket-systems/writing-ticket-system-plugins.rst +0 -0
  130. {argus_server-2.2.1 → argus_server-2.2.2}/docs/make.bat +0 -0
  131. {argus_server-2.2.1 → argus_server-2.2.2}/docs/reference/admin.rst +0 -0
  132. {argus_server-2.2.1 → argus_server-2.2.2}/docs/reference/api/v2.rst +0 -0
  133. {argus_server-2.2.1 → argus_server-2.2.2}/docs/reference/api.rst +0 -0
  134. {argus_server-2.2.1 → argus_server-2.2.2}/docs/reference/authentication.rst +0 -0
  135. {argus_server-2.2.1 → argus_server-2.2.2}/docs/reference/glossary.rst +0 -0
  136. {argus_server-2.2.1 → argus_server-2.2.2}/docs/reference/htmx-frontend.rst +0 -0
  137. {argus_server-2.2.1 → argus_server-2.2.2}/docs/reference/img/ER_model.png +0 -0
  138. {argus_server-2.2.1 → argus_server-2.2.2}/docs/reference/models.rst +0 -0
  139. {argus_server-2.2.1 → argus_server-2.2.2}/docs/reference/site-specific-settings.rst +0 -0
  140. {argus_server-2.2.1 → argus_server-2.2.2}/docs/reference.rst +0 -0
  141. {argus_server-2.2.1 → argus_server-2.2.2}/docs/user-manual.rst +0 -0
  142. {argus_server-2.2.1 → argus_server-2.2.2}/requirements/dev.txt +0 -0
  143. {argus_server-2.2.1 → argus_server-2.2.2}/requirements/django52.txt +0 -0
  144. {argus_server-2.2.1 → argus_server-2.2.2}/requirements/please-pip-sync.txt +0 -0
  145. {argus_server-2.2.1 → argus_server-2.2.2}/requirements/test.txt +0 -0
  146. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/__init__.py +0 -0
  147. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/__init__.py +0 -0
  148. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/admin.py +0 -0
  149. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/apps.py +0 -0
  150. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/authentication.py +0 -0
  151. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/context_processors.py +0 -0
  152. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/drftoken/__init__.py +0 -0
  153. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/drftoken/serializers.py +0 -0
  154. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/drftoken/urls.py +0 -0
  155. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/drftoken/views.py +0 -0
  156. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/factories.py +0 -0
  157. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/knox/__init__.py +0 -0
  158. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/knox/serializers.py +0 -0
  159. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/knox/urls.py +0 -0
  160. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/knox/views.py +0 -0
  161. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/management/__init__.py +0 -0
  162. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/management/commands/__init__.py +0 -0
  163. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/management/commands/changeuser.py +0 -0
  164. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/management/commands/createuser.py +0 -0
  165. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/management/commands/grantsuperuser.py +0 -0
  166. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/management/commands/revokesuperuser.py +0 -0
  167. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/management/commands/setpassword.py +0 -0
  168. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/migrations/0001_initial.py +0 -0
  169. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/migrations/0002_alter_user_first_name.py +0 -0
  170. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/migrations/0002_squashed_auth_20250512_add_preferences_model.py +0 -0
  171. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/migrations/0003_delete_phonenumber.py +0 -0
  172. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/migrations/0004_add_preferences_model.py +0 -0
  173. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/migrations/__init__.py +0 -0
  174. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/models.py +0 -0
  175. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/serializers.py +0 -0
  176. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/urls.py +0 -0
  177. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/utils.py +0 -0
  178. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/views.py +0 -0
  179. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/base/__init__.py +0 -0
  180. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/base/apps.py +0 -0
  181. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/base/static/favicon.svg +0 -0
  182. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/base/templates/base.html +0 -0
  183. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/base/templates/index.html +0 -0
  184. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/compat.py +0 -0
  185. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/dev/__init__.py +0 -0
  186. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/dev/apps.py +0 -0
  187. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/dev/management/__init__.py +0 -0
  188. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/dev/management/commands/__init__.py +0 -0
  189. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/dev/management/commands/bulk_incidents.py +0 -0
  190. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/dev/management/commands/check_token_expiry.py +0 -0
  191. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/dev/management/commands/close_incident.py +0 -0
  192. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/dev/management/commands/create_fake_incident.py +0 -0
  193. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/dev/management/commands/create_source.py +0 -0
  194. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/dev/management/commands/gen_secret_key.py +0 -0
  195. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/dev/management/commands/initial_setup.py +0 -0
  196. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/dev/management/commands/list_filters.py +0 -0
  197. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/dev/management/commands/stresstest.py +0 -0
  198. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/dev/management/commands/toggle_profile_activation.py +0 -0
  199. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/dev/utils.py +0 -0
  200. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/drf/__init__.py +0 -0
  201. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/drf/permissions.py +0 -0
  202. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/filter/__init__.py +0 -0
  203. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/filter/apps.py +0 -0
  204. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/filter/checks.py +0 -0
  205. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/filter/default.py +0 -0
  206. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/filter/factories.py +0 -0
  207. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/filter/filters.py +0 -0
  208. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/filter/filterwrapper.py +0 -0
  209. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/filter/primitive_serializers.py +0 -0
  210. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/filter/queryset_filters.py +0 -0
  211. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/filter/serializers.py +0 -0
  212. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/filter/swappable/__init__.py +0 -0
  213. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/filter/swappable/serializers.py +0 -0
  214. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/filter/validators.py +0 -0
  215. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/__init__.py +0 -0
  216. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/appconfig.py +0 -0
  217. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/apps.py +0 -0
  218. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/auth/__init__.py +0 -0
  219. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/auth/views.py +0 -0
  220. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/checks.py +0 -0
  221. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/constants.py +0 -0
  222. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/context_processors.py +0 -0
  223. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/dateformat/__init__.py +0 -0
  224. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/dateformat/constants.py +0 -0
  225. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/defaults.py +0 -0
  226. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/destination/__init__.py +0 -0
  227. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/destination/forms.py +0 -0
  228. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/destination/urls.py +0 -0
  229. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/destination/views.py +0 -0
  230. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/htmx_urls.py +0 -0
  231. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/incident/__init__.py +0 -0
  232. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/incident/constants.py +0 -0
  233. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/incident/customization.py +0 -0
  234. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/incident/urls.py +0 -0
  235. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/incident/utils.py +0 -0
  236. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/incident/views.py +0 -0
  237. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/management/__init__.py +0 -0
  238. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/management/commands/__init__.py +0 -0
  239. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/management/commands/tailwind_config.py +0 -0
  240. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/middleware.py +0 -0
  241. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/migrations/0001_initial.py +0 -0
  242. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/migrations/__init__.py +0 -0
  243. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/modals.py +0 -0
  244. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/models.py +0 -0
  245. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/notificationprofile/__init__.py +0 -0
  246. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/notificationprofile/urls.py +0 -0
  247. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/notificationprofile/views.py +0 -0
  248. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/request.py +0 -0
  249. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/root_urls.py +0 -0
  250. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/settings.py +0 -0
  251. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/static/htmx-2.0.2.min.js +0 -0
  252. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/static/hyperscript-0.9.13.min.js +0 -0
  253. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/static/logo_white.svg +0 -0
  254. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/tailwindtheme/README.md +0 -0
  255. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/tailwindtheme/__init__.py +0 -0
  256. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/tailwindtheme/get_tailwind.py +0 -0
  257. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/tailwindtheme/snippets/10-tailwind.css +0 -0
  258. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/tailwindtheme/snippets/15-alert-message.css +0 -0
  259. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/tailwindtheme/snippets/20-loading-box.css +0 -0
  260. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/tailwindtheme/styles.css +0 -0
  261. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/tailwindtheme/tailwind.config.js +0 -0
  262. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/tailwindtheme/utils.py +0 -0
  263. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/django/forms/widgets/attrs.html +0 -0
  264. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/_base_confirm_dialog.html +0 -0
  265. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/_base_form_modal.html +0 -0
  266. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/_base_form_modal_button.html +0 -0
  267. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/_base_form_modal_experimental.html +0 -0
  268. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/base.html +0 -0
  269. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/destination/_collapse_with_forms.html +0 -0
  270. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/destination/_content.html +0 -0
  271. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/destination/_create_form.html +0 -0
  272. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/destination/_delete_form.html +0 -0
  273. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/destination/_edit_form.html +0 -0
  274. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/destination/_form_list.html +0 -0
  275. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/destination/destination_list.html +0 -0
  276. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/forms/badge_dropdown_select_multiple.html +0 -0
  277. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/forms/checkbox_select_multiple.html +0 -0
  278. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/forms/dropdown_select_multiple.html +0 -0
  279. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/forms/input_field.html +0 -0
  280. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_base.html +0 -0
  281. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_base_incident_update_modal.html +0 -0
  282. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_delete_filter_confirm_dialog.html +0 -0
  283. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_existing_filters.html +0 -0
  284. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_filter_controls.html +0 -0
  285. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_filter_create_modal.html +0 -0
  286. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_filter_delete_dropdown.html +0 -0
  287. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_filter_select.html +0 -0
  288. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_filter_update_dropdown.html +0 -0
  289. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_incident_acknowledge_modal.html +0 -0
  290. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_incident_close_modal.html +0 -0
  291. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_incident_filterbox.html +0 -0
  292. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_incident_list_menubar.html +0 -0
  293. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_incident_list_refresh_info.html +0 -0
  294. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_incident_list_update_menu.html +0 -0
  295. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_incident_reopen_modal.html +0 -0
  296. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_incident_table.html +0 -0
  297. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_incident_table_cell_wrapper_default.html +0 -0
  298. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_incident_table_cell_wrapper_link_to_details.html +0 -0
  299. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_incident_table_paginator.html +0 -0
  300. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_incident_table_paginator_pageitem.html +0 -0
  301. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_incident_table_row.html +0 -0
  302. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_incident_table_rows.html +0 -0
  303. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_incident_ticket_autocreate_modal.html +0 -0
  304. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_incident_ticket_edit_modal.html +0 -0
  305. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_incident_ticket_manual_create_modal.html +0 -0
  306. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_update_filter_confirm_dialog.html +0 -0
  307. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/cells/_incident_ack.html +0 -0
  308. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/cells/_incident_actions.html +0 -0
  309. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/cells/_incident_checkbox.html +0 -0
  310. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/cells/_incident_color_status.html +0 -0
  311. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/cells/_incident_combined_status.html +0 -0
  312. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/cells/_incident_description.html +0 -0
  313. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/cells/_incident_filterable_column_header.html +0 -0
  314. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/cells/_incident_level.html +0 -0
  315. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/cells/_incident_list_select_all_checkbox_header.html +0 -0
  316. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/cells/_incident_pk.html +0 -0
  317. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/cells/_incident_source.html +0 -0
  318. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/cells/_incident_start_time.html +0 -0
  319. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/cells/_incident_start_time_header.html +0 -0
  320. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/cells/_incident_status.html +0 -0
  321. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/cells/_incident_tag.html +0 -0
  322. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/cells/_incident_ticket.html +0 -0
  323. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/filter_list.html +0 -0
  324. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/incident_detail.html +0 -0
  325. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/incident_list.html +0 -0
  326. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/responses/_incident_list_refresh.html +0 -0
  327. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/responses/empty_list_item.html +0 -0
  328. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/notificationprofile/_notificationprofile_form.html +0 -0
  329. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/notificationprofile/_notificationprofile_form_div.html +0 -0
  330. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/notificationprofile/base.html +0 -0
  331. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/notificationprofile/notificationprofile_confirm_delete.html +0 -0
  332. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/notificationprofile/notificationprofile_form.html +0 -0
  333. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/notificationprofile/notificationprofile_list.html +0 -0
  334. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/timeslot/_delete_timeslot_confirm_dialog.html +0 -0
  335. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/timeslot/_timeslot_detail.html +0 -0
  336. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/timeslot/_timeslot_form.html +0 -0
  337. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/timeslot/base.html +0 -0
  338. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/timeslot/checkbox_option.html +0 -0
  339. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/timeslot/timeslot_confirm_delete.html +0 -0
  340. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/timeslot/timeslot_form.html +0 -0
  341. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/timeslot/timeslot_list.html +0 -0
  342. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/user/_current_theme.html +0 -0
  343. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/user/_dateformat_dropdown.html +0 -0
  344. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/user/_incidents_table_layout_dropdown.html +0 -0
  345. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/user/_page_size_dropdown.html +0 -0
  346. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/user/_theme_dropdown.html +0 -0
  347. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/user/_update_interval_dropdown.html +0 -0
  348. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/user/_user_menu.html +0 -0
  349. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/user/_user_menu_logout.html +0 -0
  350. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/user/_user_menu_notification_config.html +0 -0
  351. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/user/_user_menu_user_preferences.html +0 -0
  352. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/user/preferences.html +0 -0
  353. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx_base.html +0 -0
  354. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/messages/_notification_message.html +0 -0
  355. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/messages/_notification_messages.html +0 -0
  356. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/messages/_notification_messages_htmx_append.html +0 -0
  357. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/tailwind/styles.css +0 -0
  358. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/tailwind/tailwind.config.js +0 -0
  359. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/tailwind_whitelist.html +0 -0
  360. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templatetags/__init__.py +0 -0
  361. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templatetags/argus_htmx.py +0 -0
  362. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/themes/__init__.py +0 -0
  363. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/themes/constants.py +0 -0
  364. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/themes/utils.py +0 -0
  365. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/timeslot/__init__.py +0 -0
  366. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/timeslot/urls.py +0 -0
  367. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/user/__init__.py +0 -0
  368. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/user/preferences/__init__.py +0 -0
  369. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/user/preferences/models.py +0 -0
  370. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/user/urls.py +0 -0
  371. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/user/views.py +0 -0
  372. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/utils.py +0 -0
  373. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/widgets.py +0 -0
  374. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/__init__.py +0 -0
  375. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/admin.py +0 -0
  376. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/apps.py +0 -0
  377. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/constants.py +0 -0
  378. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/factories.py +0 -0
  379. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/fields.py +0 -0
  380. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/forms.py +0 -0
  381. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/migrations/0001_initial.py +0 -0
  382. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/migrations/0001_squashed_incident_20250514.py +0 -0
  383. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/migrations/0002_empty_source_incident_id.py +0 -0
  384. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/migrations/0003_incident_level.py +0 -0
  385. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/migrations/0004_add_ChangeEvent_proxy.py +0 -0
  386. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/migrations/0005_alter_event_type.py +0 -0
  387. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/migrations/0006_incident_search_text.py +0 -0
  388. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/migrations/0007_alter_event_type.py +0 -0
  389. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/migrations/0008_incident_metadata.py +0 -0
  390. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/migrations/0009_use_bigautofield_on_quickly_growing_tables.py +0 -0
  391. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/migrations/__init__.py +0 -0
  392. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/models.py +0 -0
  393. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/serializers.py +0 -0
  394. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/signals.py +0 -0
  395. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/templates/incident/admin/fake_incident_add_form.html +0 -0
  396. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/templates/incident/admin/incident_change_list.html +0 -0
  397. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/templates/incident/admin/widgets/split_datetime_infinity.html +0 -0
  398. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/templates/incident/ticket/default_ticket_body.html +0 -0
  399. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/ticket/__init__.py +0 -0
  400. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/ticket/base.py +0 -0
  401. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/ticket/dummy.py +0 -0
  402. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/ticket/utils.py +0 -0
  403. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/urls.py +0 -0
  404. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/validators.py +0 -0
  405. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/views.py +0 -0
  406. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/widgets.py +0 -0
  407. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/__init__.py +0 -0
  408. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/admin.py +0 -0
  409. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/apps.py +0 -0
  410. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/checks.py +0 -0
  411. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/factories.py +0 -0
  412. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/migrations/0001_squashed_0015_remove_days_alter_days_array.py +0 -0
  413. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/migrations/0001_squashed_notificationprofile_20250512.py +0 -0
  414. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/migrations/0016_noop.py +0 -0
  415. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/migrations/0017_change_event_type_to_event_types.py +0 -0
  416. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/migrations/0018_remove_closed_and_unacked_from_filterblob.py +0 -0
  417. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/migrations/__init__.py +0 -0
  418. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/models.py +0 -0
  419. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/serializers.py +0 -0
  420. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/signals.py +0 -0
  421. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/templates/notificationprofile/email.html +0 -0
  422. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/templates/notificationprofile/email.txt +0 -0
  423. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/templates/schemawrapper.html +0 -0
  424. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/urls.py +0 -0
  425. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/views.py +0 -0
  426. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/site/__init__.py +0 -0
  427. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/site/api_v2_urls.py +0 -0
  428. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/site/logging.py +0 -0
  429. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/site/serializers.py +0 -0
  430. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/site/settings/__init__.py +0 -0
  431. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/site/settings/_serializers.py +0 -0
  432. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/site/settings/backend.py +0 -0
  433. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/site/settings/base.py +0 -0
  434. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/site/settings/dev.py +0 -0
  435. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/site/settings/dockerdev.py +0 -0
  436. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/site/settings/prod.py +0 -0
  437. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/site/settings/test_CI.py +0 -0
  438. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/site/urls.py +0 -0
  439. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/site/utils.py +0 -0
  440. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/site/views.py +0 -0
  441. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/site/wsgi.py +0 -0
  442. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/util/__init__.py +0 -0
  443. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/util/admin_utils.py +0 -0
  444. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/util/datetime_utils.py +0 -0
  445. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/util/testing.py +0 -0
  446. {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/util/utils.py +0 -0
  447. {argus_server-2.2.1 → argus_server-2.2.2}/tests/__init__.py +0 -0
  448. {argus_server-2.2.1 → argus_server-2.2.2}/tests/auth/__init__.py +0 -0
  449. {argus_server-2.2.1 → argus_server-2.2.2}/tests/auth/management_commands/__init__.py +0 -0
  450. {argus_server-2.2.1 → argus_server-2.2.2}/tests/auth/management_commands/test_changeuser.py +0 -0
  451. {argus_server-2.2.1 → argus_server-2.2.2}/tests/auth/management_commands/test_createuser.py +0 -0
  452. {argus_server-2.2.1 → argus_server-2.2.2}/tests/auth/models.py +0 -0
  453. {argus_server-2.2.1 → argus_server-2.2.2}/tests/auth/test_auth.py +0 -0
  454. {argus_server-2.2.1 → argus_server-2.2.2}/tests/auth/test_knox_views.py +0 -0
  455. {argus_server-2.2.1 → argus_server-2.2.2}/tests/auth/test_models.py +0 -0
  456. {argus_server-2.2.1 → argus_server-2.2.2}/tests/auth/test_utils.py +0 -0
  457. {argus_server-2.2.1 → argus_server-2.2.2}/tests/auth/test_views.py +0 -0
  458. {argus_server-2.2.1 → argus_server-2.2.2}/tests/dev/__init__.py +0 -0
  459. {argus_server-2.2.1 → argus_server-2.2.2}/tests/dev/test_bulk_incidents.py +0 -0
  460. {argus_server-2.2.1 → argus_server-2.2.2}/tests/dev/test_check_token_expiry.py +0 -0
  461. {argus_server-2.2.1 → argus_server-2.2.2}/tests/dev/test_close_incident.py +0 -0
  462. {argus_server-2.2.1 → argus_server-2.2.2}/tests/dev/test_create_fake_incident.py +0 -0
  463. {argus_server-2.2.1 → argus_server-2.2.2}/tests/dev/test_create_source.py +0 -0
  464. {argus_server-2.2.1 → argus_server-2.2.2}/tests/dev/test_gen_secret_key.py +0 -0
  465. {argus_server-2.2.1 → argus_server-2.2.2}/tests/dev/test_initial_setup.py +0 -0
  466. {argus_server-2.2.1 → argus_server-2.2.2}/tests/dev/test_list_filters.py +0 -0
  467. {argus_server-2.2.1 → argus_server-2.2.2}/tests/dev/test_toggle_profile_activation.py +0 -0
  468. {argus_server-2.2.1 → argus_server-2.2.2}/tests/dev/test_utils.py +0 -0
  469. {argus_server-2.2.1 → argus_server-2.2.2}/tests/filter/__init__.py +0 -0
  470. {argus_server-2.2.1 → argus_server-2.2.2}/tests/filter/dummyplugin.py +0 -0
  471. {argus_server-2.2.1 → argus_server-2.2.2}/tests/filter/test_filterplugin.py +0 -0
  472. {argus_server-2.2.1 → argus_server-2.2.2}/tests/filter/test_filterwrapper.py +0 -0
  473. {argus_server-2.2.1 → argus_server-2.2.2}/tests/filter/test_queryset_filters.py +0 -0
  474. {argus_server-2.2.1 → argus_server-2.2.2}/tests/helpers.py +0 -0
  475. {argus_server-2.2.1 → argus_server-2.2.2}/tests/htmx/__init__.py +0 -0
  476. {argus_server-2.2.1 → argus_server-2.2.2}/tests/htmx/incident/__init__.py +0 -0
  477. {argus_server-2.2.1 → argus_server-2.2.2}/tests/htmx/incident/test_customization.py +0 -0
  478. {argus_server-2.2.1 → argus_server-2.2.2}/tests/htmx/incident/test_filter.py +0 -0
  479. {argus_server-2.2.1 → argus_server-2.2.2}/tests/htmx/incident/test_utils.py +0 -0
  480. {argus_server-2.2.1 → argus_server-2.2.2}/tests/htmx/notificationprofile/__init__.py +0 -0
  481. {argus_server-2.2.1 → argus_server-2.2.2}/tests/htmx/notificationprofile/test_forms.py +0 -0
  482. {argus_server-2.2.1 → argus_server-2.2.2}/tests/htmx/test_incident.py +0 -0
  483. {argus_server-2.2.1 → argus_server-2.2.2}/tests/htmx/test_middleware.py +0 -0
  484. {argus_server-2.2.1 → argus_server-2.2.2}/tests/htmx/test_utils.py +0 -0
  485. {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/__init__.py +0 -0
  486. {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/fixtures/__init__.py +0 -0
  487. {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/test_change_event.py +0 -0
  488. {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/test_create_fake_incident.py +0 -0
  489. {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/test_event.py +0 -0
  490. {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/test_filters.py +0 -0
  491. {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/test_incident.py +0 -0
  492. {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/test_incident_fields.py +0 -0
  493. {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/test_queryset.py +0 -0
  494. {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/test_serializers.py +0 -0
  495. {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/test_source_system.py +0 -0
  496. {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/test_source_system_type.py +0 -0
  497. {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/test_views.py +0 -0
  498. {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/ticket_plugins/__init__.py +0 -0
  499. {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/ticket_plugins/test_base.py +0 -0
  500. {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/ticket_plugins/test_dummy.py +0 -0
  501. {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/ticket_plugins/test_utils.py +0 -0
  502. {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/unit/__init__.py +0 -0
  503. {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/unit/test_incident_details_url.py +0 -0
  504. {argus_server-2.2.1 → argus_server-2.2.2}/tests/migration_example.py +0 -0
  505. {argus_server-2.2.1 → argus_server-2.2.2}/tests/notificationprofile/__init__.py +0 -0
  506. {argus_server-2.2.1 → argus_server-2.2.2}/tests/notificationprofile/destinations/__init__.py +0 -0
  507. {argus_server-2.2.1 → argus_server-2.2.2}/tests/notificationprofile/destinations/test_email.py +0 -0
  508. {argus_server-2.2.1 → argus_server-2.2.2}/tests/notificationprofile/destinations/test_sms.py +0 -0
  509. {argus_server-2.2.1 → argus_server-2.2.2}/tests/notificationprofile/migrations/__init__.py +0 -0
  510. {argus_server-2.2.1 → argus_server-2.2.2}/tests/notificationprofile/test_github236.py +0 -0
  511. {argus_server-2.2.1 → argus_server-2.2.2}/tests/notificationprofile/test_models.py +0 -0
  512. {argus_server-2.2.1 → argus_server-2.2.2}/tests/notificationprofile/test_serializers.py +0 -0
  513. {argus_server-2.2.1 → argus_server-2.2.2}/tests/notificationprofile/test_views.py +0 -0
  514. {argus_server-2.2.1 → argus_server-2.2.2}/tests/site/__init__.py +0 -0
  515. {argus_server-2.2.1 → argus_server-2.2.2}/tests/site/test_misc.py +0 -0
  516. {argus_server-2.2.1 → argus_server-2.2.2}/tests/site/test_settings_helpers.py +0 -0
  517. {argus_server-2.2.1 → argus_server-2.2.2}/tests/site/test_settings_validators.py +0 -0
  518. {argus_server-2.2.1 → argus_server-2.2.2}/tests/site/test_views.py +0 -0
  519. {argus_server-2.2.1 → argus_server-2.2.2}/tests/util/__init__.py +0 -0
  520. {argus_server-2.2.1 → argus_server-2.2.2}/tests/util/test_utils.py +0 -0
  521. {argus_server-2.2.1 → argus_server-2.2.2}/tox.ini +0 -0
@@ -8,6 +8,28 @@ This project uses [*towncrier*](https://towncrier.readthedocs.io/) and the chang
8
8
 
9
9
  <!-- towncrier release notes start -->
10
10
 
11
+ ## [2.2.2] - 2025-11-03
12
+
13
+ ### Added
14
+
15
+ - Added the beginnings of a style guide at /styleguide/. The look of the form
16
+ inputs that were not manually laid out have in some cases also changed, for
17
+ greater consistency. ([#1558](https://github.com/Uninett/Argus/issues/1558))
18
+ - Added `zino-argus-glue` to documented list of known glue services
19
+
20
+ ### Changed
21
+
22
+ - Increased logging verbosity when finding destinations for notifications and
23
+ actually sending the notifications, to aid in debugging production systems.
24
+ Now also logs which destination id's are found and used.
25
+ ([#1563](https://github.com/Uninett/Argus/issues/1563))
26
+
27
+ ### Fixed
28
+
29
+ - The development docker compose had stopped working due to changes outside of
30
+ our control (pip, git, the very distro) and has been updated.
31
+
32
+
11
33
  ## [2.2.1] - 2025-09-18
12
34
 
13
35
  ### Fixed, frontend
@@ -1,15 +1,19 @@
1
1
  # This Dockerfile is designed to run a development environment for Argus,
2
2
  # with the Argus source code tree mounted at /argus
3
3
  #
4
- FROM python:3.12
4
+ FROM python:3.13-trixie
5
5
  ENV DEBIAN_FRONTEND=noninteractive
6
6
 
7
7
  RUN apt-get update && apt-get install -y --no-install-recommends tini \
8
- build-essential libpq-dev libffi-dev libssl-dev
8
+ build-essential libpq-dev libffi-dev libssl-dev git
9
9
  RUN mkdir -p /argus
10
10
  COPY requirements.txt /argus
11
11
  COPY requirements/*.txt /argus/requirements/
12
12
 
13
+ ENV VIRTUAL_ENV=/opt/venv
14
+ RUN python3 -m venv $VIRTUAL_ENV
15
+ ENV PATH="$VIRTUAL_ENV/bin:$PATH"
16
+
13
17
  WORKDIR /argus
14
18
  RUN pip install gunicorn -r requirements.txt -r /argus/requirements/dev.txt
15
19
 
@@ -1,4 +1,4 @@
1
- .PHONY: clean testclean distclean coverageclean cacheclean nuke tailwind docclean upgrade-tailwind
1
+ .PHONY: clean testclean distclean coverageclean cacheclean nuke tailwind docclean upgrade-tailwind tailwind-watch
2
2
 
3
3
  TAILWINDDIR=src/argus/htmx/tailwindtheme
4
4
  STATICDIR=src/argus/htmx/static
@@ -32,7 +32,10 @@ testclean: coverageclean clean
32
32
  nuke: clean docclean distclean testclean cacheclean
33
33
 
34
34
  tailwind:
35
- tailwindcss -c $(TAILWINDDIR)/tailwind.config.js -i $(TAILWINDDIR)/styles.css -o $(STATICDIR)/styles.css
35
+ $(TAILWINDDIR)/tailwindcss -c $(TAILWINDDIR)/tailwind.config.js -i $(TAILWINDDIR)/styles.css -o $(STATICDIR)/styles.css
36
+
37
+ tailwind-watch:
38
+ $(TAILWINDDIR)/tailwindcss -c $(TAILWINDDIR)/tailwind.config.js -i $(TAILWINDDIR)/styles.css -o $(STATICDIR)/styles.css --watch
36
39
 
37
40
  upgrade-tailwind:
38
41
  PYTHONPATH=$(PYTHONPATH) python3 src/argus/htmx/tailwindtheme/get_tailwind.py
@@ -3,6 +3,16 @@
3
3
  This file documents changes to Argus that are relevant for operations,
4
4
  customizers and end-users.
5
5
 
6
+ ## [2.2.2] - 2025-11-03
7
+
8
+ To aid in development there a live styleguide for the frontend on
9
+ `/styleguide`.
10
+
11
+ Logging verbosity has increased for sending notifications.
12
+
13
+ Otherwise: typos have been fixed, a new glue service has been added to the
14
+ documentation, the development docker-compose setup should be working again.
15
+
6
16
 
7
17
  ## [2.2.1] - 2025-09-18
8
18
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: argus-server
3
- Version: 2.2.1
3
+ Version: 2.2.2
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>
@@ -23,4 +23,4 @@ magic address GitHub provides for you, then you need to toggle "Keep my email
23
23
  addresses private" on the same page to "On". You can even prevent commits not
24
24
  using the magic address from being pushed to GitHub.
25
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.
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,23 @@
1
+ ============================
2
+ Style guide for web frontend
3
+ ============================
4
+
5
+ There's a live style guide on ``/styleguide/``. It contains a live form so that
6
+ you can experiment with form input to see what a valid and invalid form looks
7
+ like.
8
+
9
+ The live style guide is not complete, and not fully implemented into the site
10
+ yet. If you are looking for low hanging fruit:
11
+
12
+ * The headers (h1-h3) needs to be styled as per the style guide.
13
+ * The cards (all pages except the incident list and preferences page) should
14
+ look the same.
15
+ * There should be no preferences directly in the user menu drop down.
16
+ * There should be no use of the class "border-b" anywhere.
17
+
18
+ More work is involved in making sure all form fields use the style guide
19
+ designs for inputs/labels. Another larger task is issue #1557:
20
+ `Restyling the preferences page <https://github.com/Uninett/Argus/issues/1557>`_.
21
+
22
+ See also issue #1519:
23
+ `Add styleguide <https://github.com/Uninett/Argus/issues/1519>`_.
@@ -9,4 +9,5 @@ Development
9
9
  development/management-commands
10
10
  development/makefile-rules
11
11
  development/howtos
12
+ development/styleguide
12
13
  development/troubleshooting
@@ -33,6 +33,17 @@ Network Administration Visualized
33
33
  This is an extension of NAV, runs on the same server, and uses the NAV config
34
34
  files.
35
35
 
36
+ Zino
37
+ ~~~~
38
+
39
+ | Home: https://nordu.net/zino/
40
+ | Source: https://github.com/Uninett/zino-argus-glue
41
+ | PyPI: `zino-argus-glue <https://pypi.org/project/zino-argus-glue/>`_
42
+
43
+ This is a standalone process that connects to both the Zino and Argus APIs and
44
+ exchanges/synchronizes information between them.
45
+
46
+
36
47
  Mist Systems Administration (Juniper)
37
48
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
38
49
 
@@ -80,7 +80,12 @@ artifacts = ["src/argus/version.py"]
80
80
  packages = ["src/argus"]
81
81
 
82
82
  [tool.hatch.build.targets.sdist]
83
- exclude = ["/.github"]
83
+ exclude = [
84
+ "/.github",
85
+ "/*.json",
86
+ "/*.py",
87
+ "/*.sh",
88
+ ]
84
89
 
85
90
  [tool.versioningit.write]
86
91
  file = "src/argus/version.py"
@@ -2,7 +2,7 @@
2
2
  # This file is autogenerated by pip-compile with Python 3.12
3
3
  # by the following command:
4
4
  #
5
- # pip-compile --extra=htmx --output-file=requirements-django52.txt constraints.txt pyproject.toml requirements/django52.txt
5
+ # pip-compile --output-file=requirements-django52.txt constraints.txt pyproject.toml requirements/django52.txt
6
6
  #
7
7
  annotated-types==0.7.0
8
8
  # via pydantic
@@ -37,7 +37,7 @@ defusedxml==0.7.1
37
37
  # social-auth-core
38
38
  dj-database-url==2.3.0
39
39
  # via argus-server (pyproject.toml)
40
- django==5.2.6
40
+ django==5.2.7
41
41
  # via
42
42
  # -r requirements/django52.txt
43
43
  # argus-server (pyproject.toml)
@@ -139,7 +139,7 @@ rpds-py==0.25.1
139
139
  # referencing
140
140
  sniffio==1.3.1
141
141
  # via anyio
142
- social-auth-app-django==5.4.3
142
+ social-auth-app-django==5.6.0
143
143
  # via argus-server (pyproject.toml)
144
144
  social-auth-core==4.6.1
145
145
  # via
@@ -2,7 +2,7 @@
2
2
  # This file is autogenerated by pip-compile with Python 3.12
3
3
  # by the following command:
4
4
  #
5
- # pip-compile --extra=htmx --output-file=requirements.txt constraints.txt pyproject.toml requirements/django52.txt
5
+ # pip-compile --output-file=requirements-django52.txt constraints.txt pyproject.toml requirements/django52.txt
6
6
  #
7
7
  annotated-types==0.7.0
8
8
  # via pydantic
@@ -37,7 +37,7 @@ defusedxml==0.7.1
37
37
  # social-auth-core
38
38
  dj-database-url==2.3.0
39
39
  # via argus-server (pyproject.toml)
40
- django==5.2.6
40
+ django==5.2.7
41
41
  # via
42
42
  # -r requirements/django52.txt
43
43
  # argus-server (pyproject.toml)
@@ -139,7 +139,7 @@ rpds-py==0.25.1
139
139
  # referencing
140
140
  sniffio==1.3.1
141
141
  # via anyio
142
- social-auth-app-django==5.4.3
142
+ social-auth-app-django==5.6.0
143
143
  # via argus-server (pyproject.toml)
144
144
  social-auth-core==4.6.1
145
145
  # via
@@ -0,0 +1,73 @@
1
+ from django import forms
2
+ from django.core.exceptions import ValidationError
3
+
4
+
5
+ __all__ = ["StyleGuideForm"]
6
+
7
+
8
+ class _ArgusBaseForm(forms.Form):
9
+ def __init__(self, *args, **kwargs):
10
+ kwargs.setdefault("label_suffix", "")
11
+ super().__init__(*args, **kwargs)
12
+
13
+
14
+ # Turn off colons EVERYWHERE
15
+ forms.Form = _ArgusBaseForm
16
+
17
+
18
+ class StyleGuideForm(forms.Form):
19
+ ERROR_INPUT = "MXZ"
20
+ _choices = ("S", "Medium", "Loooooooong", "Multi word long choice")
21
+ CHOICES = tuple(enumerate(_choices, 1))
22
+
23
+ # field variations:
24
+ required = forms.CharField(required=True)
25
+ help_text = forms.CharField(
26
+ required=False, help_text="This is the help text for a specific field, should always be shown"
27
+ )
28
+ error = forms.CharField(required=True)
29
+
30
+ # field types:
31
+ input_ = forms.CharField(label="Input", required=False)
32
+ password = forms.Field(required=False, widget=forms.PasswordInput)
33
+ number = forms.IntegerField(required=False)
34
+ date = forms.DateField(required=False)
35
+ datetime = forms.DateTimeField(required=False)
36
+ time = forms.TimeField(required=False)
37
+ email = forms.EmailField(required=False)
38
+ url = forms.URLField(required=False)
39
+ checkbox = forms.BooleanField(required=False)
40
+ select = forms.ChoiceField(required=False, choices=CHOICES)
41
+ checkbox_select = forms.ChoiceField(
42
+ required=False,
43
+ choices=CHOICES,
44
+ widget=forms.CheckboxSelectMultiple,
45
+ )
46
+ radio_select = forms.ChoiceField(
47
+ required=False,
48
+ choices=CHOICES,
49
+ widget=forms.RadioSelect,
50
+ )
51
+
52
+ # special field types:
53
+ # level as range
54
+ # typeahead
55
+ # ..
56
+
57
+ def clean_error(self):
58
+ input = self.cleaned_data.get("error", "")
59
+ if input != self.ERROR_INPUT:
60
+ raise ValidationError(
61
+ 'This field only accepts "%(correct)s" as a value',
62
+ params={"correct": self.ERROR_INPUT},
63
+ code="invalid",
64
+ )
65
+ return input
66
+
67
+ def clean(self):
68
+ cleaned_data = super().clean()
69
+ if not (cleaned_data.get("error", None) and cleaned_data.get("required", None)):
70
+ raise ValidationError(
71
+ 'Both of the fields "required" and "error" needs to be filled and valid',
72
+ code="invalid",
73
+ )
@@ -13,18 +13,22 @@ filter_backend = get_filter_backend()
13
13
  QuerySetFilter = filter_backend.QuerySetFilter
14
14
 
15
15
 
16
+ class RangeInput(forms.NumberInput):
17
+ template_name = "django/forms/widgets/range.html"
18
+
19
+
16
20
  class IncidentFilterForm(forms.Form):
17
21
  open = forms.IntegerField(
18
- widget=forms.NumberInput(
19
- attrs={"type": "range", "step": "1", "min": min(OpenStatus).value, "max": max(OpenStatus).value}
22
+ widget=RangeInput(
23
+ attrs={"class": "range-primary", "step": "1", "min": min(OpenStatus).value, "max": max(OpenStatus).value}
20
24
  ),
21
25
  label="Open State",
22
26
  initial=OpenStatus.BOTH.value,
23
27
  required=False,
24
28
  )
25
29
  acked = forms.IntegerField(
26
- widget=forms.NumberInput(
27
- attrs={"type": "range", "step": "1", "min": min(AckedStatus).value, "max": max(AckedStatus).value}
30
+ widget=RangeInput(
31
+ attrs={"class": "range-primary", "step": "1", "min": min(AckedStatus).value, "max": max(AckedStatus).value}
28
32
  ),
29
33
  label="Acked",
30
34
  initial=AckedStatus.BOTH.value,
@@ -42,7 +46,7 @@ class IncidentFilterForm(forms.Form):
42
46
  widget=forms.TextInput(
43
47
  attrs={
44
48
  "placeholder": "key=value, ...",
45
- "class": "input input-primary input-bordered input-sm overflow-y-auto min-h-8 h-auto max-h-16 max-w-xs leading-tight",
49
+ "class": "input-primary input-sm overflow-y-auto min-h-8 h-auto max-h-16 max-w-xs leading-tight",
46
50
  }
47
51
  ),
48
52
  required=False,
@@ -50,8 +54,8 @@ class IncidentFilterForm(forms.Form):
50
54
  help_text='Press "Enter" after each completed tag',
51
55
  )
52
56
  maxlevel = forms.IntegerField(
53
- widget=forms.NumberInput(
54
- attrs={"type": "range", "step": "1", "min": min(Level).value, "max": max(Level).value}
57
+ widget=RangeInput(
58
+ attrs={"class": "range-primary", "step": "1", "min": min(Level).value, "max": max(Level).value}
55
59
  ),
56
60
  label="Level <=",
57
61
  initial=max(Level).value,
@@ -38,7 +38,7 @@ class TimeframeForm(forms.Form):
38
38
  initial=TIMEFRAME_DEFAULT,
39
39
  widget=forms.Select(
40
40
  attrs={
41
- "class": "select select-xs bg-transparent text-base border-none -ml-2",
41
+ "class": "border-none select-xs bg-transparent text-base -ml-2",
42
42
  "autocomplete": "off",
43
43
  "hx-get": ".",
44
44
  "hx-trigger": "change",
@@ -3666,6 +3666,11 @@ details.collapse summary::-webkit-details-marker {
3666
3666
  position: relative;
3667
3667
  }
3668
3668
 
3669
+ [type="radio"].radio-xs {
3670
+ height: 1rem;
3671
+ width: 1rem;
3672
+ }
3673
+
3669
3674
  .range-xs {
3670
3675
  height: 1rem;
3671
3676
  }
@@ -4203,6 +4208,10 @@ details.collapse summary::-webkit-details-marker {
4203
4208
  margin-left: -0.5rem;
4204
4209
  }
4205
4210
 
4211
+ .mb-4 {
4212
+ margin-bottom: 1rem;
4213
+ }
4214
+
4206
4215
  .mb-8 {
4207
4216
  margin-bottom: 2rem;
4208
4217
  }
@@ -4247,6 +4256,10 @@ details.collapse summary::-webkit-details-marker {
4247
4256
  display: table;
4248
4257
  }
4249
4258
 
4259
+ .grid {
4260
+ display: grid;
4261
+ }
4262
+
4250
4263
  .hidden {
4251
4264
  display: none;
4252
4265
  }
@@ -4327,10 +4340,6 @@ details.collapse summary::-webkit-details-marker {
4327
4340
  width: 66.666667%;
4328
4341
  }
4329
4342
 
4330
- .w-24 {
4331
- width: 6rem;
4332
- }
4333
-
4334
4343
  .w-4 {
4335
4344
  width: 1rem;
4336
4345
  }
@@ -4440,6 +4449,10 @@ details.collapse summary::-webkit-details-marker {
4440
4449
  cursor: pointer;
4441
4450
  }
4442
4451
 
4452
+ .grid-cols-2 {
4453
+ grid-template-columns: repeat(2, minmax(0, 1fr));
4454
+ }
4455
+
4443
4456
  .flex-row {
4444
4457
  flex-direction: row;
4445
4458
  }
@@ -4517,16 +4530,18 @@ details.collapse summary::-webkit-details-marker {
4517
4530
  column-gap: 1rem;
4518
4531
  }
4519
4532
 
4520
- .gap-y-2 {
4521
- row-gap: 0.5rem;
4522
- }
4523
-
4524
4533
  .space-y-2 > :not([hidden]) ~ :not([hidden]) {
4525
4534
  --tw-space-y-reverse: 0;
4526
4535
  margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));
4527
4536
  margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));
4528
4537
  }
4529
4538
 
4539
+ .space-y-4 > :not([hidden]) ~ :not([hidden]) {
4540
+ --tw-space-y-reverse: 0;
4541
+ margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));
4542
+ margin-bottom: calc(1rem * var(--tw-space-y-reverse));
4543
+ }
4544
+
4530
4545
  .self-end {
4531
4546
  align-self: flex-end;
4532
4547
  }
@@ -4593,6 +4608,10 @@ details.collapse summary::-webkit-details-marker {
4593
4608
  border-radius: 0.5rem;
4594
4609
  }
4595
4610
 
4611
+ .rounded-md {
4612
+ border-radius: 0.375rem;
4613
+ }
4614
+
4596
4615
  .\!rounded-l-none {
4597
4616
  border-top-left-radius: 0px !important;
4598
4617
  border-bottom-left-radius: 0px !important;
@@ -4695,7 +4714,7 @@ details.collapse summary::-webkit-details-marker {
4695
4714
 
4696
4715
  .bg-red-700 {
4697
4716
  --tw-bg-opacity: 1;
4698
- background-color: rgb(185 28 28 / var(--tw-bg-opacity));
4717
+ background-color: rgb(185 28 28 / var(--tw-bg-opacity, 1));
4699
4718
  }
4700
4719
 
4701
4720
  .bg-severity-primary-1 {
@@ -4850,6 +4869,11 @@ details.collapse summary::-webkit-details-marker {
4850
4869
  line-height: 2rem;
4851
4870
  }
4852
4871
 
4872
+ .text-3xl {
4873
+ font-size: 1.875rem;
4874
+ line-height: 2.25rem;
4875
+ }
4876
+
4853
4877
  .text-base {
4854
4878
  font-size: 1rem;
4855
4879
  line-height: 1.5rem;
@@ -4930,10 +4954,6 @@ details.collapse summary::-webkit-details-marker {
4930
4954
  color: var(--fallback-nc,oklch(var(--nc)/var(--tw-text-opacity, 1)));
4931
4955
  }
4932
4956
 
4933
- .text-neutral-content\/80 {
4934
- color: var(--fallback-nc,oklch(var(--nc)/0.8));
4935
- }
4936
-
4937
4957
  .text-primary {
4938
4958
  --tw-text-opacity: 1;
4939
4959
  color: var(--fallback-p,oklch(var(--p)/var(--tw-text-opacity, 1)));
@@ -4971,7 +4991,7 @@ details.collapse summary::-webkit-details-marker {
4971
4991
 
4972
4992
  .text-white {
4973
4993
  --tw-text-opacity: 1;
4974
- color: rgb(255 255 255 / var(--tw-text-opacity));
4994
+ color: rgb(255 255 255 / var(--tw-text-opacity, 1));
4975
4995
  }
4976
4996
 
4977
4997
  .antialiased {
@@ -5108,4 +5128,20 @@ details.collapse summary::-webkit-details-marker {
5108
5128
  .sm\:w-96 {
5109
5129
  width: 24rem;
5110
5130
  }
5131
+
5132
+ .sm\:grid-cols-2 {
5133
+ grid-template-columns: repeat(2, minmax(0, 1fr));
5134
+ }
5135
+ }
5136
+
5137
+ @media (min-width: 1024px) {
5138
+ .lg\:grid-cols-4 {
5139
+ grid-template-columns: repeat(4, minmax(0, 1fr));
5140
+ }
5141
+ }
5142
+
5143
+ @media (min-width: 1280px) {
5144
+ .xl\:grid-cols-6 {
5145
+ grid-template-columns: repeat(6, minmax(0, 1fr));
5146
+ }
5111
5147
  }
@@ -13,6 +13,7 @@ ARCHITECTURE_MAP = {
13
13
  ("linux", "arm64"): "linux-arm64",
14
14
  ("linux", "arm7"): "linux-arm7",
15
15
  ("darwin", "x86_64"): "macos-x64",
16
+ ("darwin", "arm"): "macos-arm64",
16
17
  ("darwin", "arm64"): "macos-arm64",
17
18
  ("windows", "x86_64"): "windows-x64",
18
19
  ("windows", "arm64"): "windows-arm64",
@@ -0,0 +1,5 @@
1
+ {% if errors %}
2
+ <ul class="{{ error_class }} text-error label-text-alt">
3
+ {% for field, error in errors %}<li>{{ field }}{{ error }}</li>{% endfor %}
4
+ </ul>
5
+ {% endif %}
@@ -0,0 +1,6 @@
1
+ {% if errors %}
2
+ <ul class="{{ error_class }} text-error label-text-alt"
3
+ {% if errors.field_id %}id="{{ errors.field_id }}_error"{% endif %}>
4
+ {% for error in errors %}<li>{{ error }}</li>{% endfor %}
5
+ </ul>
6
+ {% endif %}
@@ -0,0 +1,20 @@
1
+ <!-- field.html -->
2
+ {% if field.use_fieldset %}
3
+ <fieldset class="flex flex-col gap-2"
4
+ {% if field.aria_describedby %}aria-describedby="{{ field.aria_describedby }}"{% endif %}>
5
+ {% if field.label %}{{ field.legend_tag }}{% endif %}
6
+ {% else %}
7
+ <div class="flex flex-col gap-2">
8
+ {% if field.label %}{{ field.label_tag }}{% endif %}
9
+ {% endif %}
10
+ {% if field.help_text %}
11
+ <div class="helptext text-xs"
12
+ {% if field.auto_id %}id="{{ field.auto_id }}_helptext"{% endif %}>{{ field.help_text|safe }}</div>
13
+ {% endif %}
14
+ {{ field }}
15
+ {% if field.errors %}<div class="text-error">{{ field.errors }}</div>{% endif %}
16
+ {% if field.use_fieldset %}
17
+ </fieldset>
18
+ {% else %}
19
+ </div>
20
+ {% endif %}
@@ -0,0 +1,13 @@
1
+ <!-- label.html -->
2
+ <div class="indicator">
3
+ {% if use_tag %}
4
+ <{{ tag }}
5
+ {% include "django/forms/attrs.html" %}
6
+ >
7
+ {% endif %}
8
+ <strong class="label-text">{{ label }}</strong>
9
+ {% if field.field.required %}
10
+ <span class="indicator-item badge border-none mask mask-circle text-warning text-base text-sm">*</span>
11
+ {% endif %}
12
+ {% if use_tag %}</{{ tag }}>{% endif %}
13
+ </div>
@@ -0,0 +1,6 @@
1
+ <!-- checkbox.html -->
2
+ <input type="checkbox"
3
+ name="{{ widget.name }}"
4
+ class="checkbox checkbox-sm {{ widget.attrs.class }}"
5
+ {% if widget.value != None %}value="{{ widget.value|stringformat:'s' }}"{% endif %}
6
+ {% include "django/forms/widgets/classless_attrs.html" %}>
@@ -0,0 +1,12 @@
1
+ <!-- checkbox_option.html -->
2
+ <span class="flex flex-nowrap items-center">
3
+ <label class="label cursor-pointer"
4
+ {% if widget.attrs.id %}for="{{ widget.attrs.id }}"{% endif %}>
5
+ <input type="checkbox"
6
+ name="{{ widget.name }}"
7
+ class="checkbox checkbox-sm {{ widget.attrs.class }}"
8
+ {% if widget.value != None %}value="{{ widget.value|stringformat:'s' }}"{% endif %}
9
+ {% include "django/forms/widgets/classless_attrs.html" %}>
10
+ <span class="label-text pl-2">{{ widget.label }}</span>
11
+ </label>
12
+ </span>
@@ -0,0 +1,9 @@
1
+ {% if not "autocomplete" in widget.attrs.keys %}autocomplete="off"{% endif %}
2
+ {% for name, value in widget.attrs.items %}
3
+ {% if name != "class" %}
4
+ {% if value is not False %}
5
+ {{ name }}
6
+ {% if value is not True %}="{{ value|stringformat:'s' }}"{% endif %}
7
+ {% endif %}
8
+ {% endif %}
9
+ {% endfor %}
@@ -0,0 +1,6 @@
1
+ <!-- date.html -->
2
+ <input type="date"
3
+ name="{{ widget.name }}"
4
+ class="input input-bordered {{ widget.attrs.class }}"
5
+ {% if widget.value != None %}value="{{ widget.value|stringformat:'s' }}"{% endif %}
6
+ {% include "django/forms/widgets/classless_attrs.html" %}>
@@ -0,0 +1,6 @@
1
+ <!-- datetime.html -->
2
+ <input type="datetime"
3
+ name="{{ widget.name }}"
4
+ class="input input-bordered {{ widget.attrs.class }}"
5
+ {% if widget.value != None %}value="{{ widget.value|stringformat:'s' }}"{% endif %}
6
+ {% include "django/forms/widgets/classless_attrs.html" %}>
@@ -0,0 +1,6 @@
1
+ <!-- input.html -->
2
+ <input type="{{ widget.type }}"
3
+ name="{{ widget.name }}"
4
+ class="input input-bordered {{ widget.attrs.class }}"
5
+ {% if widget.value != None %}value="{{ widget.value|stringformat:'s' }}"{% endif %}
6
+ {% include "django/forms/widgets/classless_attrs.html" %}>
@@ -0,0 +1,12 @@
1
+ <!-- radio_option.html -->
2
+ <span class="flex flex-nowrap items-center">
3
+ <label {% if widget.attrs.id %}for="{{ widget.attrs.id }}"{% endif %}
4
+ class="label cursor-pointer">
5
+ <input type="radio"
6
+ name="{{ widget.name }}"
7
+ class="radio radio-xs {{ widget.attrs.class }}"
8
+ {% if widget.value != None %}value="{{ widget.value|stringformat:'s' }}"{% endif %}
9
+ {% include "django/forms/widgets/classless_attrs.html" %}>
10
+ <span class="label-text pl-2">{{ widget.label }}</span>
11
+ </label>
12
+ </span>
@@ -0,0 +1,5 @@
1
+ <input type="range"
2
+ name="{{ widget.name }}"
3
+ class="range range-primary range-xs {{ widget.attrs.class }}"
4
+ {% if widget.value != None %}value="{{ widget.value|stringformat:'s' }}"{% endif %}
5
+ {% include "django/forms/widgets/classless_attrs.html" %}>
@@ -0,0 +1,12 @@
1
+ <!-- select.html -->
2
+ <select name="{{ widget.name }}"
3
+ class="select input input-bordered {{ widget.attrs.class }}"
4
+ {% include "django/forms/widgets/classless_attrs.html" %}>
5
+ {% for group_name, group_choices, group_index in widget.optgroups %}
6
+ {% if group_name %}<optgroup label="{{ group_name }}">{% endif %}
7
+ {% for option in group_choices %}
8
+ {% include option.template_name with widget=option %}
9
+ {% endfor %}
10
+ {% if group_name %}</optgroup>{% endif %}
11
+ {% endfor %}
12
+ </select>