aa-structures 3.3.1__tar.gz → 4.0.0b3__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.
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/PKG-INFO +13 -8
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/pyproject.toml +15 -11
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/__init__.py +1 -1
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/admin.py +2 -3
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/app_settings.py +1 -1
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/constants.py +2 -1
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/core/notification_embeds/helpers.py +9 -11
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/core/notification_embeds/main.py +1 -2
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/core/notification_timers.py +108 -106
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/core/starbases.py +1 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/management/commands/structures_load_eve.py +1 -2
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/management/commands/structures_preload_eveuniverse.py +1 -3
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/management/commands/structures_update_poco_planets.py +1 -3
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/managers.py +11 -11
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/models/notifications.py +107 -107
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/models/owners.py +223 -200
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/models/structures_1.py +3 -5
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/models/structures_2.py +1 -3
- aa_structures-4.0.0b3/structures/openapi_2025-12-16.json +32582 -0
- aa_structures-4.0.0b3/structures/providers.py +29 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tasks.py +16 -26
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/templates/structures/partials/public/poco_list.html +1 -1
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/templates/structures/partials/statistics/structure_summary.html +1 -1
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/templates/structures/partials/structures/jump_gate_list.html +1 -1
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/templates/structures/partials/structures/orbital_list.html +1 -1
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/templates/structures/partials/structures/starbase_list.html +1 -1
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/templates/structures/partials/structures/structure_list.html +1 -1
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/templates/structures/public.html +1 -1
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/templates/structures/statistics.html +1 -1
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/templates/structures/structures.html +2 -2
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/core/notification_embeds/test_main.py +55 -30
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/core/test_notification_structuretimers.py +13 -7
- aa_structures-4.0.0b3/structures/tests/core/test_notifications_timers.py +159 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/core/test_serializers.py +30 -21
- aa_structures-4.0.0b3/structures/tests/core/test_starbases.py +123 -0
- aa_structures-4.0.0b3/structures/tests/helpers.py +27 -0
- aa_structures-4.0.0b3/structures/tests/integration/test_tasks.py +550 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/integration/test_views.py +5 -9
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/models/test_eveuniverse.py +10 -8
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/models/test_notifications_1.py +85 -38
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/models/test_notifications_2.py +25 -20
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/models/test_notifications_3.py +0 -3
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/models/test_notifications_discord.py +4 -11
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/models/test_owners_1.py +41 -29
- aa_structures-4.0.0b3/structures/tests/models/test_owners_2.py +590 -0
- aa_structures-4.0.0b3/structures/tests/models/test_owners_3.py +372 -0
- aa_structures-4.0.0b3/structures/tests/models/test_owners_4.py +517 -0
- aa_structures-4.0.0b3/structures/tests/models/test_owners_5.py +1066 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/models/test_structures.py +76 -65
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/test_admin.py +50 -29
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/test_managers_1.py +196 -190
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/test_managers_2.py +0 -2
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/testdata/factories.py +251 -131
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/testdata/generate_notifications.py +2 -3
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/testdata/generate_structures.py +4 -4
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/testdata/helpers.py +88 -46
- aa_structures-4.0.0b3/structures/tests/testdata/notifications.json +771 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/views/test_public.py +11 -6
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/views/test_statistics.py +10 -9
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/views/test_structures.py +4 -12
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/views/public.py +1 -3
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/views/statistics.py +1 -3
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/views/structures.py +36 -33
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/webhooks/core.py +3 -3
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/webhooks/managers.py +1 -4
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/webhooks/tests/test_core.py +6 -3
- aa_structures-3.3.1/structures/providers.py +0 -12
- aa_structures-3.3.1/structures/tests/core/test_notifications_timers.py +0 -146
- aa_structures-3.3.1/structures/tests/core/test_starbases.py +0 -91
- aa_structures-3.3.1/structures/tests/integration/test_tasks.py +0 -716
- aa_structures-3.3.1/structures/tests/models/test_owners_2.py +0 -596
- aa_structures-3.3.1/structures/tests/models/test_owners_3.py +0 -403
- aa_structures-3.3.1/structures/tests/models/test_owners_4.py +0 -459
- aa_structures-3.3.1/structures/tests/models/test_owners_5.py +0 -950
- aa_structures-3.3.1/structures/tests/testdata/create_eveuniverse.py +0 -62
- aa_structures-3.3.1/structures/tests/testdata/entities.json +0 -850
- aa_structures-3.3.1/structures/tests/testdata/esi_data.json +0 -374
- aa_structures-3.3.1/structures/tests/testdata/eveuniverse.json +0 -44427
- aa_structures-3.3.1/structures/tests/testdata/load_eveuniverse.py +0 -19
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/LICENSE +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/README.md +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/apps.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/auth_hooks.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/checks.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/core/__init__.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/core/notification_embeds/__init__.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/core/notification_embeds/billing_embeds.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/core/notification_embeds/corporate_embeds.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/core/notification_embeds/moonmining_embeds.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/core/notification_embeds/orbital_embeds.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/core/notification_embeds/skyhook_embeds.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/core/notification_embeds/sov_embeds.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/core/notification_embeds/structures_embeds.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/core/notification_embeds/tower_embeds.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/core/notification_embeds/war_embeds.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/core/notification_types.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/core/serializers.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/core/sovereignty.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/forms.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/helpers.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/locale/de/LC_MESSAGES/django.mo +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/locale/de/LC_MESSAGES/django.po +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/locale/django.pot +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/locale/en/LC_MESSAGES/django.mo +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/locale/en/LC_MESSAGES/django.po +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/locale/es/LC_MESSAGES/django.mo +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/locale/es/LC_MESSAGES/django.po +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/locale/fr_FR/LC_MESSAGES/django.mo +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/locale/fr_FR/LC_MESSAGES/django.po +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/locale/it_IT/LC_MESSAGES/django.mo +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/locale/it_IT/LC_MESSAGES/django.po +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/locale/ja/LC_MESSAGES/django.mo +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/locale/ja/LC_MESSAGES/django.po +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/locale/ko_KR/LC_MESSAGES/django.mo +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/locale/ko_KR/LC_MESSAGES/django.po +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/locale/ru/LC_MESSAGES/django.mo +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/locale/ru/LC_MESSAGES/django.po +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/locale/uk/LC_MESSAGES/django.mo +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/locale/uk/LC_MESSAGES/django.po +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/locale/zh_Hans/LC_MESSAGES/django.po +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/management/commands/__init__.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/migrations/0001_initial_new.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/migrations/0002_remove_eveuniverse_relation_names.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/migrations/0003_add_localization_and_unique_key.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/migrations/0004_improve_localization.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/migrations/0005_add_notification_types.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/migrations/0006_add_ownercharacter_disabled.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/migrations/0007_add_notificationtypes_skyhook_metenox.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/migrations/0008_add_notificationtypes_skyhook_metenox.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/migrations/0009_add_project_goal_notifications.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/migrations/__init__.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/models/__init__.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/models/eveuniverse.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/css/global.css +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/css/main.css +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/css/public.css +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/css/statistics.css +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/css/structures.css +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/bars-rotate-fade-black-36.svg +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/bars-rotate-fade-white-36.svg +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/eve_symbol_128.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/0h.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/0l.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/0m.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/0r.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/0s.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/1h.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/1l.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/1m.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/1r.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/1s.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/2h.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/2l.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/2m.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/2r.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/2s.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/3h.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/3l.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/3m.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/3r.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/3s.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/4h.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/4l.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/4m.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/4s.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/5h.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/5l.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/5m.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/5s.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/6h.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/6l.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/6m.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/7h.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/7l.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/7m.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/8h.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/8l.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/8m.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/blank.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/circle.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/dustwheel.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/h.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/l.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/m.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/noship.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/r.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/tyrannis.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/tyrannis_blue.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/tyrannis_darkred.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/tyrannis_default.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/panel/tyrannis_revelations.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/img/structures_logo.png +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/js/global.js +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/js/public.js +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/js/statistics.js +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/js/structures.js +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/vendor/datatables/plugins/dataTables.rowGroup.min.js +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/vendor/datatables/plugins/datetime.js +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/vendor/datatables/plugins/filterDropDown.min.js +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/vendor/datatables/plugins/rowGroup.bootstrap.min.css +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/static/structures/vendor/datatables/plugins/rowGroup.dataTables.min.css +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/templates/structures/base.html +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/templates/structures/modals/fitting_assets.html +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/templates/structures/modals/fitting_gfx.html +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/templates/structures/modals/poco_details.html +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/templates/structures/modals/starbase_detail.html +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/templates/structures/modals/structure_details.html +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/templates/structures/modals/tab_general_detail.html +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/templates/structures/modals/tab_services_detail.html +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/templates/structures/partials/menu.html +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/templates/structures/partials/structures/active_tags.html +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/templates/structures/templatetags/detail_title.html +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/templates/structures/templatetags/list_asset.html +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/templates/structures/templatetags/list_item.html +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/templates/structures/templatetags/list_tax_item.html +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/templates/structures/templatetags/list_title.html +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/templatetags/__init__.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/templatetags/structures.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/__init__.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/core/__init__.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/core/notification_embeds/__init__.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/core/notification_embeds/test_helpers.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/core/test_notification_types.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/core/test_sovereignty.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/integration/__init__.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/models/__init__.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/models/test_owners_6.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/test_helpers.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/test_tasks.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/testdata/__init__.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/testdata/constants.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/testdata/generate_notifications_2.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/testdata/tasks_loadtest.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/testdata/test_generate_structures.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/views/__init__.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/views/test_service_status.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/tests/views/utils.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/urls.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/views/__init__.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/views/common.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/views/status.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/webhooks/__init__.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/webhooks/models.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/webhooks/tests/__init__.py +0 -0
- {aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/webhooks/tests/test_utils.py +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: aa-structures
|
|
3
|
-
Version:
|
|
3
|
+
Version: 4.0.0b3
|
|
4
4
|
Summary: App for managing Eve Online structures with Alliance Auth.
|
|
5
5
|
Author-email: Erik Kalkoken <kalkoken87@gmail.com>
|
|
6
|
-
Requires-Python: >=3.
|
|
6
|
+
Requires-Python: >=3.10
|
|
7
7
|
Description-Content-Type: text/markdown
|
|
8
8
|
Classifier: Environment :: Web Environment
|
|
9
9
|
Classifier: Framework :: Django
|
|
@@ -12,28 +12,33 @@ Classifier: Intended Audience :: End Users/Desktop
|
|
|
12
12
|
Classifier: License :: OSI Approved :: MIT License
|
|
13
13
|
Classifier: Operating System :: OS Independent
|
|
14
14
|
Classifier: Programming Language :: Python
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
17
15
|
Classifier: Programming Language :: Python :: 3.10
|
|
18
16
|
Classifier: Programming Language :: Python :: 3.11
|
|
19
17
|
Classifier: Programming Language :: Python :: 3.12
|
|
20
18
|
Classifier: Topic :: Internet :: WWW/HTTP
|
|
21
19
|
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
|
|
22
20
|
License-File: LICENSE
|
|
23
|
-
Requires-Dist: allianceauth-app-utils>=1.
|
|
24
|
-
Requires-Dist: allianceauth>=4,<
|
|
21
|
+
Requires-Dist: allianceauth-app-utils>=1.31.0a1
|
|
22
|
+
Requires-Dist: allianceauth>=4,<6
|
|
25
23
|
Requires-Dist: dhooks-lite>=1.0
|
|
26
|
-
Requires-Dist: django-
|
|
24
|
+
Requires-Dist: django-esi>=8,<10
|
|
25
|
+
Requires-Dist: django-eveuniverse>=2.0.0a1
|
|
27
26
|
Requires-Dist: django-multiselectfield
|
|
28
27
|
Requires-Dist: django-navhelper
|
|
28
|
+
Requires-Dist: humanize>=4.7
|
|
29
29
|
Requires-Dist: pytz!=2022.2
|
|
30
|
+
Requires-Dist: pyyaml>=6
|
|
30
31
|
Requires-Dist: redis-simple-mq>=1.1
|
|
31
|
-
Requires-Dist:
|
|
32
|
+
Requires-Dist: coverage ; extra == "test"
|
|
33
|
+
Requires-Dist: factory_boy ; extra == "test"
|
|
34
|
+
Requires-Dist: markdown ; extra == "test"
|
|
35
|
+
Requires-Dist: pook ; extra == "test"
|
|
32
36
|
Project-URL: Changelog, https://gitlab.com/ErikKalkoken/aa-structures/-/blob/master/CHANGELOG.md
|
|
33
37
|
Project-URL: Documentation, https://aa-structures.readthedocs.io/en/latest/
|
|
34
38
|
Project-URL: Homepage, https://gitlab.com/ErikKalkoken/aa-structures
|
|
35
39
|
Project-URL: Source, https://gitlab.com/ErikKalkoken/aa-structures
|
|
36
40
|
Project-URL: Tracker, https://gitlab.com/ErikKalkoken/aa-structures/-/issues
|
|
41
|
+
Provides-Extra: test
|
|
37
42
|
|
|
38
43
|
# Structures
|
|
39
44
|
|
|
@@ -7,7 +7,7 @@ name = "aa-structures"
|
|
|
7
7
|
dynamic = ["version", "description"]
|
|
8
8
|
readme = "README.md"
|
|
9
9
|
license = { file = "LICENSE" }
|
|
10
|
-
requires-python = ">=3.
|
|
10
|
+
requires-python = ">=3.10"
|
|
11
11
|
authors = [{ name = "Erik Kalkoken", email = "kalkoken87@gmail.com" }]
|
|
12
12
|
classifiers = [
|
|
13
13
|
"Environment :: Web Environment",
|
|
@@ -17,8 +17,6 @@ classifiers = [
|
|
|
17
17
|
"License :: OSI Approved :: MIT License",
|
|
18
18
|
"Operating System :: OS Independent",
|
|
19
19
|
"Programming Language :: Python",
|
|
20
|
-
"Programming Language :: Python :: 3.8",
|
|
21
|
-
"Programming Language :: Python :: 3.9",
|
|
22
20
|
"Programming Language :: Python :: 3.10",
|
|
23
21
|
"Programming Language :: Python :: 3.11",
|
|
24
22
|
"Programming Language :: Python :: 3.12",
|
|
@@ -26,17 +24,22 @@ classifiers = [
|
|
|
26
24
|
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
|
|
27
25
|
]
|
|
28
26
|
dependencies = [
|
|
29
|
-
"allianceauth-app-utils>=1.
|
|
30
|
-
"allianceauth>=4,<
|
|
27
|
+
"allianceauth-app-utils>=1.31.0a1",
|
|
28
|
+
"allianceauth>=4,<6",
|
|
31
29
|
"dhooks-lite>=1.0",
|
|
32
|
-
"django-
|
|
30
|
+
"django-esi>=8,<10",
|
|
31
|
+
"django-eveuniverse>=2.0.0a1",
|
|
33
32
|
"django-multiselectfield",
|
|
34
33
|
"django-navhelper",
|
|
34
|
+
"humanize>=4.7",
|
|
35
35
|
"pytz!=2022.2",
|
|
36
|
+
"pyyaml>=6",
|
|
36
37
|
"redis-simple-mq>=1.1",
|
|
37
|
-
"humanize>=4.7",
|
|
38
38
|
]
|
|
39
39
|
|
|
40
|
+
[project.optional-dependencies]
|
|
41
|
+
test = ["coverage", "factory_boy", "markdown", "pook"]
|
|
42
|
+
|
|
40
43
|
[project.urls]
|
|
41
44
|
Homepage = "https://gitlab.com/ErikKalkoken/aa-structures"
|
|
42
45
|
Documentation = "https://aa-structures.readthedocs.io/en/latest/"
|
|
@@ -74,12 +77,13 @@ max-line-length = 120
|
|
|
74
77
|
|
|
75
78
|
[tool.pylint.'MESSAGES CONTROL']
|
|
76
79
|
disable = [
|
|
77
|
-
"too-many-instance-attributes",
|
|
78
|
-
"too-few-public-methods",
|
|
79
|
-
"imported-auth-user",
|
|
80
80
|
"cyclic-import",
|
|
81
81
|
"fixme",
|
|
82
82
|
"import-outside-toplevel",
|
|
83
|
-
"
|
|
83
|
+
"imported-auth-user",
|
|
84
84
|
"no-member",
|
|
85
|
+
"redefined-builtin",
|
|
86
|
+
"too-few-public-methods",
|
|
87
|
+
"too-many-instance-attributes",
|
|
88
|
+
"too-many-return-statements",
|
|
85
89
|
]
|
|
@@ -18,9 +18,8 @@ from django.utils.translation import gettext_lazy as _
|
|
|
18
18
|
from allianceauth.eveonline.models import EveAllianceInfo, EveCorporationInfo
|
|
19
19
|
from allianceauth.services.hooks import get_extension_logger
|
|
20
20
|
from app_utils.django import admin_boolean_icon_html
|
|
21
|
-
from app_utils.logging import LoggerAddTag
|
|
22
21
|
|
|
23
|
-
from . import
|
|
22
|
+
from . import app_settings, tasks
|
|
24
23
|
from .core.notification_types import NotificationType
|
|
25
24
|
from .models import (
|
|
26
25
|
FuelAlert,
|
|
@@ -40,7 +39,7 @@ from .models import (
|
|
|
40
39
|
Webhook,
|
|
41
40
|
)
|
|
42
41
|
|
|
43
|
-
logger =
|
|
42
|
+
logger = get_extension_logger(__name__)
|
|
44
43
|
|
|
45
44
|
|
|
46
45
|
def lines_sorted_html(items: list) -> str:
|
|
@@ -49,7 +49,7 @@ STRUCTURES_FEATURE_REFUELED_NOTIFICATIONS = clean_setting(
|
|
|
49
49
|
)
|
|
50
50
|
"""Enable / disable refueled notifications feature."""
|
|
51
51
|
|
|
52
|
-
STRUCTURES_FEATURE_SKYHOOKS = clean_setting("STRUCTURES_FEATURE_SKYHOOKS",
|
|
52
|
+
STRUCTURES_FEATURE_SKYHOOKS = clean_setting("STRUCTURES_FEATURE_SKYHOOKS", True)
|
|
53
53
|
"""Show skyhooks in structures list."""
|
|
54
54
|
|
|
55
55
|
|
|
@@ -33,17 +33,18 @@ class EveGroupId(IntEnum):
|
|
|
33
33
|
REFINERY = 1406
|
|
34
34
|
STRUCTURE_CITADEL_SERVICE_MODULE = 1321
|
|
35
35
|
UNCOMMON_MOON_ASTEROIDS = 1921
|
|
36
|
+
UPWELL_JUMP_BRIDGE = 1408
|
|
36
37
|
UPWELL_MOON_DRILL = 4744
|
|
37
38
|
|
|
38
39
|
|
|
39
40
|
class EveTypeId(IntEnum):
|
|
40
41
|
"""An EVE type ID."""
|
|
41
42
|
|
|
43
|
+
ANSIBLE_JUMP_BRIDGE = 35841
|
|
42
44
|
ASTRAHUS_UPWELL_QUANTUM_CORE = 56201
|
|
43
45
|
CALDARI_CONTROL_TOWER = 16213
|
|
44
46
|
CUSTOMS_OFFICE = 2233
|
|
45
47
|
IHUB = 32458
|
|
46
|
-
JUMP_GATE = 35841
|
|
47
48
|
LIQUID_OZONE = 16273
|
|
48
49
|
NITROGEN_FUEL_BLOCK = 4051
|
|
49
50
|
ORBITAL_SKYHOOK = 81080
|
{aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/core/notification_embeds/helpers.py
RENAMED
|
@@ -63,17 +63,15 @@ def gen_eve_entity_link(eve_entity: EveEntity) -> str:
|
|
|
63
63
|
except AttributeError:
|
|
64
64
|
return ""
|
|
65
65
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
else:
|
|
76
|
-
return ""
|
|
66
|
+
match category:
|
|
67
|
+
case EveEntity.CATEGORY_ALLIANCE:
|
|
68
|
+
url = dotlan.alliance_url(eve_entity.name)
|
|
69
|
+
case EveEntity.CATEGORY_CORPORATION:
|
|
70
|
+
url = dotlan.corporation_url(eve_entity.name)
|
|
71
|
+
case EveEntity.CATEGORY_CHARACTER:
|
|
72
|
+
url = evewho.character_url(eve_entity.id)
|
|
73
|
+
case _:
|
|
74
|
+
return ""
|
|
77
75
|
|
|
78
76
|
return Webhook.create_link(eve_entity.name, url)
|
|
79
77
|
|
|
@@ -11,7 +11,6 @@ from django.conf import settings
|
|
|
11
11
|
from django.utils.translation import gettext as _
|
|
12
12
|
|
|
13
13
|
from allianceauth.services.hooks import get_extension_logger
|
|
14
|
-
from app_utils.logging import LoggerAddTag
|
|
15
14
|
from app_utils.urls import reverse_absolute, static_file_absolute_url
|
|
16
15
|
|
|
17
16
|
from structures import __title__
|
|
@@ -21,7 +20,7 @@ from structures.models.notifications import Notification, NotificationBase, Webh
|
|
|
21
20
|
|
|
22
21
|
from .helpers import gen_alliance_link, gen_corporation_link, target_datetime_formatted
|
|
23
22
|
|
|
24
|
-
logger =
|
|
23
|
+
logger = get_extension_logger(__name__)
|
|
25
24
|
|
|
26
25
|
|
|
27
26
|
class NotificationBaseEmbed:
|
|
@@ -14,9 +14,7 @@ from app_utils.datetime import (
|
|
|
14
14
|
ldap_timedelta_2_timedelta,
|
|
15
15
|
)
|
|
16
16
|
from app_utils.django import app_labels
|
|
17
|
-
from app_utils.logging import LoggerAddTag
|
|
18
17
|
|
|
19
|
-
from structures import __title__
|
|
20
18
|
from structures.app_settings import (
|
|
21
19
|
STRUCTURES_MOON_EXTRACTION_TIMERS_ENABLED,
|
|
22
20
|
STRUCTURES_TIMERS_ARE_CORP_RESTRICTED,
|
|
@@ -37,7 +35,7 @@ if "structuretimers" in app_labels():
|
|
|
37
35
|
else:
|
|
38
36
|
Timer = None # pylint: disable = invalid-name
|
|
39
37
|
|
|
40
|
-
logger =
|
|
38
|
+
logger = get_extension_logger(__name__)
|
|
41
39
|
|
|
42
40
|
|
|
43
41
|
def add_or_remove_timer(notif: Notification) -> bool:
|
|
@@ -45,33 +43,36 @@ def add_or_remove_timer(notif: Notification) -> bool:
|
|
|
45
43
|
|
|
46
44
|
Returns True when timers where added or removed, else False
|
|
47
45
|
"""
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
46
|
+
match notif.notif_type:
|
|
47
|
+
case (
|
|
48
|
+
NotificationType.STRUCTURE_LOST_ARMOR
|
|
49
|
+
| NotificationType.STRUCTURE_LOST_SHIELD
|
|
50
|
+
):
|
|
51
|
+
timer_processed = _gen_timer_structure_reinforcement(notif)
|
|
52
|
+
case NotificationType.SOV_STRUCTURE_REINFORCED:
|
|
53
|
+
timer_processed = _gen_timer_sov_reinforcements(notif)
|
|
54
|
+
case NotificationType.ORBITAL_REINFORCED:
|
|
55
|
+
timer_processed = _gen_timer_customs_office_reinforcements(notif)
|
|
56
|
+
case NotificationType.SKYHOOK_LOST_SHIELDS:
|
|
57
|
+
timer_processed = _gen_timer_skyhook_reinforcements(notif)
|
|
58
|
+
case (
|
|
59
|
+
NotificationType.MOONMINING_EXTRACTION_STARTED
|
|
60
|
+
| NotificationType.MOONMINING_EXTRACTION_CANCELLED
|
|
61
|
+
):
|
|
62
|
+
if not STRUCTURES_MOON_EXTRACTION_TIMERS_ENABLED:
|
|
63
|
+
timer_processed = None
|
|
64
|
+
else:
|
|
65
|
+
timer_processed = _gen_timer_moon_extraction(notif)
|
|
66
|
+
case NotificationType.TOWER_REINFORCED_EXTRA:
|
|
67
|
+
timer_processed = _gen_timer_tower_reinforcements(notif)
|
|
68
|
+
case _:
|
|
69
|
+
raise NotImplementedError(notif.notif_type)
|
|
70
|
+
|
|
71
71
|
if timer_processed:
|
|
72
72
|
logger.info("%s: Created timer for notification", notif.notification_id)
|
|
73
73
|
notif.is_timer_added = True
|
|
74
74
|
notif.save()
|
|
75
|
+
|
|
75
76
|
return timer_processed
|
|
76
77
|
|
|
77
78
|
|
|
@@ -290,88 +291,89 @@ def _gen_timer_moon_extraction(notif: Notification) -> bool:
|
|
|
290
291
|
timer_processed = False
|
|
291
292
|
structure_type = notif.eve_structure_type()
|
|
292
293
|
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
AuthTimer
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
Timer
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
294
|
+
match notif.notif_type:
|
|
295
|
+
case NotificationType.MOONMINING_EXTRACTION_STARTED:
|
|
296
|
+
if AuthTimer:
|
|
297
|
+
AuthTimer.objects.create(
|
|
298
|
+
details=gettext("Extraction ready"),
|
|
299
|
+
system=solar_system.name,
|
|
300
|
+
planet_moon=moon.name,
|
|
301
|
+
structure=structure_type_name,
|
|
302
|
+
objective=objective,
|
|
303
|
+
eve_time=eve_time,
|
|
304
|
+
eve_corp=notif.owner.corporation,
|
|
305
|
+
corp_timer=STRUCTURES_TIMERS_ARE_CORP_RESTRICTED,
|
|
306
|
+
)
|
|
307
|
+
timer_processed = True
|
|
308
|
+
|
|
309
|
+
if Timer:
|
|
310
|
+
Timer.objects.create(
|
|
311
|
+
eve_solar_system=solar_system,
|
|
312
|
+
structure_type=structure_type,
|
|
313
|
+
timer_type=Timer.Type.MOONMINING,
|
|
314
|
+
objective=Timer.Objective.FRIENDLY,
|
|
315
|
+
date=eve_time,
|
|
316
|
+
location_details=moon.name,
|
|
317
|
+
eve_corporation=notif.owner.corporation,
|
|
318
|
+
eve_alliance=notif.owner.corporation.alliance,
|
|
319
|
+
visibility=_calc_visibility(),
|
|
320
|
+
structure_name=parsed_text["structureName"],
|
|
321
|
+
owner_name=notif.owner.corporation.corporation_name,
|
|
322
|
+
details_notes=_timer_details_notes(notif),
|
|
323
|
+
)
|
|
324
|
+
timer_processed = True
|
|
325
|
+
|
|
326
|
+
case NotificationType.MOONMINING_EXTRACTION_CANCELLED:
|
|
322
327
|
timer_processed = True
|
|
323
328
|
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
notif.notification_id,
|
|
373
|
-
deleted_count,
|
|
374
|
-
)
|
|
329
|
+
for notification in Notification.objects.filter(
|
|
330
|
+
notif_type=NotificationType.MOONMINING_EXTRACTION_STARTED,
|
|
331
|
+
owner=notif.owner,
|
|
332
|
+
is_timer_added=True,
|
|
333
|
+
timestamp__lte=notif.timestamp,
|
|
334
|
+
).order_by("-timestamp"):
|
|
335
|
+
notification: Notification
|
|
336
|
+
parsed_text_2 = notification.parsed_text()
|
|
337
|
+
my_structure_type_id = parsed_text_2["structureTypeID"]
|
|
338
|
+
if my_structure_type_id == parsed_text["structureTypeID"]:
|
|
339
|
+
eve_time_2 = _extract_eve_time(parsed_text_2)
|
|
340
|
+
|
|
341
|
+
if AuthTimer:
|
|
342
|
+
timer_query = AuthTimer.objects.filter(
|
|
343
|
+
system=solar_system.name,
|
|
344
|
+
planet_moon=moon.name,
|
|
345
|
+
structure=structure_type_name,
|
|
346
|
+
objective=objective,
|
|
347
|
+
eve_time=eve_time_2,
|
|
348
|
+
)
|
|
349
|
+
deleted_count, _ = timer_query.delete()
|
|
350
|
+
logger.info(
|
|
351
|
+
"%s: removed %d obsolete Auth timers related to notification",
|
|
352
|
+
notif.notification_id,
|
|
353
|
+
deleted_count,
|
|
354
|
+
)
|
|
355
|
+
|
|
356
|
+
if Timer:
|
|
357
|
+
timer_query = Timer.objects.filter(
|
|
358
|
+
eve_solar_system=solar_system,
|
|
359
|
+
structure_type=structure_type,
|
|
360
|
+
timer_type=Timer.Type.MOONMINING,
|
|
361
|
+
location_details=moon.name,
|
|
362
|
+
date=eve_time_2,
|
|
363
|
+
objective=Timer.Objective.FRIENDLY,
|
|
364
|
+
eve_corporation=notif.owner.corporation,
|
|
365
|
+
eve_alliance=notif.owner.corporation.alliance,
|
|
366
|
+
visibility=_calc_visibility(),
|
|
367
|
+
structure_name=parsed_text["structureName"],
|
|
368
|
+
owner_name=notif.owner.corporation.corporation_name,
|
|
369
|
+
)
|
|
370
|
+
deleted_count, _ = timer_query.delete()
|
|
371
|
+
logger.info(
|
|
372
|
+
"%s: removed %d obsolete structure timers "
|
|
373
|
+
"related to notification",
|
|
374
|
+
notif.notification_id,
|
|
375
|
+
deleted_count,
|
|
376
|
+
)
|
|
375
377
|
|
|
376
378
|
return timer_processed
|
|
377
379
|
|
|
@@ -22,6 +22,7 @@ def is_starbase(eve_type: EveType) -> bool:
|
|
|
22
22
|
return eve_type.eve_group_id == EveGroupId.CONTROL_TOWER
|
|
23
23
|
|
|
24
24
|
|
|
25
|
+
# TODO: Use dogmas to determine tower size instead of name
|
|
25
26
|
def starbase_size(eve_type: EveType) -> StarbaseSize:
|
|
26
27
|
"""Return the size of a starbase or None if this type is not a starbase."""
|
|
27
28
|
if not is_starbase(eve_type):
|
{aa_structures-3.3.1 → aa_structures-4.0.0b3}/structures/management/commands/structures_load_eve.py
RENAMED
|
@@ -4,12 +4,11 @@ from django.core.management import call_command
|
|
|
4
4
|
from django.core.management.base import BaseCommand
|
|
5
5
|
|
|
6
6
|
from allianceauth.services.hooks import get_extension_logger
|
|
7
|
-
from app_utils.logging import LoggerAddTag
|
|
8
7
|
|
|
9
8
|
from structures import __title__
|
|
10
9
|
from structures.constants import EveCategoryId, EveGroupId, EveTypeId
|
|
11
10
|
|
|
12
|
-
logger =
|
|
11
|
+
logger = get_extension_logger(__name__)
|
|
13
12
|
|
|
14
13
|
|
|
15
14
|
class Command(BaseCommand):
|
|
@@ -5,12 +5,10 @@ from eveuniverse.models import EveEntity, EveMoon, EvePlanet, EveSolarSystem, Ev
|
|
|
5
5
|
|
|
6
6
|
from allianceauth.services.hooks import get_extension_logger
|
|
7
7
|
from app_utils.esi import fetch_esi_status
|
|
8
|
-
from app_utils.logging import LoggerAddTag
|
|
9
8
|
|
|
10
|
-
from structures import __title__
|
|
11
9
|
from structures.models import Notification, StarbaseDetailFuel, Structure, StructureItem
|
|
12
10
|
|
|
13
|
-
logger =
|
|
11
|
+
logger = get_extension_logger(__name__)
|
|
14
12
|
|
|
15
13
|
|
|
16
14
|
class Command(BaseCommand):
|
|
@@ -4,13 +4,11 @@ from django.core.management.base import BaseCommand
|
|
|
4
4
|
from eveuniverse.models import EveSolarSystem
|
|
5
5
|
|
|
6
6
|
from allianceauth.services.hooks import get_extension_logger
|
|
7
|
-
from app_utils.logging import LoggerAddTag
|
|
8
7
|
|
|
9
|
-
from structures import __title__
|
|
10
8
|
from structures.constants import EveTypeId
|
|
11
9
|
from structures.models import Structure
|
|
12
10
|
|
|
13
|
-
logger =
|
|
11
|
+
logger = get_extension_logger(__name__)
|
|
14
12
|
|
|
15
13
|
|
|
16
14
|
class Command(BaseCommand):
|
|
@@ -17,9 +17,7 @@ from eveuniverse.models import EveMoon, EvePlanet, EveSolarSystem, EveType
|
|
|
17
17
|
|
|
18
18
|
from allianceauth.eveonline.models import EveCorporationInfo
|
|
19
19
|
from allianceauth.services.hooks import get_extension_logger
|
|
20
|
-
from app_utils.logging import LoggerAddTag
|
|
21
20
|
|
|
22
|
-
from . import __title__
|
|
23
21
|
from .app_settings import STRUCTURES_HOURS_UNTIL_STALE_NOTIFICATION
|
|
24
22
|
from .constants import EveCategoryId, EveTypeId
|
|
25
23
|
from .core.notification_types import NotificationType
|
|
@@ -27,19 +25,20 @@ from .providers import esi
|
|
|
27
25
|
from .webhooks.managers import WebhookBaseManager
|
|
28
26
|
|
|
29
27
|
if TYPE_CHECKING:
|
|
30
|
-
from .models import Owner
|
|
28
|
+
from .models import Owner, Structure
|
|
31
29
|
|
|
32
|
-
logger =
|
|
30
|
+
logger = get_extension_logger(__name__)
|
|
33
31
|
|
|
34
32
|
|
|
35
33
|
class EveSovereigntyMapManager(models.Manager):
|
|
36
34
|
def update_or_create_all_from_esi(self):
|
|
37
35
|
"""Update or create complete sovereignty map from ESI."""
|
|
38
|
-
sov_map = esi.client.Sovereignty.
|
|
36
|
+
sov_map = esi.client.Sovereignty.GetSovereigntyMap().results(use_etag=False)
|
|
39
37
|
logger.info("Retrieved sovereignty map from ESI")
|
|
40
38
|
last_updated = now()
|
|
41
39
|
obj_list = []
|
|
42
|
-
for
|
|
40
|
+
for row in sov_map:
|
|
41
|
+
solar_system = row.model_dump()
|
|
43
42
|
obj_def = {
|
|
44
43
|
"solar_system_id": solar_system["system_id"],
|
|
45
44
|
"last_updated": last_updated,
|
|
@@ -373,9 +372,10 @@ class StructureManagerBase(models.Manager):
|
|
|
373
372
|
if token is None:
|
|
374
373
|
raise ValueError("Can not fetch structure without token")
|
|
375
374
|
|
|
376
|
-
|
|
377
|
-
structure_id=id, token=token
|
|
378
|
-
).
|
|
375
|
+
data = esi.client.Universe.GetUniverseStructuresStructureId(
|
|
376
|
+
structure_id=id, token=token
|
|
377
|
+
).result(use_etag=False)
|
|
378
|
+
structure_info = data.model_dump()
|
|
379
379
|
structure = {
|
|
380
380
|
"structure_id": id,
|
|
381
381
|
"name": self.model.extract_name_from_esi_response(structure_info["name"]),
|
|
@@ -384,7 +384,7 @@ class StructureManagerBase(models.Manager):
|
|
|
384
384
|
"system_id": structure_info["solar_system_id"],
|
|
385
385
|
}
|
|
386
386
|
owner = Owner.objects.get(
|
|
387
|
-
corporation__corporation_id=structure_info["
|
|
387
|
+
corporation__corporation_id=structure_info["owner_id"]
|
|
388
388
|
)
|
|
389
389
|
obj, created = self.update_or_create_from_dict(structure=structure, owner=owner)
|
|
390
390
|
return obj, created
|
|
@@ -393,7 +393,6 @@ class StructureManagerBase(models.Manager):
|
|
|
393
393
|
self, structure: dict, owner: Owner
|
|
394
394
|
) -> Tuple[Any, bool]:
|
|
395
395
|
"""Update or create a structure from a dict."""
|
|
396
|
-
|
|
397
396
|
eve_type: EveType = EveType.objects.get_or_create_esi(id=structure["type_id"])[
|
|
398
397
|
0
|
|
399
398
|
]
|
|
@@ -409,6 +408,7 @@ class StructureManagerBase(models.Manager):
|
|
|
409
408
|
except self.model.DoesNotExist:
|
|
410
409
|
old_obj = None
|
|
411
410
|
|
|
411
|
+
obj: Structure
|
|
412
412
|
obj, created = self.update_or_create(
|
|
413
413
|
id=structure["structure_id"],
|
|
414
414
|
defaults={
|