aa-ledger 1.0.3__py3-none-any.whl → 2.0.0__py3-none-any.whl
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_ledger-1.0.3.dist-info → aa_ledger-2.0.0.dist-info}/METADATA +6 -6
- aa_ledger-2.0.0.dist-info/RECORD +267 -0
- {aa_ledger-1.0.3.dist-info → aa_ledger-2.0.0.dist-info}/WHEEL +1 -1
- ledger/__init__.py +2 -2
- ledger/admin.py +23 -18
- ledger/api/__init__.py +23 -7
- ledger/api/{ledger/admin.py → admin.py} +25 -31
- ledger/api/alliance.py +755 -0
- ledger/api/character.py +786 -0
- ledger/api/corporation.py +1141 -0
- ledger/api/{helpers.py → helpers/core.py} +33 -33
- ledger/api/helpers/icons.py +372 -0
- ledger/api/helpers/planetary_helper.py +354 -0
- ledger/api/planetary.py +354 -0
- ledger/api/schema.py +240 -15
- ledger/app_settings.py +18 -26
- ledger/auth_hooks.py +2 -2
- ledger/constants.py +50 -177
- ledger/decorators.py +2 -46
- ledger/forms.py +133 -39
- ledger/helpers/billboard.py +194 -144
- ledger/helpers/cache.py +105 -0
- ledger/helpers/discord.py +2 -4
- ledger/helpers/eveonline.py +160 -0
- ledger/helpers/ledger_data.py +23 -0
- ledger/helpers/ref_type.py +53 -78
- ledger/locale/cs_CZ/LC_MESSAGES/django.mo +0 -0
- ledger/locale/cs_CZ/LC_MESSAGES/django.po +349 -193
- ledger/locale/de/LC_MESSAGES/django.mo +0 -0
- ledger/locale/de/LC_MESSAGES/django.po +528 -379
- ledger/locale/django.pot +717 -553
- ledger/locale/es/LC_MESSAGES/django.mo +0 -0
- ledger/locale/es/LC_MESSAGES/django.po +349 -194
- ledger/locale/fr_FR/LC_MESSAGES/django.mo +0 -0
- ledger/locale/fr_FR/LC_MESSAGES/django.po +349 -193
- ledger/locale/it_IT/LC_MESSAGES/django.mo +0 -0
- ledger/locale/it_IT/LC_MESSAGES/django.po +349 -193
- ledger/locale/ja/LC_MESSAGES/django.mo +0 -0
- ledger/locale/ja/LC_MESSAGES/django.po +348 -193
- ledger/locale/ko_KR/LC_MESSAGES/django.mo +0 -0
- ledger/locale/ko_KR/LC_MESSAGES/django.po +349 -193
- ledger/locale/nl_NL/LC_MESSAGES/django.mo +0 -0
- ledger/locale/nl_NL/LC_MESSAGES/django.po +349 -193
- ledger/locale/pl_PL/LC_MESSAGES/django.mo +0 -0
- ledger/locale/pl_PL/LC_MESSAGES/django.po +350 -193
- ledger/locale/ru/LC_MESSAGES/django.mo +0 -0
- ledger/locale/ru/LC_MESSAGES/django.po +348 -193
- ledger/locale/sk/LC_MESSAGES/django.mo +0 -0
- ledger/locale/sk/LC_MESSAGES/django.po +348 -193
- ledger/locale/uk/LC_MESSAGES/django.mo +0 -0
- ledger/locale/uk/LC_MESSAGES/django.po +348 -193
- ledger/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
- ledger/locale/zh_Hans/LC_MESSAGES/django.po +348 -193
- ledger/managers/character_audit_manager.py +28 -20
- ledger/managers/character_journal_manager.py +187 -358
- ledger/managers/character_mining_manager.py +64 -30
- ledger/managers/character_planetary_manager.py +185 -138
- ledger/managers/corporation_audit_manager.py +36 -27
- ledger/managers/corporation_journal_manager.py +94 -57
- ledger/managers/general_manager.py +12 -8
- ledger/migrations/0018_remove_characterplanet_ledger_char_planet__58a5b6_idx_and_more.py +44 -0
- ledger/migrations/0019_rename_characteraudit_characterowner_and_more.py +48 -0
- ledger/models/__init__.py +5 -11
- ledger/models/characteraudit.py +101 -109
- ledger/models/corporationaudit.py +94 -49
- ledger/models/general.py +105 -211
- ledger/models/helpers/update_manager.py +302 -0
- ledger/models/planetary.py +60 -205
- ledger/providers.py +101 -0
- ledger/static/ledger/css/{ledger.css → aa-ledger.css} +54 -28
- ledger/static/ledger/js/aa-ledger.js +124 -0
- ledger/static/ledger/js/charts.js +25 -1
- ledger/static/ledger/js/view-alliance-ledger.js +383 -0
- ledger/static/ledger/js/view-character-ledger.js +388 -0
- ledger/static/ledger/js/view-corporation-ledger.js +402 -0
- ledger/static/ledger/js/view-planetary.js +492 -0
- ledger/static/ledger/libs/amCharts/5.14.4/js/flow.js +2 -0
- ledger/static/ledger/libs/amCharts/5.14.4/js/index.js +2 -0
- ledger/static/ledger/libs/amCharts/5.14.4/js/percent.js +2 -0
- ledger/static/ledger/libs/amCharts/5.14.4/js/themes/Animated.js +2 -0
- ledger/static/ledger/libs/amCharts/5.14.4/js/themes/Dark.js +2 -0
- ledger/static/ledger/libs/amCharts/5.14.4/js/xy.js +2 -0
- ledger/static/ledger/libs/datatables/2.3.5/css/dataTables.bootstrap5.css +610 -0
- ledger/static/ledger/libs/datatables/2.3.5/js/dataTables.bootstrap5.js +122 -0
- ledger/static/ledger/libs/datatables/2.3.5/js/dataTables.js +14127 -0
- ledger/static/ledger/libs/datatables/Extensions/ColumnControl/1.1.1/css/columnControl.bootstrap5.css +516 -0
- ledger/static/ledger/libs/datatables/Extensions/ColumnControl/1.1.1/css/columnControl.dataTables.css +529 -0
- ledger/static/ledger/libs/datatables/Extensions/ColumnControl/1.1.1/js/columnControl.bootstrap5.js +73 -0
- ledger/static/ledger/libs/datatables/Extensions/ColumnControl/1.1.1/js/dataTables.columnControl.js +3090 -0
- ledger/static/ledger/libs/datatables/Extensions/FixedHeader/4.0.4/css/fixedHeader.bootstrap5.css +20 -0
- ledger/static/ledger/libs/datatables/Extensions/FixedHeader/4.0.4/js/dataTables.fixedHeader.js +1203 -0
- ledger/static/ledger/libs/datatables/Extensions/FixedHeader/4.0.4/js/fixedHeader.bootstrap5.js +59 -0
- ledger/tasks.py +157 -146
- ledger/templates/ledger/base.html +59 -21
- ledger/templates/ledger/bundles/aa-ledger-css.html +3 -0
- ledger/templates/ledger/bundles/aa-ledger-js.html +3 -0
- ledger/templates/ledger/bundles/view-alliance-ledger-js.html +14 -0
- ledger/templates/ledger/bundles/view-character-ledger-js.html +15 -0
- ledger/templates/ledger/bundles/view-character-planetary-css.html +3 -0
- ledger/templates/ledger/bundles/view-character-planetary-js.html +4 -0
- ledger/templates/ledger/bundles/view-corporation-ledger-js.html +15 -0
- ledger/templates/ledger/partials/modal/confirm.html +0 -1
- ledger/templates/ledger/partials/modal/request-accept-delete-alliance.html +38 -0
- ledger/templates/ledger/partials/modal/request-accept-delete-character.html +38 -0
- ledger/templates/ledger/partials/modal/request-accept-delete-corporation.html +38 -0
- ledger/templates/ledger/partials/modal/request-accept-switch-notification.html +38 -0
- ledger/templates/ledger/partials/modal/request-view-alliance-details.html +26 -0
- ledger/templates/ledger/partials/modal/request-view-character-details.html +26 -0
- ledger/templates/ledger/partials/modal/request-view-corporation-details.html +26 -0
- ledger/templates/ledger/partials/modal/request-view-extractor.html +32 -0
- ledger/templates/ledger/partials/modal/request-view-factory.html +31 -0
- ledger/templates/ledger/partials/{menu → navigation}/administration.html +8 -0
- ledger/templates/ledger/partials/{menu → navigation}/navigation.html +2 -2
- ledger/templates/ledger/partials/{administration → view-alliance-administration}/alliance_corporations.html +3 -3
- ledger/templates/ledger/partials/view-alliance-administration/dashboard.html +81 -0
- ledger/templates/ledger/partials/view-alliance-ledger/alliance-billboard.html +25 -0
- ledger/templates/ledger/partials/view-alliance-ledger/alliance-ledger-details.html +21 -0
- ledger/templates/ledger/partials/view-alliance-ledger/alliance-table.html +24 -0
- ledger/templates/ledger/partials/view-alliance-ledger/information/daily.html +18 -0
- ledger/templates/ledger/partials/view-alliance-ledger/information/hourly.html +18 -0
- ledger/templates/ledger/partials/view-alliance-ledger/information/summary.html +19 -0
- ledger/templates/ledger/partials/{administration → view-character-administration}/character.html +1 -9
- ledger/templates/ledger/partials/{administration → view-character-administration}/dashboard.html +0 -34
- ledger/templates/ledger/partials/view-character-ledger/character-billboard.html +25 -0
- ledger/templates/ledger/partials/view-character-ledger/character-ledger-details.html +21 -0
- ledger/templates/ledger/partials/view-character-ledger/character-table.html +25 -0
- ledger/templates/ledger/partials/view-character-ledger/information/daily.html +18 -0
- ledger/templates/ledger/partials/view-character-ledger/information/hourly.html +18 -0
- ledger/templates/ledger/partials/view-character-ledger/information/summary.html +19 -0
- ledger/templates/ledger/partials/view-character-planetary/extractor-table.html +24 -0
- ledger/templates/ledger/partials/view-character-planetary/factory-table.html +24 -0
- ledger/templates/ledger/partials/view-character-planetary/planetary-table.html +22 -0
- ledger/templates/ledger/partials/view-character-planetary/storage-table.html +23 -0
- ledger/templates/ledger/partials/{administration → view-corporation-administration}/corporation.html +5 -13
- ledger/templates/ledger/partials/{administration → view-corporation-administration}/corporation_characters.html +1 -1
- ledger/templates/ledger/partials/view-corporation-administration/dashboard.html +81 -0
- ledger/templates/ledger/partials/view-corporation-ledger/corporation-billboard.html +25 -0
- ledger/templates/ledger/partials/view-corporation-ledger/corporation-ledger-details.html +21 -0
- ledger/templates/ledger/partials/view-corporation-ledger/corporation-table.html +26 -0
- ledger/templates/ledger/partials/view-corporation-ledger/information/daily.html +18 -0
- ledger/templates/ledger/partials/view-corporation-ledger/information/hourly.html +18 -0
- ledger/templates/ledger/partials/view-corporation-ledger/information/summary.html +19 -0
- ledger/templates/ledger/view-administration.html +62 -0
- ledger/templates/ledger/view-alliance-administration.html +49 -0
- ledger/templates/ledger/view-alliance-ledger.html +72 -0
- ledger/templates/ledger/view-alliance-overview.html +131 -0
- ledger/templates/ledger/view-character-administration.html +42 -0
- ledger/templates/ledger/view-character-ledger.html +73 -0
- ledger/templates/ledger/view-character-overview.html +135 -0
- ledger/templates/ledger/view-character-planetary-overview.html +135 -0
- ledger/templates/ledger/view-character-planetary.html +73 -0
- ledger/templates/ledger/view-corporation-administration.html +42 -0
- ledger/templates/ledger/view-corporation-ledger.html +73 -0
- ledger/templates/ledger/view-corporation-overview.html +131 -0
- ledger/templatetags/ledger.py +3 -5
- ledger/tests/__init__.py +187 -0
- ledger/tests/test_admin.py +164 -68
- ledger/tests/test_auth_hook.py +31 -13
- ledger/tests/test_decarators.py +14 -79
- ledger/tests/test_discord_installed.py +0 -1
- ledger/tests/test_helpers/test_ledger_data.py +19 -0
- ledger/tests/test_managers/test_character_audit_manager.py +111 -69
- ledger/tests/test_managers/test_character_journal_manager.py +48 -208
- ledger/tests/test_managers/test_character_mining_manager.py +37 -16
- ledger/tests/test_managers/test_corporation_division_manager.py +66 -28
- ledger/tests/test_managers/test_corporation_journal_manager.py +39 -42
- ledger/tests/test_managers/test_general_manager.py +78 -18
- ledger/tests/test_managers/test_planetary_manager.py +73 -32
- ledger/tests/test_models/test_characteraudit.py +58 -74
- ledger/tests/test_models/test_characterminingledger.py +20 -26
- ledger/tests/test_models/test_characterwalletjournal.py +10 -33
- ledger/tests/test_models/test_corporationaudit.py +41 -35
- ledger/tests/test_models/test_corporationwalletjournal.py +35 -32
- ledger/tests/test_models/test_general.py +44 -11
- ledger/tests/test_models/test_planetary.py +14 -80
- ledger/tests/test_templatetags.py +2 -7
- ledger/tests/test_views/corporation/test_add_corp.py +16 -35
- ledger/tests/test_views/corporation/test_delete_corporation.py +66 -42
- ledger/tests/test_views/test_access.py +512 -545
- ledger/tests/test_views/test_add_ally.py +57 -46
- ledger/tests/test_views/test_add_char.py +21 -33
- ledger/tests/test_views/test_delete_character.py +24 -21
- ledger/tests/testdata/README_ESI_STUB.md +430 -0
- ledger/tests/testdata/esi_stub_openapi.py +511 -0
- ledger/tests/testdata/integrations/__init__.py +0 -0
- ledger/tests/testdata/{load_eveuniverse.py → integrations/eveuniverse.py} +0 -1
- ledger/tests/testdata/integrations/planetary.py +13 -0
- ledger/tests/testdata/json/factory.json +281 -0
- ledger/tests/testdata/json/inactive.json +281 -0
- ledger/tests/testdata/json/pins.json +175 -272
- ledger/tests/testdata/json/route.json +95 -528
- ledger/tests/testdata/test_esi_stub.py +468 -0
- ledger/tests/testdata/utils.py +601 -0
- ledger/thirdparty/charlink_hook.py +60 -30
- ledger/urls.py +0 -135
- ledger/views/alliance/add_ally.py +2 -4
- ledger/views/alliance/alliance_ledger.py +64 -147
- ledger/views/character/add_char.py +8 -10
- ledger/views/character/character_ledger.py +60 -126
- ledger/views/character/planetary.py +5 -98
- ledger/views/corporation/add_corp.py +10 -12
- ledger/views/corporation/corporation_ledger.py +65 -327
- ledger/views/index.py +92 -30
- aa_ledger-1.0.3.dist-info/RECORD +0 -236
- ledger/api/api_helper/planetary_helper.py +0 -107
- ledger/api/ledger/__init__.py +0 -7
- ledger/api/ledger/planetary.py +0 -231
- ledger/helpers/alliance.py +0 -317
- ledger/helpers/character.py +0 -251
- ledger/helpers/core.py +0 -665
- ledger/helpers/corporation.py +0 -427
- ledger/helpers/data_exporter.py +0 -452
- ledger/static/ledger/js/planetary-confirm.js +0 -66
- ledger/static/ledger/js/planetary.js +0 -143
- ledger/templates/ledger/admin.html +0 -43
- ledger/templates/ledger/allyledger/admin/alliance_administration.html +0 -46
- ledger/templates/ledger/allyledger/admin/alliance_overview.html +0 -108
- ledger/templates/ledger/allyledger/alliance_ledger.html +0 -86
- ledger/templates/ledger/bundles/character-ledger-bundles.html +0 -66
- ledger/templates/ledger/bundles/corporation-ledger-bundles.html +0 -75
- ledger/templates/ledger/bundles/ledger-bundles.html +0 -23
- ledger/templates/ledger/bundles/ledger-css.html +0 -3
- ledger/templates/ledger/bundles/planetary-bundles.html +0 -50
- ledger/templates/ledger/bundles/table-css.html +0 -3
- ledger/templates/ledger/charledger/admin/character_administration.html +0 -39
- ledger/templates/ledger/charledger/admin/character_overview.html +0 -106
- ledger/templates/ledger/charledger/character_ledger.html +0 -94
- ledger/templates/ledger/charledger/planetary/admin/planetary_overview.html +0 -123
- ledger/templates/ledger/charledger/planetary/planetary_ledger.html +0 -54
- ledger/templates/ledger/corpledger/admin/corporation_administration.html +0 -39
- ledger/templates/ledger/corpledger/admin/corporation_overview.html +0 -108
- ledger/templates/ledger/corpledger/corporation_ledger.html +0 -129
- ledger/templates/ledger/data-export.html +0 -78
- ledger/templates/ledger/error.html +0 -31
- ledger/templates/ledger/partials/form/error-message.html +0 -1
- ledger/templates/ledger/partials/information/daily.html +0 -56
- ledger/templates/ledger/partials/information/day.html +0 -48
- ledger/templates/ledger/partials/information/error.html +0 -8
- ledger/templates/ledger/partials/information/hourly.html +0 -53
- ledger/templates/ledger/partials/information/summary.html +0 -88
- ledger/templates/ledger/partials/information/view_character_content.html +0 -35
- ledger/templates/ledger/partials/modal/switchalarm_confirm.html +0 -39
- ledger/templates/ledger/partials/modal/view_extractor.html +0 -48
- ledger/templates/ledger/partials/modal/view_factory.html +0 -123
- ledger/templates/ledger/partials/table/char-ledger.html +0 -85
- ledger/templates/ledger/partials/table/corp-ledger.html +0 -66
- ledger/templates/ledger/partials/table/planetary.html +0 -18
- ledger/templates/ledger/partials/thirdparty/billboard.html +0 -22
- ledger/templates/ledger/partials/view/card.html +0 -160
- ledger/templates/ledger/permission.html +0 -2
- ledger/tests/test_helpers/test_billboard.py +0 -11
- ledger/tests/test_helpers/test_data_exporter.py +0 -207
- ledger/tests/test_tasks.py +0 -282
- ledger/tests/test_view_helpers/test_core.py +0 -47
- ledger/tests/test_views/corporation/test_corporation.py +0 -267
- ledger/tests/test_views/test_planetary.py +0 -137
- ledger/tests/testdata/esi_stub.py +0 -109
- ledger/tests/testdata/esi_stub_migration.py +0 -80
- ledger/tests/testdata/generate_characteraudit.py +0 -106
- ledger/tests/testdata/generate_corporationaudit.py +0 -74
- ledger/tests/testdata/generate_events.py +0 -31
- ledger/tests/testdata/generate_miningledger.py +0 -13
- ledger/tests/testdata/generate_planets.py +0 -48
- ledger/tests/testdata/generate_walletjournal.py +0 -42
- ledger/tests/testdata/json/czarno-pins.json +0 -240
- ledger/tests/testdata/json/czarno-routes.json +0 -165
- ledger/tests/testdata/json/pins2.json +0 -538
- {aa_ledger-1.0.3.dist-info → aa_ledger-2.0.0.dist-info}/licenses/LICENSE +0 -0
- /ledger/{tests/test_view_helpers → api/helpers}/__init__.py +0 -0
- /ledger/templates/ledger/bundles/{ally-administration-bundles.html → view-alliance-administration-js.html} +0 -0
- /ledger/templates/ledger/bundles/{char-administration-bundles.html → view-character-administration-js.html} +0 -0
- /ledger/templates/ledger/bundles/{corp-administration-bundles.html → view-corporation-administration-js.html} +0 -0
- /ledger/templates/ledger/partials/{administration → view-alliance-administration}/alliance.html +0 -0
- /ledger/tests/testdata/{esi.json → esi_test_data.json} +0 -0
- /ledger/tests/testdata/{allianceauth.json → integrations/allianceauth.json} +0 -0
- /ledger/tests/testdata/{load_allianceauth.py → integrations/allianceauth.py} +0 -0
- /ledger/tests/testdata/{eveentity.json → integrations/eveentity.json} +0 -0
- /ledger/tests/testdata/{load_eveentity.py → integrations/eveentity.py} +0 -0
- /ledger/tests/testdata/{eveuniverse.json → integrations/eveuniverse.json} +0 -0
- /ledger/tests/testdata/{planetary.json → integrations/planetary.json} +0 -0
ledger/api/schema.py
CHANGED
|
@@ -1,25 +1,198 @@
|
|
|
1
1
|
# Standard Library
|
|
2
2
|
from datetime import datetime
|
|
3
|
-
from typing import Any
|
|
4
3
|
|
|
5
4
|
# Third Party
|
|
6
5
|
from ninja import Schema
|
|
7
6
|
|
|
7
|
+
# Django
|
|
8
|
+
from django.utils import timezone
|
|
8
9
|
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
# AA Ledger
|
|
11
|
+
from ledger.helpers.billboard import BillboardData
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class OwnerSchema(Schema):
|
|
15
|
+
"""
|
|
16
|
+
Schema for Character or Character Owner.
|
|
17
|
+
|
|
18
|
+
Attributes:
|
|
19
|
+
character_id (int): The ID of the character.
|
|
20
|
+
character_name (str): The name of the character.
|
|
21
|
+
icon (str | None): The URL of the character's icon, if available.
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
character_id: int
|
|
25
|
+
character_name: str
|
|
26
|
+
icon: str | None = None
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class EntitySchema(Schema):
|
|
30
|
+
"""
|
|
31
|
+
Schema for Entity or Corporation Owner.
|
|
32
|
+
|
|
33
|
+
Attributes:
|
|
34
|
+
entity_id (int): The ID of the entity.
|
|
35
|
+
entity_name (str): The name of the entity.
|
|
36
|
+
icon (str | None): The URL of the entity's icon, if available.
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
entity_id: int
|
|
40
|
+
entity_name: str
|
|
41
|
+
alt_ids: list[int] = []
|
|
42
|
+
icon: str = ""
|
|
43
|
+
popover: str = ""
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
class CategorySchema(Schema):
|
|
11
47
|
name: str
|
|
12
|
-
|
|
48
|
+
amount: float = 0.00
|
|
49
|
+
average: float = 0.00
|
|
50
|
+
average_tick: float = 0.00
|
|
51
|
+
ref_types: str | None = None
|
|
13
52
|
|
|
14
53
|
|
|
15
|
-
class
|
|
16
|
-
character_id: int | None = None
|
|
17
|
-
character_name: str | None = None
|
|
18
|
-
planet: str | None = None
|
|
19
|
-
planet_id: int | None = None
|
|
20
|
-
upgrade_level: int | None = None
|
|
21
|
-
num_pins: int | None = None
|
|
54
|
+
class UpdateStatusSchema(Schema):
|
|
22
55
|
last_update: datetime | None = None
|
|
56
|
+
last_run: datetime | None = None
|
|
57
|
+
status: str | None = None
|
|
58
|
+
icon: str | None = None
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
class BillboardSchema(Schema):
|
|
62
|
+
xy_chart: BillboardData | None = None
|
|
63
|
+
chord_chart: BillboardData | None = None
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
class LedgerResponse(Schema):
|
|
67
|
+
"""
|
|
68
|
+
Schema for Ledger Response.
|
|
69
|
+
|
|
70
|
+
Attributes:
|
|
71
|
+
owner (OwnerSchema): The owner of the ledger.
|
|
72
|
+
billboard (BillboardSchema): Billboard data.
|
|
73
|
+
actions (str, optional): HTML string for actions.
|
|
74
|
+
"""
|
|
75
|
+
|
|
76
|
+
owner: OwnerSchema
|
|
77
|
+
billboard: BillboardSchema
|
|
78
|
+
actions: str = ""
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
class LedgerSchema(Schema):
|
|
82
|
+
"""
|
|
83
|
+
|
|
84
|
+
Schema for Ledger Summary.
|
|
85
|
+
|
|
86
|
+
Attributes:
|
|
87
|
+
bounty (float): Amount related to bounties.
|
|
88
|
+
ess (float): Amount related to ESS activities.
|
|
89
|
+
costs (float): Amount related to costs.
|
|
90
|
+
miscellaneous (float): Miscellaneous amount.
|
|
91
|
+
total (float): Total amount.
|
|
92
|
+
"""
|
|
93
|
+
|
|
94
|
+
bounty: float = 0.00
|
|
95
|
+
ess: float = 0.00
|
|
96
|
+
costs: float = 0.00
|
|
97
|
+
miscellaneous: float = 0.00
|
|
98
|
+
total: float = 0.00
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
class CharacterLedgerSchema(LedgerSchema):
|
|
102
|
+
"""
|
|
103
|
+
Schema for Character Ledger extending LedgerSchema.
|
|
104
|
+
|
|
105
|
+
Subclass of :class:`LedgerSchema`.
|
|
106
|
+
|
|
107
|
+
Attributes:
|
|
108
|
+
mining (float): Amount related to mining activities.
|
|
109
|
+
"""
|
|
110
|
+
|
|
111
|
+
mining: float = 0.00
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
class OwnerLedgerRequestInfo(Schema):
|
|
115
|
+
"""Schema for Owner Ledger Request Information."""
|
|
116
|
+
|
|
117
|
+
owner_id: int
|
|
118
|
+
year: int
|
|
119
|
+
month: int | None = None
|
|
120
|
+
day: int | None = None
|
|
121
|
+
section: str = "summary"
|
|
122
|
+
dropdown_html: str | None = None
|
|
123
|
+
footer_html: str | None = None
|
|
124
|
+
|
|
125
|
+
def to_date_query(self) -> dict:
|
|
126
|
+
date_query = {"date__year": self.year}
|
|
127
|
+
if self.month is not None:
|
|
128
|
+
date_query["date__month"] = self.month
|
|
129
|
+
if self.day is not None:
|
|
130
|
+
date_query["date__day"] = self.day
|
|
131
|
+
return date_query
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
class CorporationLedgerRequestInfo(OwnerLedgerRequestInfo):
|
|
135
|
+
"""
|
|
136
|
+
Schema for Corporation Ledger Request Information.
|
|
137
|
+
|
|
138
|
+
Subclass of :class:`OwnerLedgerRequestInfo`.
|
|
139
|
+
|
|
140
|
+
Attributes:
|
|
141
|
+
entity_id (int | None): The ID of the entity.
|
|
142
|
+
division_id (int | None): The ID of the division.
|
|
143
|
+
"""
|
|
144
|
+
|
|
145
|
+
entity_id: int | None = None
|
|
146
|
+
division_id: int | None = None
|
|
147
|
+
|
|
148
|
+
def to_division_query(self) -> dict:
|
|
149
|
+
division_query = {}
|
|
150
|
+
if self.division_id is not None:
|
|
151
|
+
division_query["division__division_id"] = self.division_id
|
|
152
|
+
return division_query
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
class AllianceLedgerRequestInfo(OwnerLedgerRequestInfo):
|
|
156
|
+
"""
|
|
157
|
+
Schema for Alliance Ledger Request Information.
|
|
158
|
+
|
|
159
|
+
Subclass of :class:`OwnerLedgerRequestInfo`.
|
|
160
|
+
|
|
161
|
+
Attributes:
|
|
162
|
+
corporation_id (int | None): The ID of the corporation.
|
|
163
|
+
"""
|
|
164
|
+
|
|
165
|
+
corporation_id: int | None = None
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
class LedgerDetailsSummary(Schema):
|
|
169
|
+
"""
|
|
170
|
+
Schema for summary of ledger details.
|
|
171
|
+
|
|
172
|
+
Attributes:
|
|
173
|
+
summary (str): Summary of all categories.
|
|
174
|
+
daily (str): Daily breakdown of categories.
|
|
175
|
+
hourly (str): Hourly breakdown of categories.
|
|
176
|
+
"""
|
|
177
|
+
|
|
178
|
+
summary: str = ""
|
|
179
|
+
daily: str = ""
|
|
180
|
+
hourly: str = ""
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
class LedgerDetailsResponse(Schema):
|
|
184
|
+
"""Flexible schema for detailed ledger categories.
|
|
185
|
+
|
|
186
|
+
Attributes:
|
|
187
|
+
summary (CategorySchema): Summary of all categories.
|
|
188
|
+
daily (CategorySchema): Daily breakdown of categories.
|
|
189
|
+
hourly (CategorySchema): Hourly breakdown of categories.
|
|
190
|
+
"""
|
|
191
|
+
|
|
192
|
+
summary: list[CategorySchema]
|
|
193
|
+
daily: list[CategorySchema]
|
|
194
|
+
hourly: list[CategorySchema]
|
|
195
|
+
total: LedgerDetailsSummary
|
|
23
196
|
|
|
24
197
|
|
|
25
198
|
class CharacterAdmin(Schema):
|
|
@@ -34,7 +207,59 @@ class AllianceAdmin(Schema):
|
|
|
34
207
|
alliance: dict | None = None
|
|
35
208
|
|
|
36
209
|
|
|
37
|
-
class
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
210
|
+
class EveTypeSchema(Schema):
|
|
211
|
+
"""
|
|
212
|
+
Schema for EVE Online item types.
|
|
213
|
+
|
|
214
|
+
Attributes:
|
|
215
|
+
id (int): The ID of the item type.
|
|
216
|
+
name (str): The name of the item type.
|
|
217
|
+
description (str | None): The description of the item type, if available.
|
|
218
|
+
group_id (int | None): The group ID of the item type, if available.
|
|
219
|
+
group_name (str | None): The group name of the item type, if available.
|
|
220
|
+
market_group_id (int | None): The market group ID of the item type, if available.
|
|
221
|
+
market_group_name (str | None): The market group name of the item type, if available.
|
|
222
|
+
icon (str | None): The URL of the item type's icon, if available.
|
|
223
|
+
"""
|
|
224
|
+
|
|
225
|
+
id: int
|
|
226
|
+
name: str
|
|
227
|
+
description: str | None = None
|
|
228
|
+
group_id: int | None = None
|
|
229
|
+
group_name: str | None = None
|
|
230
|
+
market_group_id: int | None = None
|
|
231
|
+
market_group_name: str | None = None
|
|
232
|
+
icon: str | None = None
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
class PlanetSchema(Schema):
|
|
236
|
+
id: int
|
|
237
|
+
name: str
|
|
238
|
+
type: EveTypeSchema
|
|
239
|
+
upgrade_level: int
|
|
240
|
+
num_pins: int
|
|
241
|
+
last_update: timezone.datetime
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
class CharacterPlanet(Schema):
|
|
245
|
+
character_id: int | None = None
|
|
246
|
+
character_name: str | None = None
|
|
247
|
+
planet: str | None = None
|
|
248
|
+
planet_id: int | None = None
|
|
249
|
+
upgrade_level: int | None = None
|
|
250
|
+
num_pins: int | None = None
|
|
251
|
+
last_update: datetime | None = None
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
class ProgressBarSchema(Schema):
|
|
255
|
+
percentage: str
|
|
256
|
+
html: str
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
class ExtractorSchema(Schema):
|
|
260
|
+
item_id: int
|
|
261
|
+
item_name: str
|
|
262
|
+
icon: str | None = None
|
|
263
|
+
install_time: str
|
|
264
|
+
expiry_time: str
|
|
265
|
+
progress: ProgressBarSchema
|
ledger/app_settings.py
CHANGED
|
@@ -2,33 +2,17 @@
|
|
|
2
2
|
App Settings
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
-
#
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
-
# Alliance Auth (External Libs)
|
|
9
|
-
from app_utils.app_settings import clean_setting
|
|
10
|
-
|
|
11
|
-
IS_TESTING = sys.argv[1:2] == ["test"]
|
|
12
|
-
|
|
13
|
-
# Set Test Mode True or False
|
|
5
|
+
# Django
|
|
6
|
+
from django.conf import settings
|
|
14
7
|
|
|
15
8
|
# Set Naming on Auth Hook
|
|
16
|
-
LEDGER_APP_NAME =
|
|
17
|
-
|
|
18
|
-
# zKillboard - https://zkillboard.com/
|
|
19
|
-
EVE_BASE_URL = "https://esi.evetech.net/"
|
|
20
|
-
EVE_API_URL = "https://esi.evetech.net/latest/"
|
|
21
|
-
EVE_BASE_URL_REGEX = r"^http[s]?:\/\/esi.evetech\.net\/"
|
|
22
|
-
|
|
23
|
-
# fuzzwork
|
|
24
|
-
FUZZ_BASE_URL = "https://www.fuzzwork.co.uk/"
|
|
25
|
-
FUZZ_API_URL = "https://www.fuzzwork.co.uk/api/"
|
|
26
|
-
FUZZ_BASE_URL_REGEX = r"^http[s]?:\/\/(www\.)?fuzzwork\.co\.uk\/"
|
|
9
|
+
LEDGER_APP_NAME = getattr(settings, "LEDGER_APP_NAME", "Ledger")
|
|
27
10
|
|
|
28
11
|
# Global timeout for tasks in seconds to reduce task accumulation during outages.
|
|
29
|
-
LEDGER_TASKS_TIME_LIMIT =
|
|
12
|
+
LEDGER_TASKS_TIME_LIMIT = getattr(settings, "LEDGER_TASKS_TIME_LIMIT", 600)
|
|
30
13
|
|
|
31
|
-
LEDGER_STALE_TYPES =
|
|
14
|
+
LEDGER_STALE_TYPES = getattr(
|
|
15
|
+
settings,
|
|
32
16
|
"LEDGER_STALE_TYPES",
|
|
33
17
|
{
|
|
34
18
|
"wallet_journal": 30,
|
|
@@ -41,10 +25,18 @@ LEDGER_STALE_TYPES = clean_setting(
|
|
|
41
25
|
)
|
|
42
26
|
|
|
43
27
|
# Mining Price Calculation
|
|
44
|
-
LEDGER_USE_COMPRESSED =
|
|
45
|
-
LEDGER_PRICE_PERCENTAGE =
|
|
28
|
+
LEDGER_USE_COMPRESSED = getattr(settings, "LEDGER_USE_COMPRESSED", True)
|
|
29
|
+
LEDGER_PRICE_PERCENTAGE = getattr(settings, "LEDGER_PRICE_PERCENTAGE", 0.9)
|
|
46
30
|
|
|
47
31
|
# Ledger Cache System
|
|
48
|
-
LEDGER_CACHE_STALE = 60 * 60 *
|
|
32
|
+
LEDGER_CACHE_STALE = 60 * 60 * 24 * 30 # 30 days
|
|
49
33
|
LEDGER_CACHE_KEY = "LEDGER"
|
|
50
|
-
LEDGER_CACHE_ENABLED = True
|
|
34
|
+
LEDGER_CACHE_ENABLED = getattr(settings, "LEDGER_CACHE_ENABLED", True)
|
|
35
|
+
|
|
36
|
+
# Maximum Number of Objects processed per run of DJANGO Batch Method
|
|
37
|
+
# Controls how many database records are inserted in a single batch operation.
|
|
38
|
+
# If you encounter "Got a packet bigger than 'max_allowed_packet' bytes" errors,
|
|
39
|
+
# reduce this value (e.g., to 250 or 100).
|
|
40
|
+
# Can be increased for better performance if your MySQL max_allowed_packet setting
|
|
41
|
+
# is configured higher (default is usually 16-64MB).
|
|
42
|
+
LEDGER_BULK_BATCH_SIZE = getattr(settings, "LEDGER_BULK_BATCH_SIZE", 500)
|
ledger/auth_hooks.py
CHANGED
|
@@ -10,7 +10,7 @@ from allianceauth.services.hooks import MenuItemHook, UrlHook
|
|
|
10
10
|
|
|
11
11
|
# AA Ledger
|
|
12
12
|
from ledger import app_settings, urls
|
|
13
|
-
from ledger.models.characteraudit import
|
|
13
|
+
from ledger.models.characteraudit import CharacterOwner
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
class LedgerMenuItem(MenuItemHook):
|
|
@@ -27,7 +27,7 @@ class LedgerMenuItem(MenuItemHook):
|
|
|
27
27
|
def render(self, request):
|
|
28
28
|
if request.user.has_perm("ledger.basic_access"):
|
|
29
29
|
self.count = (
|
|
30
|
-
|
|
30
|
+
CharacterOwner.objects.annotate_total_update_status_user(
|
|
31
31
|
user=request.user
|
|
32
32
|
)
|
|
33
33
|
.aggregate(total_failed=Sum("num_sections_failed"))
|
ledger/constants.py
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
Constants
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
+
# Django
|
|
6
|
+
from django.db import models
|
|
7
|
+
from django.utils.translation import gettext_lazy as _
|
|
8
|
+
|
|
5
9
|
# Embed colors
|
|
6
10
|
DISCORD_EMBED_COLOR_INFO = 0x5BC0DE
|
|
7
11
|
DISCORD_EMBED_COLOR_SUCCESS = 0x5CB85C
|
|
@@ -16,188 +20,57 @@ DISCORD_EMBED_COLOR_MAP = {
|
|
|
16
20
|
"danger": DISCORD_EMBED_COLOR_DANGER,
|
|
17
21
|
}
|
|
18
22
|
|
|
19
|
-
COMMAND_CENTER = [
|
|
20
|
-
2129,
|
|
21
|
-
2130,
|
|
22
|
-
2131,
|
|
23
|
-
2132,
|
|
24
|
-
2136,
|
|
25
|
-
2137,
|
|
26
|
-
2138,
|
|
27
|
-
2139,
|
|
28
|
-
2140,
|
|
29
|
-
2141,
|
|
30
|
-
2142,
|
|
31
|
-
2143,
|
|
32
|
-
2144,
|
|
33
|
-
2145,
|
|
34
|
-
2146,
|
|
35
|
-
2147,
|
|
36
|
-
2148,
|
|
37
|
-
2149,
|
|
38
|
-
2150,
|
|
39
|
-
2151,
|
|
40
|
-
2152,
|
|
41
|
-
2153,
|
|
42
|
-
2154,
|
|
43
|
-
2155,
|
|
44
|
-
2156,
|
|
45
|
-
2157,
|
|
46
|
-
2158,
|
|
47
|
-
2159,
|
|
48
|
-
2160,
|
|
49
|
-
2254,
|
|
50
|
-
2524,
|
|
51
|
-
2525,
|
|
52
|
-
2533,
|
|
53
|
-
2534,
|
|
54
|
-
2549,
|
|
55
|
-
2550,
|
|
56
|
-
2551,
|
|
57
|
-
2574,
|
|
58
|
-
2576,
|
|
59
|
-
2577,
|
|
60
|
-
2568,
|
|
61
|
-
2581,
|
|
62
|
-
2582,
|
|
63
|
-
2585,
|
|
64
|
-
2586,
|
|
65
|
-
]
|
|
66
|
-
SPACEPORTS = [2256, 2542, 2543, 2544, 2552, 2555, 2556, 2557]
|
|
67
|
-
STORAGE_FACILITY = [2257, 2535, 2536, 2541, 2558, 2560, 2561, 2562]
|
|
68
|
-
EXTRACTOR_CONTROL_UNIT = [2848, 3060, 3061, 3062, 3063, 3064, 3067, 3068]
|
|
69
|
-
P0_PRODUCTS_SOLID = [2267, 2270, 2272, 2306, 2307]
|
|
70
|
-
P0_PRODUCTS_LIQUID_GAS = [2268, 2308, 2309, 2310, 2311]
|
|
71
|
-
P0_PRODUCTS_ORGANIC = [2073, 2286, 2287, 2288, 2305]
|
|
72
|
-
P0_PRODUCTS = P0_PRODUCTS_SOLID + P0_PRODUCTS_LIQUID_GAS + P0_PRODUCTS_ORGANIC
|
|
73
|
-
P1_PRODUCTS = [
|
|
74
|
-
2389,
|
|
75
|
-
2390,
|
|
76
|
-
2392,
|
|
77
|
-
2393,
|
|
78
|
-
2395,
|
|
79
|
-
2396,
|
|
80
|
-
2397,
|
|
81
|
-
2398,
|
|
82
|
-
2399,
|
|
83
|
-
2400,
|
|
84
|
-
2401,
|
|
85
|
-
3645,
|
|
86
|
-
3683,
|
|
87
|
-
3779,
|
|
88
|
-
9828,
|
|
89
|
-
]
|
|
90
|
-
P2_PRODUCTS = [
|
|
91
|
-
44,
|
|
92
|
-
2312,
|
|
93
|
-
2317,
|
|
94
|
-
2319,
|
|
95
|
-
2321,
|
|
96
|
-
2327,
|
|
97
|
-
2328,
|
|
98
|
-
2329,
|
|
99
|
-
2463,
|
|
100
|
-
3689,
|
|
101
|
-
3691,
|
|
102
|
-
3693,
|
|
103
|
-
3695,
|
|
104
|
-
3697,
|
|
105
|
-
3725,
|
|
106
|
-
3775,
|
|
107
|
-
3828,
|
|
108
|
-
983,
|
|
109
|
-
9832,
|
|
110
|
-
9836,
|
|
111
|
-
9838,
|
|
112
|
-
9840,
|
|
113
|
-
9842,
|
|
114
|
-
15317,
|
|
115
|
-
]
|
|
116
|
-
P3_PRODUCTS = [
|
|
117
|
-
2344,
|
|
118
|
-
2345,
|
|
119
|
-
2346,
|
|
120
|
-
2348,
|
|
121
|
-
2349,
|
|
122
|
-
2351,
|
|
123
|
-
2352,
|
|
124
|
-
2354,
|
|
125
|
-
2358,
|
|
126
|
-
2360,
|
|
127
|
-
2361,
|
|
128
|
-
2366,
|
|
129
|
-
2367,
|
|
130
|
-
9834,
|
|
131
|
-
9846,
|
|
132
|
-
9848,
|
|
133
|
-
12836,
|
|
134
|
-
17136,
|
|
135
|
-
17392,
|
|
136
|
-
17898,
|
|
137
|
-
28974,
|
|
138
|
-
]
|
|
139
|
-
P4_PRODUCTS = [2867, 2868, 2869, 2870, 2871, 2872, 2875, 2876]
|
|
140
|
-
P5_PRODUCTS = []
|
|
141
|
-
|
|
142
23
|
NPC_ENTITIES = [
|
|
143
24
|
1000125, # Concord Bounties (Bounty Prizes, ESS
|
|
144
25
|
1000132, # Secure Commerce Commission (Market Fees)
|
|
145
26
|
1000413, # Air Laboratories (Daily Login Rewards, etc.)
|
|
146
27
|
]
|
|
147
28
|
|
|
148
|
-
BOUNTY_PRIZES = ["bounty_prizes"]
|
|
149
|
-
ESS_TRANSFER = ["ess_escrow_transfer"]
|
|
150
|
-
MISSION_REWARD = ["agent_mission_reward", "agent_mission_time_bonus_reward"]
|
|
151
|
-
INCURSION = ["corporate_reward_payout"]
|
|
152
29
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
"
|
|
156
|
-
"
|
|
157
|
-
"
|
|
158
|
-
"
|
|
159
|
-
"
|
|
160
|
-
"
|
|
161
|
-
"
|
|
162
|
-
"
|
|
163
|
-
"
|
|
164
|
-
"
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
"market_escrow",
|
|
168
|
-
"transaction_tax",
|
|
169
|
-
"market_provider_tax",
|
|
170
|
-
"brokers_fee",
|
|
171
|
-
"market_transaction",
|
|
172
|
-
]
|
|
173
|
-
ASSETS = ["asset_safety_recovery_tax"]
|
|
174
|
-
TRAVELING = [
|
|
175
|
-
"structure_gate_jump",
|
|
176
|
-
"jump_clone_activation_fee",
|
|
177
|
-
"jump_clone_installation_fee",
|
|
178
|
-
]
|
|
179
|
-
PRODUCTION = [
|
|
180
|
-
"industry_job_tax",
|
|
181
|
-
"manufacturing",
|
|
182
|
-
"researching_time_productivity",
|
|
183
|
-
"researching_material_productivity",
|
|
184
|
-
"copying",
|
|
185
|
-
"reprocessing_tax",
|
|
186
|
-
"reaction",
|
|
187
|
-
]
|
|
188
|
-
SKILL = ["skill_purchase"]
|
|
189
|
-
PLANETARY = [
|
|
190
|
-
"planetary_export_tax",
|
|
191
|
-
"planetary_import_tax",
|
|
192
|
-
"planetary_construction",
|
|
193
|
-
]
|
|
194
|
-
LP = ["lp_store"]
|
|
195
|
-
# Trading
|
|
196
|
-
DONATION = ["player_donation"]
|
|
197
|
-
INSURANCE = ["insurance"]
|
|
198
|
-
# MISC
|
|
199
|
-
MILESTONE_REWARD = ["milestone_reward_payment"]
|
|
200
|
-
DAILY_GOAL_REWARD = ["daily_goal_payouts"]
|
|
30
|
+
class MonthChoice(models.TextChoices):
|
|
31
|
+
JANUARY = 1, _("January")
|
|
32
|
+
FEBRUARY = 2, _("February")
|
|
33
|
+
MARCH = 3, _("March")
|
|
34
|
+
APRIL = 4, _("April")
|
|
35
|
+
MAY = 5, _("May")
|
|
36
|
+
JUNE = 6, _("June")
|
|
37
|
+
JULY = 7, _("July")
|
|
38
|
+
AUGUST = 8, _("August")
|
|
39
|
+
SEPTEMBER = 9, _("September")
|
|
40
|
+
OCTOBER = 10, _("October")
|
|
41
|
+
NOVEMBER = 11, _("November")
|
|
42
|
+
DECEMBER = 12, _("December")
|
|
43
|
+
|
|
201
44
|
|
|
202
|
-
|
|
203
|
-
|
|
45
|
+
class DayChoice(models.TextChoices):
|
|
46
|
+
DAY_1 = 1, _("1")
|
|
47
|
+
DAY_2 = 2, _("2")
|
|
48
|
+
DAY_3 = 3, _("3")
|
|
49
|
+
DAY_4 = 4, _("4")
|
|
50
|
+
DAY_5 = 5, _("5")
|
|
51
|
+
DAY_6 = 6, _("6")
|
|
52
|
+
DAY_7 = 7, _("7")
|
|
53
|
+
DAY_8 = 8, _("8")
|
|
54
|
+
DAY_9 = 9, _("9")
|
|
55
|
+
DAY_10 = 10, _("10")
|
|
56
|
+
DAY_11 = 11, _("11")
|
|
57
|
+
DAY_12 = 12, _("12")
|
|
58
|
+
DAY_13 = 13, _("13")
|
|
59
|
+
DAY_14 = 14, _("14")
|
|
60
|
+
DAY_15 = 15, _("15")
|
|
61
|
+
DAY_16 = 16, _("16")
|
|
62
|
+
DAY_17 = 17, _("17")
|
|
63
|
+
DAY_18 = 18, _("18")
|
|
64
|
+
DAY_19 = 19, _("19")
|
|
65
|
+
DAY_20 = 20, _("20")
|
|
66
|
+
DAY_21 = 21, _("21")
|
|
67
|
+
DAY_22 = 22, _("22")
|
|
68
|
+
DAY_23 = 23, _("23")
|
|
69
|
+
DAY_24 = 24, _("24")
|
|
70
|
+
DAY_25 = 25, _("25")
|
|
71
|
+
DAY_26 = 26, _("26")
|
|
72
|
+
DAY_27 = 27, _("27")
|
|
73
|
+
DAY_28 = 28, _("28")
|
|
74
|
+
DAY_29 = 29, _("29")
|
|
75
|
+
DAY_30 = 30, _("30")
|
|
76
|
+
DAY_31 = 31, _("31")
|
ledger/decorators.py
CHANGED
|
@@ -4,59 +4,15 @@ Decorators
|
|
|
4
4
|
|
|
5
5
|
# Standard Library
|
|
6
6
|
import time
|
|
7
|
-
from functools import wraps
|
|
8
|
-
|
|
9
|
-
# Django
|
|
10
|
-
from django.core.cache import cache
|
|
11
7
|
|
|
12
8
|
# Alliance Auth
|
|
13
9
|
from allianceauth.services.hooks import get_extension_logger
|
|
14
10
|
|
|
15
|
-
# Alliance Auth (External Libs)
|
|
16
|
-
from app_utils.esi import fetch_esi_status
|
|
17
|
-
from app_utils.logging import LoggerAddTag
|
|
18
|
-
|
|
19
11
|
# AA Ledger
|
|
20
12
|
from ledger import __title__
|
|
21
|
-
from ledger.
|
|
22
|
-
|
|
23
|
-
logger = LoggerAddTag(get_extension_logger(__name__), __title__)
|
|
24
|
-
|
|
25
|
-
# Use shared ESI status route rate limit from app_settings
|
|
26
|
-
ESI_STATUS_ROUTE_RATE_LIMIT = 5
|
|
27
|
-
ESI_STATUS_KEY = "esi-is-available-status"
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
def get_esi_available_cache() -> bool:
|
|
31
|
-
"""Return True if ESI availability cache is present."""
|
|
32
|
-
if cache.get(ESI_STATUS_KEY):
|
|
33
|
-
return True
|
|
34
|
-
return False
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
def when_esi_is_available(func):
|
|
38
|
-
"""
|
|
39
|
-
Make sure the decorated task only runs when esi is available and store the result.
|
|
40
|
-
Complete the task without running it when downtime is detected.
|
|
41
|
-
Automatically disabled during tests.
|
|
42
|
-
"""
|
|
43
|
-
|
|
44
|
-
@wraps(func)
|
|
45
|
-
def outer(*args, **kwargs):
|
|
46
|
-
|
|
47
|
-
# During tests we skip ESI checks
|
|
48
|
-
if IS_TESTING or get_esi_available_cache():
|
|
49
|
-
logger.debug("Skipping ESI check (testing mode or cache present).")
|
|
50
|
-
return func(*args, **kwargs)
|
|
51
|
-
|
|
52
|
-
# Check ESI status
|
|
53
|
-
if fetch_esi_status().is_ok:
|
|
54
|
-
logger.debug("ESI is available, proceeding.")
|
|
55
|
-
cache.set(ESI_STATUS_KEY, "1", timeout=ESI_STATUS_ROUTE_RATE_LIMIT)
|
|
56
|
-
return func(*args, **kwargs)
|
|
57
|
-
return None # function will not run
|
|
13
|
+
from ledger.providers import AppLogger
|
|
58
14
|
|
|
59
|
-
|
|
15
|
+
logger = AppLogger(get_extension_logger(__name__), __title__)
|
|
60
16
|
|
|
61
17
|
|
|
62
18
|
def log_timing(logs):
|