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.
- {argus_server-2.2.1 → argus_server-2.2.2}/CHANGELOG.md +22 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/Dockerfile +6 -2
- {argus_server-2.2.1 → argus_server-2.2.2}/Makefile +5 -2
- {argus_server-2.2.1 → argus_server-2.2.2}/NOTES.md +10 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/PKG-INFO +1 -1
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/howtos-for-github.rst +1 -1
- argus_server-2.2.2/docs/development/styleguide.rst +23 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/development.rst +1 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/integrations/glue-services/index.rst +11 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/pyproject.toml +6 -1
- {argus_server-2.2.1 → argus_server-2.2.2}/requirements-django52.txt +3 -3
- {argus_server-2.2.1 → argus_server-2.2.2}/requirements.txt +3 -3
- argus_server-2.2.2/src/argus/htmx/forms.py +73 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/incident/filter.py +11 -7
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/incident/forms.py +1 -1
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/static/styles.css +50 -14
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/tailwindtheme/config.py +1 -0
- argus_server-2.2.2/src/argus/htmx/templates/django/forms/errors/dict/ul.html +5 -0
- argus_server-2.2.2/src/argus/htmx/templates/django/forms/errors/list/ul.html +6 -0
- argus_server-2.2.2/src/argus/htmx/templates/django/forms/field.html +20 -0
- argus_server-2.2.2/src/argus/htmx/templates/django/forms/label.html +13 -0
- argus_server-2.2.2/src/argus/htmx/templates/django/forms/widgets/checkbox.html +6 -0
- argus_server-2.2.2/src/argus/htmx/templates/django/forms/widgets/checkbox_option.html +12 -0
- argus_server-2.2.2/src/argus/htmx/templates/django/forms/widgets/classless_attrs.html +9 -0
- argus_server-2.2.2/src/argus/htmx/templates/django/forms/widgets/date.html +6 -0
- argus_server-2.2.2/src/argus/htmx/templates/django/forms/widgets/datetime.html +6 -0
- argus_server-2.2.2/src/argus/htmx/templates/django/forms/widgets/input.html +6 -0
- argus_server-2.2.2/src/argus/htmx/templates/django/forms/widgets/radio_option.html +12 -0
- argus_server-2.2.2/src/argus/htmx/templates/django/forms/widgets/range.html +5 -0
- argus_server-2.2.2/src/argus/htmx/templates/django/forms/widgets/select.html +12 -0
- argus_server-2.2.2/src/argus/htmx/templates/django/forms/widgets/time.html +8 -0
- argus_server-2.2.2/src/argus/htmx/templates/htmx/styleguide.html +188 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/timeslot/timerecurrence_div.html +1 -1
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/registration/login.html +1 -9
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/timeslot/views.py +0 -1
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/urls.py +2 -1
- argus_server-2.2.2/src/argus/htmx/views.py +39 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/media/__init__.py +24 -4
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/media/base.py +40 -4
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/media/email.py +18 -22
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/media/sms_as_email.py +11 -15
- argus_server-2.2.2/src/argus/version.py +1 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/notificationprofile/test_media.py +21 -5
- argus_server-2.2.1/docker-entrypoint.sh +0 -7
- argus_server-2.2.1/manage.py +0 -24
- argus_server-2.2.1/src/argus/htmx/templates/django/forms/div.html +0 -28
- argus_server-2.2.1/src/argus/htmx/views.py +0 -9
- argus_server-2.2.1/src/argus/version.py +0 -1
- {argus_server-2.2.1 → argus_server-2.2.2}/.git-blame-ignore-revs +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/.gitattributes +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/.gitignore +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/.mailmap +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/.pre-commit-config.yaml +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/.readthedocs.yaml +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/.sonarcloud.properties +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/CONTRIBUTING.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/CONTRIBUTORS.md +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/LICENSE +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/MAINTAINING.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/README.md +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/UPGRADING.md +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/changelog.d/.gitkeep +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/cmd.sh-template +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/codecov.yml +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/constraints.txt +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docker/Dockerfile +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docker/README.md +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docker/docker-entrypoint.sh +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docker/dockersettings.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docker-compose.yml +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/Makefile +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/_exts/djangodocs.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/_static/.gitkeep +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/_templates/.gitkeep +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/about-argus.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/conf.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/customization/htmx-frontend.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/customization.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/add-more-preferences.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/change-settings.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/changelog-entry.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/commit-messages.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/customizing-filtering.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/federated-logins.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/howtos-for-git.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/htmx-frontend/column_for_specific_ack_group.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/htmx-frontend/column_for_specific_tag.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/htmx-frontend/custom-incident-actions.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/htmx-frontend/customize-filtering.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/htmx-frontend/dependencies.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/htmx-frontend/font_awesome.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/htmx-frontend/override_templates.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/htmx-frontend.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/notification-system-testing.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/recover-from-migration-trouble.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/regenerate-the-ER-diagram.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/release-checklist.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/toggle-django-debug-toolbar.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/update-contributors.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos/vendor-a-repo.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/howtos.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/makefile-rules.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/management-commands.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/notes.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/development/troubleshooting.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/django_settings.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/img/default_timeslot.png +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/img/destinations_view.png +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/img/example_timeslot.png +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/img/filter_selector.png +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/img/incident_details_view.png +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/img/incidents_filter.png +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/img/incidents_page.png +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/img/new_notification_profile.png +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/img/notification_profiles.png +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/img/synced_destination_delete_error.png +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/img/timeslots_view.png +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/img/unsaved_recurrence.png +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/img/user_menu.png +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/index.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/integrations/_note.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/integrations/glue-services/writing-glueservices.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/integrations/index.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/integrations/notifications/email-plugin.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/integrations/notifications/index.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/integrations/notifications/sms-plugin.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/integrations/notifications/writing-notification-plugins.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/integrations/ticket-systems/index.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/integrations/ticket-systems/writing-ticket-system-plugins.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/make.bat +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/reference/admin.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/reference/api/v2.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/reference/api.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/reference/authentication.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/reference/glossary.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/reference/htmx-frontend.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/reference/img/ER_model.png +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/reference/models.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/reference/site-specific-settings.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/reference.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/docs/user-manual.rst +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/requirements/dev.txt +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/requirements/django52.txt +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/requirements/please-pip-sync.txt +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/requirements/test.txt +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/admin.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/apps.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/authentication.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/context_processors.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/drftoken/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/drftoken/serializers.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/drftoken/urls.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/drftoken/views.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/factories.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/knox/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/knox/serializers.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/knox/urls.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/knox/views.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/management/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/management/commands/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/management/commands/changeuser.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/management/commands/createuser.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/management/commands/grantsuperuser.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/management/commands/revokesuperuser.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/management/commands/setpassword.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/migrations/0001_initial.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/migrations/0002_alter_user_first_name.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/migrations/0002_squashed_auth_20250512_add_preferences_model.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/migrations/0003_delete_phonenumber.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/migrations/0004_add_preferences_model.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/migrations/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/models.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/serializers.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/urls.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/utils.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/auth/views.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/base/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/base/apps.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/base/static/favicon.svg +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/base/templates/base.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/base/templates/index.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/compat.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/dev/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/dev/apps.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/dev/management/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/dev/management/commands/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/dev/management/commands/bulk_incidents.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/dev/management/commands/check_token_expiry.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/dev/management/commands/close_incident.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/dev/management/commands/create_fake_incident.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/dev/management/commands/create_source.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/dev/management/commands/gen_secret_key.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/dev/management/commands/initial_setup.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/dev/management/commands/list_filters.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/dev/management/commands/stresstest.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/dev/management/commands/toggle_profile_activation.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/dev/utils.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/drf/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/drf/permissions.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/filter/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/filter/apps.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/filter/checks.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/filter/default.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/filter/factories.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/filter/filters.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/filter/filterwrapper.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/filter/primitive_serializers.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/filter/queryset_filters.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/filter/serializers.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/filter/swappable/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/filter/swappable/serializers.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/filter/validators.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/appconfig.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/apps.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/auth/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/auth/views.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/checks.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/constants.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/context_processors.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/dateformat/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/dateformat/constants.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/defaults.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/destination/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/destination/forms.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/destination/urls.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/destination/views.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/htmx_urls.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/incident/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/incident/constants.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/incident/customization.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/incident/urls.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/incident/utils.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/incident/views.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/management/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/management/commands/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/management/commands/tailwind_config.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/middleware.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/migrations/0001_initial.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/migrations/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/modals.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/models.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/notificationprofile/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/notificationprofile/urls.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/notificationprofile/views.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/request.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/root_urls.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/settings.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/static/htmx-2.0.2.min.js +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/static/hyperscript-0.9.13.min.js +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/static/logo_white.svg +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/tailwindtheme/README.md +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/tailwindtheme/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/tailwindtheme/get_tailwind.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/tailwindtheme/snippets/10-tailwind.css +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/tailwindtheme/snippets/15-alert-message.css +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/tailwindtheme/snippets/20-loading-box.css +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/tailwindtheme/styles.css +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/tailwindtheme/tailwind.config.js +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/tailwindtheme/utils.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/django/forms/widgets/attrs.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/_base_confirm_dialog.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/_base_form_modal.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/_base_form_modal_button.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/_base_form_modal_experimental.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/base.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/destination/_collapse_with_forms.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/destination/_content.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/destination/_create_form.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/destination/_delete_form.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/destination/_edit_form.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/destination/_form_list.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/destination/destination_list.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/forms/badge_dropdown_select_multiple.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/forms/checkbox_select_multiple.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/forms/dropdown_select_multiple.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/forms/input_field.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_base.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_base_incident_update_modal.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_delete_filter_confirm_dialog.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_existing_filters.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_filter_controls.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_filter_create_modal.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_filter_delete_dropdown.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_filter_select.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_filter_update_dropdown.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_incident_acknowledge_modal.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_incident_close_modal.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_incident_filterbox.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_incident_list_menubar.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_incident_list_refresh_info.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_incident_list_update_menu.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_incident_reopen_modal.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_incident_table.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_incident_table_cell_wrapper_default.html +0 -0
- {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
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_incident_table_paginator.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_incident_table_paginator_pageitem.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_incident_table_row.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_incident_table_rows.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_incident_ticket_autocreate_modal.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_incident_ticket_edit_modal.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_incident_ticket_manual_create_modal.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/_update_filter_confirm_dialog.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/cells/_incident_ack.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/cells/_incident_actions.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/cells/_incident_checkbox.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/cells/_incident_color_status.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/cells/_incident_combined_status.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/cells/_incident_description.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/cells/_incident_filterable_column_header.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/cells/_incident_level.html +0 -0
- {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
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/cells/_incident_pk.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/cells/_incident_source.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/cells/_incident_start_time.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/cells/_incident_start_time_header.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/cells/_incident_status.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/cells/_incident_tag.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/cells/_incident_ticket.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/filter_list.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/incident_detail.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/incident_list.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/responses/_incident_list_refresh.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/incident/responses/empty_list_item.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/notificationprofile/_notificationprofile_form.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/notificationprofile/_notificationprofile_form_div.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/notificationprofile/base.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/notificationprofile/notificationprofile_confirm_delete.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/notificationprofile/notificationprofile_form.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/notificationprofile/notificationprofile_list.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/timeslot/_delete_timeslot_confirm_dialog.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/timeslot/_timeslot_detail.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/timeslot/_timeslot_form.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/timeslot/base.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/timeslot/checkbox_option.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/timeslot/timeslot_confirm_delete.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/timeslot/timeslot_form.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/timeslot/timeslot_list.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/user/_current_theme.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/user/_dateformat_dropdown.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/user/_incidents_table_layout_dropdown.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/user/_page_size_dropdown.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/user/_theme_dropdown.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/user/_update_interval_dropdown.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/user/_user_menu.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/user/_user_menu_logout.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/user/_user_menu_notification_config.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/user/_user_menu_user_preferences.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx/user/preferences.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/htmx_base.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/messages/_notification_message.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/messages/_notification_messages.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/messages/_notification_messages_htmx_append.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/tailwind/styles.css +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/tailwind/tailwind.config.js +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templates/tailwind_whitelist.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templatetags/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/templatetags/argus_htmx.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/themes/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/themes/constants.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/themes/utils.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/timeslot/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/timeslot/urls.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/user/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/user/preferences/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/user/preferences/models.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/user/urls.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/user/views.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/utils.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/htmx/widgets.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/admin.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/apps.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/constants.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/factories.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/fields.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/forms.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/migrations/0001_initial.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/migrations/0001_squashed_incident_20250514.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/migrations/0002_empty_source_incident_id.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/migrations/0003_incident_level.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/migrations/0004_add_ChangeEvent_proxy.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/migrations/0005_alter_event_type.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/migrations/0006_incident_search_text.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/migrations/0007_alter_event_type.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/migrations/0008_incident_metadata.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/migrations/0009_use_bigautofield_on_quickly_growing_tables.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/migrations/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/models.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/serializers.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/signals.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/templates/incident/admin/fake_incident_add_form.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/templates/incident/admin/incident_change_list.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/templates/incident/admin/widgets/split_datetime_infinity.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/templates/incident/ticket/default_ticket_body.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/ticket/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/ticket/base.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/ticket/dummy.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/ticket/utils.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/urls.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/validators.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/views.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/incident/widgets.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/admin.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/apps.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/checks.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/factories.py +0 -0
- {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
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/migrations/0001_squashed_notificationprofile_20250512.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/migrations/0016_noop.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/migrations/0017_change_event_type_to_event_types.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/migrations/0018_remove_closed_and_unacked_from_filterblob.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/migrations/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/models.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/serializers.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/signals.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/templates/notificationprofile/email.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/templates/notificationprofile/email.txt +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/templates/schemawrapper.html +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/urls.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/notificationprofile/views.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/site/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/site/api_v2_urls.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/site/logging.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/site/serializers.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/site/settings/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/site/settings/_serializers.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/site/settings/backend.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/site/settings/base.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/site/settings/dev.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/site/settings/dockerdev.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/site/settings/prod.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/site/settings/test_CI.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/site/urls.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/site/utils.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/site/views.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/site/wsgi.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/util/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/util/admin_utils.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/util/datetime_utils.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/util/testing.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/src/argus/util/utils.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/auth/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/auth/management_commands/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/auth/management_commands/test_changeuser.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/auth/management_commands/test_createuser.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/auth/models.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/auth/test_auth.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/auth/test_knox_views.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/auth/test_models.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/auth/test_utils.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/auth/test_views.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/dev/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/dev/test_bulk_incidents.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/dev/test_check_token_expiry.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/dev/test_close_incident.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/dev/test_create_fake_incident.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/dev/test_create_source.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/dev/test_gen_secret_key.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/dev/test_initial_setup.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/dev/test_list_filters.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/dev/test_toggle_profile_activation.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/dev/test_utils.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/filter/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/filter/dummyplugin.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/filter/test_filterplugin.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/filter/test_filterwrapper.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/filter/test_queryset_filters.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/helpers.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/htmx/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/htmx/incident/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/htmx/incident/test_customization.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/htmx/incident/test_filter.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/htmx/incident/test_utils.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/htmx/notificationprofile/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/htmx/notificationprofile/test_forms.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/htmx/test_incident.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/htmx/test_middleware.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/htmx/test_utils.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/fixtures/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/test_change_event.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/test_create_fake_incident.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/test_event.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/test_filters.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/test_incident.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/test_incident_fields.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/test_queryset.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/test_serializers.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/test_source_system.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/test_source_system_type.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/test_views.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/ticket_plugins/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/ticket_plugins/test_base.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/ticket_plugins/test_dummy.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/ticket_plugins/test_utils.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/unit/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/incident/unit/test_incident_details_url.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/migration_example.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/notificationprofile/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/notificationprofile/destinations/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/notificationprofile/destinations/test_email.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/notificationprofile/destinations/test_sms.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/notificationprofile/migrations/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/notificationprofile/test_github236.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/notificationprofile/test_models.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/notificationprofile/test_serializers.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/notificationprofile/test_views.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/site/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/site/test_misc.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/site/test_settings_helpers.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/site/test_settings_validators.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/site/test_views.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/util/__init__.py +0 -0
- {argus_server-2.2.1 → argus_server-2.2.2}/tests/util/test_utils.py +0 -0
- {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.
|
|
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
|
|
|
@@ -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>`_.
|
|
@@ -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 = [
|
|
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 --
|
|
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.
|
|
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.
|
|
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 --
|
|
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.
|
|
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.
|
|
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=
|
|
19
|
-
attrs={"
|
|
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=
|
|
27
|
-
attrs={"
|
|
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
|
|
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=
|
|
54
|
-
attrs={"
|
|
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": "
|
|
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,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
|
+
<!-- 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,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>
|