aa-structures 3.2.1__tar.gz → 3.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {aa_structures-3.2.1 → aa_structures-3.3.0}/PKG-INFO +4 -4
- {aa_structures-3.2.1 → aa_structures-3.3.0}/pyproject.toml +3 -3
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/__init__.py +1 -1
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tasks.py +68 -43
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/templates/structures/public.html +1 -1
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/integration/test_tasks.py +2 -2
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/test_tasks.py +14 -12
- {aa_structures-3.2.1 → aa_structures-3.3.0}/LICENSE +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/README.md +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/admin.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/app_settings.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/apps.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/auth_hooks.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/checks.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/constants.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/core/__init__.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/core/notification_embeds/__init__.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/core/notification_embeds/billing_embeds.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/core/notification_embeds/corporate_embeds.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/core/notification_embeds/helpers.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/core/notification_embeds/main.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/core/notification_embeds/moonmining_embeds.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/core/notification_embeds/orbital_embeds.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/core/notification_embeds/skyhook_embeds.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/core/notification_embeds/sov_embeds.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/core/notification_embeds/structures_embeds.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/core/notification_embeds/tower_embeds.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/core/notification_embeds/war_embeds.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/core/notification_timers.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/core/notification_types.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/core/serializers.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/core/sovereignty.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/core/starbases.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/forms.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/helpers.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/locale/de/LC_MESSAGES/django.mo +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/locale/de/LC_MESSAGES/django.po +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/locale/django.pot +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/locale/en/LC_MESSAGES/django.mo +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/locale/en/LC_MESSAGES/django.po +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/locale/es/LC_MESSAGES/django.mo +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/locale/es/LC_MESSAGES/django.po +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/locale/fr_FR/LC_MESSAGES/django.mo +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/locale/fr_FR/LC_MESSAGES/django.po +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/locale/it_IT/LC_MESSAGES/django.mo +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/locale/it_IT/LC_MESSAGES/django.po +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/locale/ja/LC_MESSAGES/django.mo +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/locale/ja/LC_MESSAGES/django.po +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/locale/ko_KR/LC_MESSAGES/django.mo +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/locale/ko_KR/LC_MESSAGES/django.po +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/locale/ru/LC_MESSAGES/django.mo +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/locale/ru/LC_MESSAGES/django.po +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/locale/uk/LC_MESSAGES/django.mo +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/locale/uk/LC_MESSAGES/django.po +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/locale/zh_Hans/LC_MESSAGES/django.po +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/management/commands/__init__.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/management/commands/structures_load_eve.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/management/commands/structures_preload_eveuniverse.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/management/commands/structures_update_poco_planets.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/managers.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/migrations/0001_initial_new.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/migrations/0002_remove_eveuniverse_relation_names.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/migrations/0003_add_localization_and_unique_key.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/migrations/0004_improve_localization.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/migrations/0005_add_notification_types.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/migrations/0006_add_ownercharacter_disabled.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/migrations/0007_add_notificationtypes_skyhook_metenox.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/migrations/0008_add_notificationtypes_skyhook_metenox.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/migrations/0009_add_project_goal_notifications.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/migrations/__init__.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/models/__init__.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/models/eveuniverse.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/models/notifications.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/models/owners.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/models/structures_1.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/models/structures_2.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/providers.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/css/global.css +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/css/main.css +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/css/public.css +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/css/statistics.css +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/css/structures.css +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/bars-rotate-fade-black-36.svg +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/bars-rotate-fade-white-36.svg +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/eve_symbol_128.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/0h.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/0l.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/0m.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/0r.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/0s.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/1h.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/1l.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/1m.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/1r.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/1s.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/2h.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/2l.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/2m.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/2r.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/2s.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/3h.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/3l.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/3m.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/3r.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/3s.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/4h.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/4l.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/4m.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/4s.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/5h.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/5l.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/5m.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/5s.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/6h.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/6l.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/6m.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/7h.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/7l.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/7m.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/8h.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/8l.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/8m.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/blank.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/circle.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/dustwheel.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/h.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/l.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/m.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/noship.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/r.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/tyrannis.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/tyrannis_blue.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/tyrannis_darkred.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/tyrannis_default.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/panel/tyrannis_revelations.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/structures_logo.png +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/js/global.js +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/js/public.js +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/js/statistics.js +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/js/structures.js +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/vendor/datatables/plugins/dataTables.rowGroup.min.js +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/vendor/datatables/plugins/datetime.js +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/vendor/datatables/plugins/filterDropDown.min.js +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/vendor/datatables/plugins/rowGroup.bootstrap.min.css +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/vendor/datatables/plugins/rowGroup.dataTables.min.css +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/templates/structures/base.html +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/templates/structures/modals/fitting_assets.html +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/templates/structures/modals/fitting_gfx.html +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/templates/structures/modals/poco_details.html +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/templates/structures/modals/starbase_detail.html +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/templates/structures/modals/structure_details.html +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/templates/structures/modals/tab_general_detail.html +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/templates/structures/modals/tab_services_detail.html +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/templates/structures/partials/menu.html +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/templates/structures/partials/public/poco_list.html +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/templates/structures/partials/statistics/structure_summary.html +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/templates/structures/partials/structures/active_tags.html +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/templates/structures/partials/structures/jump_gate_list.html +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/templates/structures/partials/structures/orbital_list.html +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/templates/structures/partials/structures/starbase_list.html +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/templates/structures/partials/structures/structure_list.html +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/templates/structures/statistics.html +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/templates/structures/structures.html +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/templates/structures/templatetags/detail_title.html +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/templates/structures/templatetags/list_asset.html +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/templates/structures/templatetags/list_item.html +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/templates/structures/templatetags/list_tax_item.html +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/templates/structures/templatetags/list_title.html +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/templatetags/__init__.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/templatetags/structures.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/__init__.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/core/__init__.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/core/notification_embeds/__init__.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/core/notification_embeds/test_helpers.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/core/notification_embeds/test_main.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/core/test_notification_structuretimers.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/core/test_notification_types.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/core/test_notifications_timers.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/core/test_serializers.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/core/test_sovereignty.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/core/test_starbases.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/integration/__init__.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/integration/test_views.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/models/__init__.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/models/test_eveuniverse.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/models/test_notifications_1.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/models/test_notifications_2.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/models/test_notifications_3.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/models/test_notifications_discord.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/models/test_owners_1.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/models/test_owners_2.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/models/test_owners_3.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/models/test_owners_4.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/models/test_owners_5.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/models/test_owners_6.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/models/test_structures.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/test_admin.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/test_helpers.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/test_managers_1.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/test_managers_2.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/testdata/__init__.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/testdata/constants.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/testdata/create_eveuniverse.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/testdata/entities.json +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/testdata/esi_data.json +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/testdata/eveuniverse.json +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/testdata/factories.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/testdata/generate_notifications.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/testdata/generate_notifications_2.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/testdata/generate_structures.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/testdata/helpers.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/testdata/load_eveuniverse.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/testdata/tasks_loadtest.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/testdata/test_generate_structures.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/views/__init__.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/views/test_public.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/views/test_service_status.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/views/test_statistics.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/views/test_structures.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/tests/views/utils.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/urls.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/views/__init__.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/views/common.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/views/public.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/views/statistics.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/views/status.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/views/structures.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/webhooks/__init__.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/webhooks/core.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/webhooks/managers.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/webhooks/models.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/webhooks/tests/__init__.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/webhooks/tests/test_core.py +0 -0
- {aa_structures-3.2.1 → aa_structures-3.3.0}/structures/webhooks/tests/test_utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: aa-structures
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.3.0
|
|
4
4
|
Summary: App for managing Eve Online structures with Alliance Auth.
|
|
5
5
|
Author-email: Erik Kalkoken <kalkoken87@gmail.com>
|
|
6
6
|
Requires-Python: >=3.8
|
|
@@ -20,14 +20,14 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
20
20
|
Classifier: Topic :: Internet :: WWW/HTTP
|
|
21
21
|
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
|
|
22
22
|
License-File: LICENSE
|
|
23
|
-
Requires-Dist: allianceauth-app-utils>=1.
|
|
23
|
+
Requires-Dist: allianceauth-app-utils>=1.29.1
|
|
24
24
|
Requires-Dist: allianceauth>=4,<5
|
|
25
25
|
Requires-Dist: dhooks-lite>=1.0
|
|
26
|
-
Requires-Dist: django-eveuniverse>=1.
|
|
26
|
+
Requires-Dist: django-eveuniverse>=1.6
|
|
27
27
|
Requires-Dist: django-multiselectfield
|
|
28
28
|
Requires-Dist: django-navhelper
|
|
29
29
|
Requires-Dist: pytz!=2022.2
|
|
30
|
-
Requires-Dist: redis-simple-mq>=1.
|
|
30
|
+
Requires-Dist: redis-simple-mq>=1.1
|
|
31
31
|
Requires-Dist: humanize>=4.7
|
|
32
32
|
Project-URL: Changelog, https://gitlab.com/ErikKalkoken/aa-structures/-/blob/master/CHANGELOG.md
|
|
33
33
|
Project-URL: Documentation, https://aa-structures.readthedocs.io/en/latest/
|
|
@@ -26,14 +26,14 @@ classifiers = [
|
|
|
26
26
|
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
|
|
27
27
|
]
|
|
28
28
|
dependencies = [
|
|
29
|
-
"allianceauth-app-utils>=1.
|
|
29
|
+
"allianceauth-app-utils>=1.29.1",
|
|
30
30
|
"allianceauth>=4,<5",
|
|
31
31
|
"dhooks-lite>=1.0",
|
|
32
|
-
"django-eveuniverse>=1.
|
|
32
|
+
"django-eveuniverse>=1.6",
|
|
33
33
|
"django-multiselectfield",
|
|
34
34
|
"django-navhelper",
|
|
35
35
|
"pytz!=2022.2",
|
|
36
|
-
"redis-simple-mq>=1.
|
|
36
|
+
"redis-simple-mq>=1.1",
|
|
37
37
|
"humanize>=4.7",
|
|
38
38
|
]
|
|
39
39
|
|
|
@@ -2,14 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
from typing import Iterable, Optional
|
|
4
4
|
|
|
5
|
-
from celery import chain, shared_task
|
|
5
|
+
from celery import Task, chain, shared_task
|
|
6
6
|
|
|
7
7
|
from django.contrib.auth.models import User
|
|
8
|
+
from django.db.models import QuerySet
|
|
8
9
|
|
|
9
10
|
from allianceauth.notifications import notify
|
|
10
11
|
from allianceauth.services.hooks import get_extension_logger
|
|
11
12
|
from allianceauth.services.tasks import QueueOnce
|
|
12
|
-
from app_utils.esi import
|
|
13
|
+
from app_utils.esi import retry_task_on_esi_error_and_offline
|
|
13
14
|
from app_utils.logging import LoggerAddTag
|
|
14
15
|
|
|
15
16
|
from . import __title__
|
|
@@ -19,6 +20,7 @@ from .models import (
|
|
|
19
20
|
EveSovereigntyMap,
|
|
20
21
|
FuelAlertConfig,
|
|
21
22
|
JumpFuelAlertConfig,
|
|
23
|
+
Notification,
|
|
22
24
|
Owner,
|
|
23
25
|
Webhook,
|
|
24
26
|
)
|
|
@@ -35,19 +37,14 @@ def update_all_structures():
|
|
|
35
37
|
Main task for starting regular update of all structures
|
|
36
38
|
and related data from ESI.
|
|
37
39
|
"""
|
|
38
|
-
if not fetch_esi_status().is_ok:
|
|
39
|
-
logger.warning("ESI currently not available. Aborting.")
|
|
40
|
-
return
|
|
41
40
|
chain(update_sov_map.si(), update_structures.si()).delay()
|
|
42
41
|
|
|
43
42
|
|
|
44
|
-
@shared_task(time_limit=STRUCTURES_TASKS_TIME_LIMIT)
|
|
45
|
-
def update_sov_map():
|
|
43
|
+
@shared_task(bind=True, base=QueueOnce, time_limit=STRUCTURES_TASKS_TIME_LIMIT)
|
|
44
|
+
def update_sov_map(self: Task):
|
|
46
45
|
"""Update sovereignty map from ESI."""
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
return
|
|
50
|
-
EveSovereigntyMap.objects.update_or_create_all_from_esi()
|
|
46
|
+
with retry_task_on_esi_error_and_offline(self):
|
|
47
|
+
EveSovereigntyMap.objects.update_or_create_all_from_esi()
|
|
51
48
|
|
|
52
49
|
|
|
53
50
|
@shared_task(time_limit=STRUCTURES_TASKS_TIME_LIMIT)
|
|
@@ -68,7 +65,7 @@ def update_structures():
|
|
|
68
65
|
|
|
69
66
|
|
|
70
67
|
@shared_task(time_limit=STRUCTURES_TASKS_TIME_LIMIT)
|
|
71
|
-
def update_all_for_owner(owner_pk, user_pk: Optional[int] = None):
|
|
68
|
+
def update_all_for_owner(owner_pk: int, user_pk: Optional[int] = None):
|
|
72
69
|
"""Update structures and notifications for owner from ESI."""
|
|
73
70
|
chain(
|
|
74
71
|
update_structures_for_owner.si(owner_pk, user_pk),
|
|
@@ -77,44 +74,64 @@ def update_all_for_owner(owner_pk, user_pk: Optional[int] = None):
|
|
|
77
74
|
|
|
78
75
|
|
|
79
76
|
@shared_task(time_limit=STRUCTURES_TASKS_TIME_LIMIT)
|
|
80
|
-
def update_structures_for_owner(owner_pk, user_pk: Optional[int] = None):
|
|
77
|
+
def update_structures_for_owner(owner_pk: int, user_pk: Optional[int] = None):
|
|
81
78
|
"""Fetch all structures for owner and update related corp assets from ESI."""
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
update_structures_esi_for_owner.si(owner_pk, user_pk),
|
|
87
|
-
update_structures_assets_for_owner.si(owner_pk, user_pk),
|
|
88
|
-
).delay()
|
|
79
|
+
chain(
|
|
80
|
+
update_structures_esi_for_owner.si(owner_pk, user_pk),
|
|
81
|
+
update_structures_assets_for_owner.si(owner_pk, user_pk),
|
|
82
|
+
).delay()
|
|
89
83
|
|
|
90
84
|
|
|
91
|
-
@shared_task(
|
|
92
|
-
|
|
93
|
-
|
|
85
|
+
@shared_task(
|
|
86
|
+
bind=True,
|
|
87
|
+
base=QueueOnce,
|
|
88
|
+
once={"keys": ["owner_pk"], "graceful": True},
|
|
89
|
+
time_limit=STRUCTURES_TASKS_TIME_LIMIT,
|
|
90
|
+
)
|
|
91
|
+
def update_structures_esi_for_owner(
|
|
92
|
+
self: Task, owner_pk: int, user_pk: Optional[int] = None
|
|
93
|
+
):
|
|
94
|
+
"""Update all structures for an owner from ESI.
|
|
95
|
+
|
|
96
|
+
Optionally notify user_pk about the result.
|
|
97
|
+
"""
|
|
94
98
|
owner = Owner.objects.get(pk=owner_pk)
|
|
95
|
-
|
|
99
|
+
with retry_task_on_esi_error_and_offline(self):
|
|
100
|
+
owner.update_structures_esi(_get_user(user_pk))
|
|
96
101
|
|
|
97
102
|
|
|
98
|
-
@shared_task(
|
|
99
|
-
|
|
100
|
-
|
|
103
|
+
@shared_task(
|
|
104
|
+
bind=True,
|
|
105
|
+
base=QueueOnce,
|
|
106
|
+
once={"keys": ["owner_pk"], "graceful": True},
|
|
107
|
+
time_limit=STRUCTURES_TASKS_TIME_LIMIT,
|
|
108
|
+
)
|
|
109
|
+
def update_structures_assets_for_owner(
|
|
110
|
+
self: Task, owner_pk: int, user_pk: Optional[int] = None
|
|
111
|
+
):
|
|
112
|
+
"""Update all related assets for an owner from ESI.
|
|
113
|
+
|
|
114
|
+
Optionally notify user_pk about the result.
|
|
115
|
+
"""
|
|
101
116
|
owner = Owner.objects.get(pk=owner_pk)
|
|
102
|
-
|
|
117
|
+
with retry_task_on_esi_error_and_offline(self):
|
|
118
|
+
owner.update_asset_esi(_get_user(user_pk))
|
|
103
119
|
|
|
104
120
|
|
|
105
121
|
@shared_task(time_limit=STRUCTURES_TASKS_TIME_LIMIT)
|
|
106
122
|
def fetch_all_notifications():
|
|
107
123
|
"""Fetch notifications for all owners and send new fuel notifications."""
|
|
108
|
-
for owner in Owner.objects.
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
124
|
+
for owner in Owner.objects.filter(is_active=True):
|
|
125
|
+
owner.update_is_up()
|
|
126
|
+
process_notifications_for_owner.apply_async(
|
|
127
|
+
kwargs={"owner_pk": owner.pk}, priority=TASK_PRIORITY_HIGH
|
|
128
|
+
)
|
|
129
|
+
|
|
114
130
|
for config_pk in FuelAlertConfig.objects.filter(is_enabled=True).values_list(
|
|
115
131
|
"pk", flat=True
|
|
116
132
|
):
|
|
117
133
|
send_structure_fuel_notifications_for_config.delay(config_pk)
|
|
134
|
+
|
|
118
135
|
for config_pk in JumpFuelAlertConfig.objects.filter(is_enabled=True).values_list(
|
|
119
136
|
"pk", flat=True
|
|
120
137
|
):
|
|
@@ -124,9 +141,6 @@ def fetch_all_notifications():
|
|
|
124
141
|
@shared_task(time_limit=STRUCTURES_TASKS_TIME_LIMIT)
|
|
125
142
|
def process_notifications_for_owner(owner_pk: int, user_pk: Optional[int] = None):
|
|
126
143
|
"""Fetch all notification for owner from ESI and processes them."""
|
|
127
|
-
if not fetch_esi_status().is_ok:
|
|
128
|
-
logger.warning("ESI currently not available. Aborting.")
|
|
129
|
-
return
|
|
130
144
|
chain(
|
|
131
145
|
fetch_notification_for_owner.si(owner_pk=owner_pk, user_pk=user_pk).set(
|
|
132
146
|
priority=TASK_PRIORITY_HIGH
|
|
@@ -143,11 +157,22 @@ def process_notifications_for_owner(owner_pk: int, user_pk: Optional[int] = None
|
|
|
143
157
|
).delay()
|
|
144
158
|
|
|
145
159
|
|
|
146
|
-
@shared_task(
|
|
147
|
-
|
|
148
|
-
|
|
160
|
+
@shared_task(
|
|
161
|
+
bind=True,
|
|
162
|
+
base=QueueOnce,
|
|
163
|
+
once={"keys": ["owner_pk"], "graceful": True},
|
|
164
|
+
time_limit=STRUCTURES_TASKS_TIME_LIMIT,
|
|
165
|
+
)
|
|
166
|
+
def fetch_notification_for_owner(
|
|
167
|
+
self: Task, owner_pk: int, user_pk: Optional[int] = None
|
|
168
|
+
):
|
|
169
|
+
"""Fetch notifications from ESI.
|
|
170
|
+
|
|
171
|
+
Optionally notify user_pk about the result.
|
|
172
|
+
"""
|
|
149
173
|
owner = Owner.objects.get(pk=owner_pk)
|
|
150
|
-
|
|
174
|
+
with retry_task_on_esi_error_and_offline(self):
|
|
175
|
+
owner.fetch_notifications_esi(_get_user(user_pk))
|
|
151
176
|
|
|
152
177
|
|
|
153
178
|
@shared_task(time_limit=STRUCTURES_TASKS_TIME_LIMIT)
|
|
@@ -157,7 +182,7 @@ def update_notifications_structure_relations(owner_pk: int) -> int:
|
|
|
157
182
|
Returns number of updated notifications.
|
|
158
183
|
"""
|
|
159
184
|
owner = Owner.objects.get(pk=owner_pk)
|
|
160
|
-
notif_need_update_qs = owner.notification_set.filter(
|
|
185
|
+
notif_need_update_qs: QuerySet[Notification] = owner.notification_set.filter(
|
|
161
186
|
notif_type__in=NotificationType.structure_related(), structures__isnull=True
|
|
162
187
|
)
|
|
163
188
|
notif_need_update_count = notif_need_update_qs.count()
|
|
@@ -213,7 +238,7 @@ def send_queued_messages_for_webhooks(webhooks: Iterable[Webhook]):
|
|
|
213
238
|
)
|
|
214
239
|
|
|
215
240
|
|
|
216
|
-
@shared_task(base=QueueOnce)
|
|
241
|
+
@shared_task(base=QueueOnce, once={"keys": ["owner_pk"], "webhook_pk": True})
|
|
217
242
|
def send_messages_for_webhook(webhook_pk: int) -> None:
|
|
218
243
|
"""Send all currently queued messages for given webhook to Discord."""
|
|
219
244
|
Webhook.objects.send_queued_messages_for_webhook(webhook_pk)
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
|
|
73
73
|
<link
|
|
74
74
|
rel="stylesheet"
|
|
75
|
-
href="{% static '
|
|
75
|
+
href="{% static 'structures/vendor/datatables/plugins/rowGroup.dataTables.min.css' %}"
|
|
76
76
|
type="text/css">
|
|
77
77
|
|
|
78
78
|
<link rel="stylesheet" href="{% static 'structures/css/global.css' %}" type="text/css" media="screen">
|
|
@@ -10,8 +10,8 @@ from django.utils.timezone import now
|
|
|
10
10
|
from eveuniverse.models import EvePlanet, EveSolarSystem
|
|
11
11
|
|
|
12
12
|
from app_utils.django import app_labels
|
|
13
|
-
from app_utils.esi import EsiStatus
|
|
14
13
|
from app_utils.esi_testing import EsiClientStub, EsiEndpoint
|
|
14
|
+
from app_utils.testing import reset_celery_once_locks
|
|
15
15
|
|
|
16
16
|
from structures import tasks
|
|
17
17
|
from structures.core.notification_types import NotificationType
|
|
@@ -54,7 +54,6 @@ TASKS_PATH = "structures.tasks"
|
|
|
54
54
|
@patch(OWNERS_PATH + ".STRUCTURES_FEATURE_CUSTOMS_OFFICES", True)
|
|
55
55
|
@patch(OWNERS_PATH + ".STRUCTURES_FEATURE_STARBASES", True)
|
|
56
56
|
@patch("structures.webhooks.core.dhooks_lite.Webhook.execute", spec=True)
|
|
57
|
-
@patch(TASKS_PATH + ".fetch_esi_status", lambda: EsiStatus(True, 99, 60))
|
|
58
57
|
@patch(MANAGERS_PATH + ".esi")
|
|
59
58
|
@patch(OWNERS_PATH + ".esi")
|
|
60
59
|
class TestTasks(TestCase):
|
|
@@ -62,6 +61,7 @@ class TestTasks(TestCase):
|
|
|
62
61
|
def setUpClass(cls):
|
|
63
62
|
super().setUpClass()
|
|
64
63
|
load_eveuniverse()
|
|
64
|
+
reset_celery_once_locks("structures")
|
|
65
65
|
|
|
66
66
|
def test_should_fetch_new_upwell_structure_from_esi(
|
|
67
67
|
self, mock_esi_2, mock_esi, mock_execute
|
|
@@ -3,9 +3,12 @@ from unittest.mock import patch
|
|
|
3
3
|
from django.contrib.auth.models import User
|
|
4
4
|
from django.test import TestCase, override_settings
|
|
5
5
|
|
|
6
|
-
from app_utils.esi import EsiStatus
|
|
7
6
|
from app_utils.testdata_factories import UserFactory
|
|
8
|
-
from app_utils.testing import
|
|
7
|
+
from app_utils.testing import (
|
|
8
|
+
NoSocketsTestCase,
|
|
9
|
+
generate_invalid_pk,
|
|
10
|
+
reset_celery_once_locks,
|
|
11
|
+
)
|
|
9
12
|
|
|
10
13
|
from structures import tasks
|
|
11
14
|
from structures.core.notification_types import NotificationType
|
|
@@ -49,12 +52,13 @@ class TestSendMessagesForWebhook(TestCase):
|
|
|
49
52
|
|
|
50
53
|
@override_settings(CELERY_ALWAYS_EAGER=True, CELERY_EAGER_PROPAGATES_EXCEPTIONS=True)
|
|
51
54
|
@patch(MODULE_PATH + ".Owner.update_structures_esi", spec=True)
|
|
52
|
-
class TestUpdateStructuresEsi(
|
|
55
|
+
class TestUpdateStructuresEsi(TestCase):
|
|
53
56
|
@classmethod
|
|
54
57
|
def setUpClass(cls):
|
|
55
58
|
super().setUpClass()
|
|
56
59
|
cls.user = UserMainDefaultOwnerFactory()
|
|
57
60
|
cls.owner = OwnerFactory(user=cls.user, is_alliance_main=True)
|
|
61
|
+
reset_celery_once_locks("structures")
|
|
58
62
|
|
|
59
63
|
def test_call_structure_update_with_owner_only(self, mock_update_structures_esi):
|
|
60
64
|
"""TODO: Investigate how to call the top level method that contains the chains()"""
|
|
@@ -85,12 +89,13 @@ class TestUpdateStructuresEsi(NoSocketsTestCase):
|
|
|
85
89
|
|
|
86
90
|
@override_settings(CELERY_ALWAYS_EAGER=True, CELERY_EAGER_PROPAGATES_EXCEPTIONS=True)
|
|
87
91
|
@patch(MODULE_PATH + ".update_structures_for_owner", spec=True)
|
|
88
|
-
class TestUpdateStructuresForOwner(
|
|
92
|
+
class TestUpdateStructuresForOwner(TestCase):
|
|
89
93
|
@classmethod
|
|
90
94
|
def setUpClass(cls):
|
|
91
95
|
super().setUpClass()
|
|
92
96
|
cls.user = UserMainDefaultOwnerFactory()
|
|
93
97
|
cls.owner = OwnerFactory(user=cls.user, is_alliance_main=True)
|
|
98
|
+
reset_celery_once_locks("structures")
|
|
94
99
|
|
|
95
100
|
def test_can_update_structures_for_all_owners(
|
|
96
101
|
self, mock_update_structures_for_owner
|
|
@@ -117,19 +122,22 @@ class TestUpdateStructuresForOwner(NoSocketsTestCase):
|
|
|
117
122
|
self.assertSetEqual(owner_pks, {self.owner.pk})
|
|
118
123
|
|
|
119
124
|
|
|
125
|
+
# TODO: Investigate how to call the top level method that contains the chains()
|
|
126
|
+
|
|
127
|
+
|
|
120
128
|
@override_settings(CELERY_ALWAYS_EAGER=True, CELERY_EAGER_PROPAGATES_EXCEPTIONS=True)
|
|
121
|
-
class TestUpdateOwnerAsset(
|
|
129
|
+
class TestUpdateOwnerAsset(TestCase):
|
|
122
130
|
@classmethod
|
|
123
131
|
def setUpClass(cls):
|
|
124
132
|
super().setUpClass()
|
|
125
133
|
cls.user = UserMainDefaultOwnerFactory()
|
|
126
134
|
cls.owner = OwnerFactory(user=cls.user, is_alliance_main=True)
|
|
135
|
+
reset_celery_once_locks("structures")
|
|
127
136
|
|
|
128
137
|
@patch(MODULE_PATH + ".Owner.update_asset_esi")
|
|
129
138
|
def test_call_structure_asset_update_with_owner_and_user(
|
|
130
139
|
self, mock_update_asset_esi
|
|
131
140
|
):
|
|
132
|
-
"""TODO: Investigate how to call the top level method that contains the chains()"""
|
|
133
141
|
tasks.update_structures_assets_for_owner(self.owner.pk, self.user.pk)
|
|
134
142
|
first, _ = mock_update_asset_esi.call_args
|
|
135
143
|
self.assertEqual(first[0], self.user)
|
|
@@ -138,19 +146,14 @@ class TestUpdateOwnerAsset(NoSocketsTestCase):
|
|
|
138
146
|
def test_call_structure_asset_update_with_owner_and_ignores_invalid_user(
|
|
139
147
|
self, mock_update_asset_esi
|
|
140
148
|
):
|
|
141
|
-
"""TODO: Investigate how to call the top level method that contains the chains()"""
|
|
142
149
|
tasks.update_structures_assets_for_owner(
|
|
143
150
|
self.owner.pk, generate_invalid_pk(User)
|
|
144
151
|
)
|
|
145
152
|
first, _ = mock_update_asset_esi.call_args
|
|
146
153
|
self.assertIsNone(first[0])
|
|
147
154
|
|
|
148
|
-
@override_settings(
|
|
149
|
-
CELERY_ALWAYS_EAGER=True, CELERY_EAGER_PROPAGATES_EXCEPTIONS=True
|
|
150
|
-
)
|
|
151
155
|
def test_raises_exception_if_owner_is_unknown(self):
|
|
152
156
|
with self.assertRaises(Owner.DoesNotExist):
|
|
153
|
-
"""TODO: Investigate how to call the top level method that contains the chains()"""
|
|
154
157
|
tasks.update_structures_assets_for_owner(
|
|
155
158
|
owner_pk=generate_invalid_pk(Owner)
|
|
156
159
|
)
|
|
@@ -317,7 +320,6 @@ class TestUpdateNotificationsStructureRelations(NoSocketsTestCase):
|
|
|
317
320
|
self.assertEqual(result, 0)
|
|
318
321
|
|
|
319
322
|
|
|
320
|
-
@patch(MODULE_PATH + ".fetch_esi_status", lambda: EsiStatus(True))
|
|
321
323
|
class TestOtherTasks(NoSocketsTestCase):
|
|
322
324
|
@patch(
|
|
323
325
|
MODULE_PATH + ".EveSovereigntyMap.objects.update_or_create_all_from_esi",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aa_structures-3.2.1 → aa_structures-3.3.0}/structures/core/notification_embeds/billing_embeds.py
RENAMED
|
File without changes
|
{aa_structures-3.2.1 → aa_structures-3.3.0}/structures/core/notification_embeds/corporate_embeds.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aa_structures-3.2.1 → aa_structures-3.3.0}/structures/core/notification_embeds/moonmining_embeds.py
RENAMED
|
File without changes
|
{aa_structures-3.2.1 → aa_structures-3.3.0}/structures/core/notification_embeds/orbital_embeds.py
RENAMED
|
File without changes
|
{aa_structures-3.2.1 → aa_structures-3.3.0}/structures/core/notification_embeds/skyhook_embeds.py
RENAMED
|
File without changes
|
{aa_structures-3.2.1 → aa_structures-3.3.0}/structures/core/notification_embeds/sov_embeds.py
RENAMED
|
File without changes
|
{aa_structures-3.2.1 → aa_structures-3.3.0}/structures/core/notification_embeds/structures_embeds.py
RENAMED
|
File without changes
|
{aa_structures-3.2.1 → aa_structures-3.3.0}/structures/core/notification_embeds/tower_embeds.py
RENAMED
|
File without changes
|
{aa_structures-3.2.1 → aa_structures-3.3.0}/structures/core/notification_embeds/war_embeds.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aa_structures-3.2.1 → aa_structures-3.3.0}/structures/management/commands/structures_load_eve.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aa_structures-3.2.1 → aa_structures-3.3.0}/structures/migrations/0004_improve_localization.py
RENAMED
|
File without changes
|
{aa_structures-3.2.1 → aa_structures-3.3.0}/structures/migrations/0005_add_notification_types.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aa_structures-3.2.1 → aa_structures-3.3.0}/structures/static/structures/img/eve_symbol_128.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|