aa-moonmining 2.2.2__tar.gz → 2.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_moonmining-2.2.2 → aa_moonmining-2.3.0}/PKG-INFO +3 -3
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/__init__.py +1 -1
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tasks.py +56 -53
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/test_integration.py +18 -5
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/pyproject.toml +2 -2
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/LICENSE +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/README.md +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/admin.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/app_settings.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/apps.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/auth_hooks.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/constants.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/core.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/forms.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/helpers.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/locale/de/LC_MESSAGES/django.po +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/locale/django.pot +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/locale/en/LC_MESSAGES/django.po +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/locale/es/LC_MESSAGES/django.po +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/locale/fr_FR/LC_MESSAGES/django.po +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/locale/it_IT/LC_MESSAGES/django.po +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/locale/ja/LC_MESSAGES/django.po +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/locale/ko_KR/LC_MESSAGES/django.po +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/locale/ru/LC_MESSAGES/django.po +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/locale/uk/LC_MESSAGES/django.po +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/locale/zh_Hans/LC_MESSAGES/django.po +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/management/commands/__init__.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/management/commands/moonmining_calculate_all.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/management/commands/moonmining_import_moons.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/management/commands/moonmining_load_eve.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/management/commands/moonstuff_export_moons.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/managers.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/migrations/0001_initial.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/migrations/0002_add_mining_ledger.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/migrations/0003_mining_ledger_reports.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/migrations/0004_add_permission_moon_ledgers.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/migrations/0005_make_pricing_more_flexible.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/migrations/0006_add_labels.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/migrations/0007_add_localization.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/migrations/__init__.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/models/__init__.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/models/extractions.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/models/general.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/models/moons.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/models/notifications.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/models/owners.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/providers.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/static/moonmining/css/extractions.css +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/static/moonmining/css/global.css +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/static/moonmining/css/moonmining.css +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/static/moonmining/css/moons.css +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/static/moonmining/css/reports.css +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/static/moonmining/img/Spinner-1s-64px-dark.gif +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/static/moonmining/img/Spinner-1s-64px-light.gif +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/static/moonmining/vendor/datatables/plugins/dataTables.rowGroup.min.js +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/static/moonmining/vendor/datatables/plugins/datetime.js +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/static/moonmining/vendor/datatables/plugins/filterDropDown.min.js +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/static/moonmining/vendor/datatables/plugins/rowGroup.bootstrap.min.css +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/static/moonmining/vendor/datatables/plugins/rowGroup.dataTables.min.css +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/_generic_modal_page.html +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/base.html +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/extractions.html +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/modals/base.html +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/modals/content_base.html +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/modals/extraction_details.html +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/modals/extraction_ledger.html +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/modals/loader_body.html +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/modals/moon_details.html +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/modals/upload_survey.html +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/moons.html +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/partials/extraction_details.html +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/partials/extraction_details_head.html +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/partials/extraction_details_head_base.html +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/partials/extraction_details_products.html +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/partials/extraction_ledger.html +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/partials/extraction_ledger_characters.html +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/partials/extraction_ledger_head.html +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/partials/extraction_ledger_ledger.html +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/partials/extractions_tab.html +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/partials/global_js.html +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/partials/location.html +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/partials/menu.html +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/partials/moon_details.html +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/partials/moon_details_moon.html +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/partials/moon_details_products.html +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/partials/moons_tab.html +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/partials/reports_ore_prices_tab.html +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/partials/reports_owned_value_tab.html +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/partials/reports_user_mining_tab.html +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/partials/reports_user_uploaded_tab.html +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/partials/upload_survey.html +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/partials/value_estimate_legend.html +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/reports.html +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/tests.html +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templatetags/__init__.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templatetags/moonmining.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/__init__.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/helpers.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/models/__init__.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/models/test_extractions.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/models/test_moons.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/models/test_notifications.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/models/test_owners.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/test_admin.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/test_commands.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/test_core.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/test_helpers.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/test_managers.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/test_templatetags.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/testdata/__init__.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/testdata/allianceauth.json +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/testdata/create_eveuniverse.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/testdata/esi.json +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/testdata/esi_client_stub.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/testdata/eveuniverse.json +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/testdata/factories.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/testdata/generate_many_moons.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/testdata/generate_moons.json +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/testdata/generate_moons.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/testdata/load_allianceauth.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/testdata/load_eveuniverse.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/testdata/moon_ids.csv +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/testdata/moon_survey_input_2.txt +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/testdata/moon_survey_input_3.txt +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/testdata/moons_for_import.csv +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/testdata/notification_details.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/testdata/notifications_full.json +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/testdata/survey_data.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/views/__init__.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/views/test_extractions.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/views/test_general.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/views/test_moons.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/views/test_reports.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tools/drop_tables.sql +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tools/esi_notes.md +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/urls.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/views/__init__.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/views/_helpers.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/views/extractions.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/views/general.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/views/moons.py +0 -0
- {aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/views/reports.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: aa-moonmining
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.3.0
|
|
4
4
|
Summary: Alliance Auth app for tracking moon extractions and scouting new moons.
|
|
5
5
|
Author-email: Erik Kalkoken <kaloken87@gmail.com>
|
|
6
6
|
Requires-Python: >=3.8
|
|
@@ -20,11 +20,11 @@ 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.28
|
|
24
24
|
Requires-Dist: allianceauth>=4,<5
|
|
25
25
|
Requires-Dist: django-bootstrap-form
|
|
26
26
|
Requires-Dist: django-datatables-view>=1.20
|
|
27
|
-
Requires-Dist: django-eveuniverse>=1.
|
|
27
|
+
Requires-Dist: django-eveuniverse>=1.6
|
|
28
28
|
Requires-Dist: django-navhelper
|
|
29
29
|
Requires-Dist: PyYAML
|
|
30
30
|
Project-URL: Changelog, https://gitlab.com/ErikKalkoken/aa-moonmining/-/blob/master/CHANGELOG.md
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""Tasks."""
|
|
2
2
|
|
|
3
|
-
from celery import chain, shared_task
|
|
3
|
+
from celery import Task, chain, shared_task
|
|
4
4
|
|
|
5
5
|
from django.contrib.auth.models import User
|
|
6
6
|
from django.utils.timezone import now
|
|
@@ -8,7 +8,8 @@ from eveuniverse.models import EveMarketPrice
|
|
|
8
8
|
from eveuniverse.tasks import update_unresolved_eve_entities
|
|
9
9
|
|
|
10
10
|
from allianceauth.services.hooks import get_extension_logger
|
|
11
|
-
from
|
|
11
|
+
from allianceauth.services.tasks import QueueOnce
|
|
12
|
+
from app_utils.esi import retry_task_on_esi_error_and_offline
|
|
12
13
|
from app_utils.logging import LoggerAddTag
|
|
13
14
|
|
|
14
15
|
from . import __title__
|
|
@@ -37,43 +38,43 @@ def run_regular_updates():
|
|
|
37
38
|
update_owner.delay(owner_pk)
|
|
38
39
|
|
|
39
40
|
|
|
40
|
-
@shared_task
|
|
41
|
-
def update_owner(owner_pk):
|
|
41
|
+
@shared_task(base=QueueOnce, once={"keys": ["owner_pk"], "graceful": True})
|
|
42
|
+
def update_owner(owner_pk: int):
|
|
42
43
|
"""Update refineries and extractions for given owner."""
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
).delay()
|
|
50
|
-
else:
|
|
51
|
-
logger.warning("ESI ist not available. Aborting.")
|
|
44
|
+
chain(
|
|
45
|
+
update_refineries_from_esi_for_owner.si(owner_pk),
|
|
46
|
+
fetch_notifications_from_esi_for_owner.si(owner_pk),
|
|
47
|
+
update_extractions_for_owner.si(owner_pk),
|
|
48
|
+
mark_successful_update_for_owner.si(owner_pk),
|
|
49
|
+
).delay()
|
|
52
50
|
|
|
53
51
|
|
|
54
|
-
@shared_task
|
|
55
|
-
def update_refineries_from_esi_for_owner(owner_pk):
|
|
52
|
+
@shared_task(bind=True, base=QueueOnce, once={"keys": ["owner_pk"], "graceful": True})
|
|
53
|
+
def update_refineries_from_esi_for_owner(self: Task, owner_pk: int):
|
|
56
54
|
"""Update refineries for a owner from ESI."""
|
|
57
55
|
owner = Owner.objects.get(pk=owner_pk)
|
|
58
|
-
|
|
56
|
+
with retry_task_on_esi_error_and_offline(self):
|
|
57
|
+
owner.update_refineries_from_esi()
|
|
59
58
|
|
|
60
59
|
|
|
61
|
-
@shared_task
|
|
62
|
-
def fetch_notifications_from_esi_for_owner(owner_pk):
|
|
60
|
+
@shared_task(bind=True, base=QueueOnce, once={"keys": ["owner_pk"], "graceful": True})
|
|
61
|
+
def fetch_notifications_from_esi_for_owner(self: Task, owner_pk: int):
|
|
63
62
|
"""Update extractions for a owner from ESI."""
|
|
64
63
|
owner = Owner.objects.get(pk=owner_pk)
|
|
65
|
-
|
|
64
|
+
with retry_task_on_esi_error_and_offline(self):
|
|
65
|
+
owner.fetch_notifications_from_esi()
|
|
66
66
|
|
|
67
67
|
|
|
68
|
-
@shared_task
|
|
69
|
-
def update_extractions_for_owner(owner_pk):
|
|
68
|
+
@shared_task(bind=True, base=QueueOnce, once={"keys": ["owner_pk"], "graceful": True})
|
|
69
|
+
def update_extractions_for_owner(self: Task, owner_pk: int):
|
|
70
70
|
"""Update extractions for a owner from ESI."""
|
|
71
71
|
owner = Owner.objects.get(pk=owner_pk)
|
|
72
|
-
|
|
72
|
+
with retry_task_on_esi_error_and_offline(self):
|
|
73
|
+
owner.update_extractions()
|
|
73
74
|
|
|
74
75
|
|
|
75
76
|
@shared_task
|
|
76
|
-
def mark_successful_update_for_owner(owner_pk):
|
|
77
|
+
def mark_successful_update_for_owner(owner_pk: int):
|
|
77
78
|
"""Mark a successful update for this corporation."""
|
|
78
79
|
owner = Owner.objects.get(pk=owner_pk)
|
|
79
80
|
owner.last_update_ok = True
|
|
@@ -90,48 +91,50 @@ def run_report_updates():
|
|
|
90
91
|
update_mining_ledger_for_owner.delay(owner_pk)
|
|
91
92
|
|
|
92
93
|
|
|
93
|
-
@shared_task
|
|
94
|
-
def update_mining_ledger_for_owner(owner_pk):
|
|
94
|
+
@shared_task(bind=True, base=QueueOnce, once={"keys": ["owner_pk"], "graceful": True})
|
|
95
|
+
def update_mining_ledger_for_owner(self: Task, owner_pk: int):
|
|
95
96
|
"""Update mining ledger for a owner from ESI."""
|
|
96
|
-
|
|
97
|
-
|
|
97
|
+
owner = Owner.objects.get(pk=owner_pk)
|
|
98
|
+
with retry_task_on_esi_error_and_offline(self):
|
|
98
99
|
observer_ids = owner.fetch_mining_ledger_observers_from_esi()
|
|
99
|
-
for refinery_id in owner.refineries.filter(id__in=observer_ids).values_list(
|
|
100
|
-
"id", flat=True
|
|
101
|
-
):
|
|
102
|
-
update_mining_ledger_for_refinery.apply_async(
|
|
103
|
-
kwargs={"refinery_id": refinery_id}, priority=TASK_PRIORITY_LOWER
|
|
104
|
-
)
|
|
105
|
-
else:
|
|
106
|
-
logger.warning("ESI ist not available. Aborting.")
|
|
107
100
|
|
|
101
|
+
for refinery_id in owner.refineries.filter(id__in=observer_ids).values_list(
|
|
102
|
+
"id", flat=True
|
|
103
|
+
):
|
|
104
|
+
update_mining_ledger_for_refinery.apply_async(
|
|
105
|
+
kwargs={"refinery_id": refinery_id}, priority=TASK_PRIORITY_LOWER
|
|
106
|
+
)
|
|
108
107
|
|
|
109
|
-
|
|
110
|
-
|
|
108
|
+
|
|
109
|
+
@shared_task(
|
|
110
|
+
bind=True,
|
|
111
|
+
base=QueueOnce,
|
|
112
|
+
once={"keys": ["refinery_id"], "graceful": True},
|
|
113
|
+
)
|
|
114
|
+
def update_mining_ledger_for_refinery(self: Task, refinery_id: int):
|
|
111
115
|
"""Update mining ledger for a refinery from ESI."""
|
|
112
116
|
refinery = Refinery.objects.get(id=refinery_id)
|
|
113
|
-
|
|
117
|
+
with retry_task_on_esi_error_and_offline(self):
|
|
118
|
+
refinery.update_mining_ledger_from_esi()
|
|
114
119
|
|
|
115
120
|
|
|
116
121
|
@shared_task
|
|
117
122
|
def run_calculated_properties_update():
|
|
118
123
|
"""Update the calculated properties of all moons and all extractions."""
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
).delay()
|
|
127
|
-
else:
|
|
128
|
-
logger.warning("ESI ist not available. Aborting.")
|
|
124
|
+
chain(
|
|
125
|
+
update_market_prices.si().set(priority=TASK_PRIORITY_LOWER),
|
|
126
|
+
update_current_ore_prices.si().set(priority=TASK_PRIORITY_LOWER),
|
|
127
|
+
update_moons.si().set(priority=TASK_PRIORITY_LOWER),
|
|
128
|
+
update_extractions.si().set(priority=TASK_PRIORITY_LOWER),
|
|
129
|
+
update_unresolved_eve_entities.si().set(priority=TASK_PRIORITY_LOWER),
|
|
130
|
+
).delay()
|
|
129
131
|
|
|
130
132
|
|
|
131
|
-
@shared_task
|
|
132
|
-
def update_market_prices():
|
|
133
|
+
@shared_task(bind=True, base=QueueOnce)
|
|
134
|
+
def update_market_prices(self):
|
|
133
135
|
"""Update all market prices."""
|
|
134
|
-
|
|
136
|
+
with retry_task_on_esi_error_and_offline(self):
|
|
137
|
+
EveMarketPrice.objects.update_from_esi()
|
|
135
138
|
|
|
136
139
|
|
|
137
140
|
@shared_task
|
|
@@ -159,7 +162,7 @@ def update_moon_calculated_properties(moon_pk):
|
|
|
159
162
|
|
|
160
163
|
|
|
161
164
|
@shared_task
|
|
162
|
-
def update_moon_products_from_latest_extraction(moon_pk):
|
|
165
|
+
def update_moon_products_from_latest_extraction(moon_pk: int):
|
|
163
166
|
"""Update moon products from latest extraction."""
|
|
164
167
|
moon = Moon.objects.get(pk=moon_pk)
|
|
165
168
|
result = moon.update_products_from_latest_extraction(overwrite_survey=True)
|
|
@@ -189,7 +192,7 @@ def update_extractions():
|
|
|
189
192
|
|
|
190
193
|
|
|
191
194
|
@shared_task
|
|
192
|
-
def update_extraction_calculated_properties(extraction_pk):
|
|
195
|
+
def update_extraction_calculated_properties(extraction_pk: int):
|
|
193
196
|
"""Update all calculated properties for given extraction."""
|
|
194
197
|
extraction = Extraction.objects.get(pk=extraction_pk)
|
|
195
198
|
extraction.update_calculated_properties()
|
|
@@ -9,11 +9,10 @@ from django.utils.timezone import now
|
|
|
9
9
|
from django_webtest import WebTest
|
|
10
10
|
from eveuniverse.models import EveMoon
|
|
11
11
|
|
|
12
|
-
from app_utils.esi import EsiStatus
|
|
13
12
|
from app_utils.testing import (
|
|
14
|
-
NoSocketsTestCase,
|
|
15
13
|
create_user_from_evecharacter,
|
|
16
14
|
json_response_to_python,
|
|
15
|
+
reset_celery_once_locks,
|
|
17
16
|
)
|
|
18
17
|
|
|
19
18
|
from moonmining import tasks
|
|
@@ -60,10 +59,9 @@ class TestUI(WebTest):
|
|
|
60
59
|
# TODO: Add more UI tests
|
|
61
60
|
|
|
62
61
|
|
|
63
|
-
@patch(TASKS_PATH + ".fetch_esi_status", lambda: EsiStatus(True, 100, 60))
|
|
64
62
|
@patch(MODELS_PATH + ".EveSolarSystem.nearest_celestial", new=nearest_celestial_stub)
|
|
65
|
-
@override_settings(CELERY_ALWAYS_EAGER=True
|
|
66
|
-
class
|
|
63
|
+
@override_settings(CELERY_ALWAYS_EAGER=True)
|
|
64
|
+
class TestRunRegularUpdates(TestCase):
|
|
67
65
|
@classmethod
|
|
68
66
|
def setUpClass(cls):
|
|
69
67
|
super().setUpClass()
|
|
@@ -72,6 +70,7 @@ class TestUpdateTasks(NoSocketsTestCase):
|
|
|
72
70
|
helpers.generate_eve_entities_from_allianceauth()
|
|
73
71
|
helpers.generate_market_prices()
|
|
74
72
|
_, cls.character_ownership = helpers.create_default_user_from_evecharacter(1001)
|
|
73
|
+
reset_celery_once_locks("moonmining")
|
|
75
74
|
|
|
76
75
|
@patch(MODELS_PATH + ".esi")
|
|
77
76
|
def test_should_update_all_mining_corporations(self, mock_esi):
|
|
@@ -146,6 +145,20 @@ class TestUpdateTasks(NoSocketsTestCase):
|
|
|
146
145
|
self.assertEqual(corporation_2002.last_update_at, my_date)
|
|
147
146
|
self.assertIsNone(corporation_2002.last_update_ok)
|
|
148
147
|
|
|
148
|
+
|
|
149
|
+
@patch(MODELS_PATH + ".EveSolarSystem.nearest_celestial", new=nearest_celestial_stub)
|
|
150
|
+
@override_settings(CELERY_ALWAYS_EAGER=True, CELERY_EAGER_PROPAGATES_EXCEPTIONS=True)
|
|
151
|
+
class TestUpdateOtherTasks(TestCase):
|
|
152
|
+
@classmethod
|
|
153
|
+
def setUpClass(cls):
|
|
154
|
+
super().setUpClass()
|
|
155
|
+
load_eveuniverse()
|
|
156
|
+
load_allianceauth()
|
|
157
|
+
helpers.generate_eve_entities_from_allianceauth()
|
|
158
|
+
helpers.generate_market_prices()
|
|
159
|
+
_, cls.character_ownership = helpers.create_default_user_from_evecharacter(1001)
|
|
160
|
+
reset_celery_once_locks("moonmining")
|
|
161
|
+
|
|
149
162
|
@patch(MODELS_PATH + ".esi")
|
|
150
163
|
def test_should_update_mining_ledgers(self, mock_esi):
|
|
151
164
|
# given
|
|
@@ -26,11 +26,11 @@ classifiers = [
|
|
|
26
26
|
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
|
|
27
27
|
]
|
|
28
28
|
dependencies = [
|
|
29
|
-
"allianceauth-app-utils>=1.
|
|
29
|
+
"allianceauth-app-utils>=1.28",
|
|
30
30
|
"allianceauth>=4,<5",
|
|
31
31
|
"django-bootstrap-form",
|
|
32
32
|
"django-datatables-view>=1.20",
|
|
33
|
-
"django-eveuniverse>=1.
|
|
33
|
+
"django-eveuniverse>=1.6",
|
|
34
34
|
"django-navhelper",
|
|
35
35
|
"PyYAML",
|
|
36
36
|
]
|
|
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_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/management/commands/moonmining_load_eve.py
RENAMED
|
File without changes
|
{aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/management/commands/moonstuff_export_moons.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/migrations/0003_mining_ledger_reports.py
RENAMED
|
File without changes
|
|
File without changes
|
{aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/migrations/0005_make_pricing_more_flexible.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
|
{aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/static/moonmining/css/extractions.css
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
|
{aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/_generic_modal_page.html
RENAMED
|
File without changes
|
|
File without changes
|
{aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/extractions.html
RENAMED
|
File without changes
|
{aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/modals/base.html
RENAMED
|
File without changes
|
{aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/modals/content_base.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/modals/loader_body.html
RENAMED
|
File without changes
|
{aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/modals/moon_details.html
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
|
{aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/partials/global_js.html
RENAMED
|
File without changes
|
{aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/partials/location.html
RENAMED
|
File without changes
|
{aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/partials/menu.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/templates/moonmining/partials/moons_tab.html
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
|
|
File without changes
|
{aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/testdata/generate_many_moons.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/testdata/moon_survey_input_2.txt
RENAMED
|
File without changes
|
{aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/testdata/moon_survey_input_3.txt
RENAMED
|
File without changes
|
|
File without changes
|
{aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/testdata/notification_details.py
RENAMED
|
File without changes
|
{aa_moonmining-2.2.2 → aa_moonmining-2.3.0}/moonmining/tests/testdata/notifications_full.json
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
|