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
|
@@ -0,0 +1,601 @@
|
|
|
1
|
+
# Standard Library
|
|
2
|
+
import datetime as dt
|
|
3
|
+
import random
|
|
4
|
+
import string
|
|
5
|
+
|
|
6
|
+
# Django
|
|
7
|
+
from django.contrib.auth.models import User
|
|
8
|
+
|
|
9
|
+
# Alliance Auth
|
|
10
|
+
from allianceauth.authentication.backends import StateBackend
|
|
11
|
+
from allianceauth.authentication.models import CharacterOwnership
|
|
12
|
+
from allianceauth.eveonline.models import EveCharacter
|
|
13
|
+
from allianceauth.tests.auth_utils import AuthUtils
|
|
14
|
+
from esi.models import Scope, Token
|
|
15
|
+
|
|
16
|
+
# Alliance Auth (External Libs)
|
|
17
|
+
from eveuniverse.models import EveEntity, EvePlanet, EveSolarSystem, EveType
|
|
18
|
+
|
|
19
|
+
# AA Ledger
|
|
20
|
+
from ledger.models.characteraudit import (
|
|
21
|
+
CharacterMiningLedger,
|
|
22
|
+
CharacterOwner,
|
|
23
|
+
CharacterUpdateStatus,
|
|
24
|
+
CharacterWalletJournalEntry,
|
|
25
|
+
)
|
|
26
|
+
from ledger.models.corporationaudit import (
|
|
27
|
+
CorporationOwner,
|
|
28
|
+
CorporationUpdateStatus,
|
|
29
|
+
CorporationWalletDivision,
|
|
30
|
+
CorporationWalletJournalEntry,
|
|
31
|
+
)
|
|
32
|
+
from ledger.models.planetary import CharacterPlanet, CharacterPlanetDetails
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def dt_eveformat(my_dt: dt.datetime) -> str:
|
|
36
|
+
"""Convert datetime to EVE Online ISO format (YYYY-MM-DDTHH:MM:SS)
|
|
37
|
+
|
|
38
|
+
Args:
|
|
39
|
+
my_dt (datetime): Input datetime
|
|
40
|
+
Returns:
|
|
41
|
+
str: datetime in EVE Online ISO format
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
my_dt_2 = dt.datetime(
|
|
45
|
+
my_dt.year, my_dt.month, my_dt.day, my_dt.hour, my_dt.minute, my_dt.second
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
return my_dt_2.isoformat()
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def random_string(char_count: int) -> str:
|
|
52
|
+
"""returns a random string of given length"""
|
|
53
|
+
return "".join(
|
|
54
|
+
random.choice(string.ascii_uppercase + string.digits) for _ in range(char_count)
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def _generate_token(
|
|
59
|
+
character_id: int,
|
|
60
|
+
character_name: str,
|
|
61
|
+
owner_hash: str | None = None,
|
|
62
|
+
access_token: str = "access_token",
|
|
63
|
+
refresh_token: str = "refresh_token",
|
|
64
|
+
scopes: list | None = None,
|
|
65
|
+
timestamp_dt: dt.datetime | None = None,
|
|
66
|
+
expires_in: int = 1200,
|
|
67
|
+
) -> dict:
|
|
68
|
+
"""Generates the input to create a new SSO test token.
|
|
69
|
+
|
|
70
|
+
Args:
|
|
71
|
+
character_id (int): Character ID
|
|
72
|
+
character_name (str): Character Name
|
|
73
|
+
owner_hash (Optional[str], optional): Character Owner Hash. Defaults to None.
|
|
74
|
+
access_token (str, optional): Access Token string. Defaults to "access_token".
|
|
75
|
+
refresh_token (str, optional): Refresh Token string. Defaults to "refresh_token".
|
|
76
|
+
scopes (Optional[list], optional): List of scope names. Defaults to None.
|
|
77
|
+
timestamp_dt (Optional[dt.datetime], optional): Timestamp datetime. Defaults to None.
|
|
78
|
+
expires_in (int, optional): Expiry time in seconds. Defaults to 1200
|
|
79
|
+
Returns:
|
|
80
|
+
dict: The generated token dict
|
|
81
|
+
"""
|
|
82
|
+
if timestamp_dt is None:
|
|
83
|
+
timestamp_dt = dt.datetime.utcnow()
|
|
84
|
+
if scopes is None:
|
|
85
|
+
scopes = [
|
|
86
|
+
"esi-mail.read_mail.v1",
|
|
87
|
+
"esi-wallet.read_character_wallet.v1",
|
|
88
|
+
"esi-universe.read_structures.v1",
|
|
89
|
+
]
|
|
90
|
+
if owner_hash is None:
|
|
91
|
+
owner_hash = random_string(28)
|
|
92
|
+
token = {
|
|
93
|
+
"access_token": access_token,
|
|
94
|
+
"token_type": "Bearer",
|
|
95
|
+
"expires_in": expires_in,
|
|
96
|
+
"refresh_token": refresh_token,
|
|
97
|
+
"timestamp": int(timestamp_dt.timestamp()),
|
|
98
|
+
"CharacterID": character_id,
|
|
99
|
+
"CharacterName": character_name,
|
|
100
|
+
"ExpiresOn": dt_eveformat(timestamp_dt + dt.timedelta(seconds=expires_in)),
|
|
101
|
+
"Scopes": " ".join(list(scopes)),
|
|
102
|
+
"TokenType": "Character",
|
|
103
|
+
"CharacterOwnerHash": owner_hash,
|
|
104
|
+
"IntellectualProperty": "EVE",
|
|
105
|
+
}
|
|
106
|
+
return token
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
def _store_as_Token(token: dict, user: object) -> Token:
|
|
110
|
+
"""Stores a generated token dict as Token object for given user
|
|
111
|
+
|
|
112
|
+
Args:
|
|
113
|
+
token (dict): Generated token dict
|
|
114
|
+
user (User): Alliance Auth User
|
|
115
|
+
Returns:
|
|
116
|
+
Token: The created Token object
|
|
117
|
+
"""
|
|
118
|
+
character_tokens = user.token_set.filter(character_id=token["CharacterID"])
|
|
119
|
+
if character_tokens.exists():
|
|
120
|
+
token["CharacterOwnerHash"] = character_tokens.first().character_owner_hash
|
|
121
|
+
obj = Token.objects.create(
|
|
122
|
+
access_token=token["access_token"],
|
|
123
|
+
refresh_token=token["refresh_token"],
|
|
124
|
+
user=user,
|
|
125
|
+
character_id=token["CharacterID"],
|
|
126
|
+
character_name=token["CharacterName"],
|
|
127
|
+
token_type=token["TokenType"],
|
|
128
|
+
character_owner_hash=token["CharacterOwnerHash"],
|
|
129
|
+
)
|
|
130
|
+
for scope_name in token["Scopes"].split(" "):
|
|
131
|
+
scope, _ = Scope.objects.get_or_create(name=scope_name)
|
|
132
|
+
obj.scopes.add(scope)
|
|
133
|
+
return obj
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
def add_new_token(
|
|
137
|
+
user: User,
|
|
138
|
+
character: EveCharacter,
|
|
139
|
+
scopes: list[str] | None = None,
|
|
140
|
+
owner_hash: str | None = None,
|
|
141
|
+
) -> Token:
|
|
142
|
+
"""Generate a new token for a user based on a character and makes the given user it's owner.
|
|
143
|
+
|
|
144
|
+
Args:
|
|
145
|
+
user: Alliance Auth User
|
|
146
|
+
character: EveCharacter to create the token for
|
|
147
|
+
scopes: list of scope names
|
|
148
|
+
owner_hash: optional owner hash to use for the token
|
|
149
|
+
Returns:
|
|
150
|
+
Token: The created Token object
|
|
151
|
+
"""
|
|
152
|
+
return _store_as_Token(
|
|
153
|
+
_generate_token(
|
|
154
|
+
character_id=character.character_id,
|
|
155
|
+
character_name=character.character_name,
|
|
156
|
+
owner_hash=owner_hash,
|
|
157
|
+
scopes=scopes,
|
|
158
|
+
),
|
|
159
|
+
user,
|
|
160
|
+
)
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
def add_character_to_user(
|
|
164
|
+
user: User,
|
|
165
|
+
character: EveCharacter,
|
|
166
|
+
is_main: bool = False,
|
|
167
|
+
scopes: list[str] | None = None,
|
|
168
|
+
disconnect_signals: bool = False,
|
|
169
|
+
) -> CharacterOwnership:
|
|
170
|
+
"""Add an existing :class:`EveCharacter` to a User, optionally as main character.
|
|
171
|
+
|
|
172
|
+
Args:
|
|
173
|
+
user (User): The User to whom the EveCharacter will be added.
|
|
174
|
+
character (EveCharacter): The EveCharacter to add to the User.
|
|
175
|
+
is_main (bool, optional): Whether to set the EveCharacter as the User's main
|
|
176
|
+
character. Defaults to ``False``.
|
|
177
|
+
scopes (list[str] | None, optional): List of scope names to assign to the
|
|
178
|
+
character's token. If ``None``, defaults to `["publicData"]`. Defaults to ``None``.
|
|
179
|
+
disconnect_signals (bool, optional): Whether to disconnect signals during
|
|
180
|
+
the addition. Defaults to ``False``.
|
|
181
|
+
Returns:
|
|
182
|
+
CharacterOwnership: The created CharacterOwnership instance.
|
|
183
|
+
"""
|
|
184
|
+
|
|
185
|
+
if not scopes:
|
|
186
|
+
scopes = ["publicData"]
|
|
187
|
+
|
|
188
|
+
if disconnect_signals:
|
|
189
|
+
AuthUtils.disconnect_signals()
|
|
190
|
+
|
|
191
|
+
add_new_token(user, character, scopes)
|
|
192
|
+
|
|
193
|
+
if is_main:
|
|
194
|
+
user.profile.main_character = character
|
|
195
|
+
user.profile.save()
|
|
196
|
+
user.save()
|
|
197
|
+
|
|
198
|
+
if disconnect_signals:
|
|
199
|
+
AuthUtils.connect_signals()
|
|
200
|
+
|
|
201
|
+
return CharacterOwnership.objects.get(user=user, character=character)
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
def create_user_from_evecharacter(
|
|
205
|
+
character_id: int,
|
|
206
|
+
permissions: list[str] | None = None,
|
|
207
|
+
scopes: list[str] | None = None,
|
|
208
|
+
) -> tuple[User, CharacterOwnership]:
|
|
209
|
+
"""Create new allianceauth user from EveCharacter object.
|
|
210
|
+
|
|
211
|
+
Args:
|
|
212
|
+
character_id (int): ID of eve character
|
|
213
|
+
permissions (list[str] | None): list of permission names, e.g. `"my_app.my_permission"`
|
|
214
|
+
scopes (list[str] | None): list of scope names
|
|
215
|
+
Returns:
|
|
216
|
+
tuple(User, CharacterOwnership): Created Alliance Auth User and CharacterOwnership
|
|
217
|
+
"""
|
|
218
|
+
auth_character = EveCharacter.objects.get(character_id=character_id)
|
|
219
|
+
user = AuthUtils.create_user(auth_character.character_name.replace(" ", "_"))
|
|
220
|
+
character_ownership = add_character_to_user(
|
|
221
|
+
user, auth_character, is_main=True, scopes=scopes
|
|
222
|
+
)
|
|
223
|
+
if permissions:
|
|
224
|
+
for permission_name in permissions:
|
|
225
|
+
user = AuthUtils.add_permission_to_user_by_name(permission_name, user)
|
|
226
|
+
return user, character_ownership
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
def add_permission_to_user(
|
|
230
|
+
user: User,
|
|
231
|
+
permissions: list[str] | None = None,
|
|
232
|
+
) -> User:
|
|
233
|
+
"""Add permission to existing allianceauth user.
|
|
234
|
+
Args:
|
|
235
|
+
user (User): Alliance Auth User
|
|
236
|
+
permissions (list[str] | None): list of permission names, e.g. `"my_app.my_permission"`
|
|
237
|
+
Returns:
|
|
238
|
+
User: Updated Alliance Auth User
|
|
239
|
+
"""
|
|
240
|
+
if permissions:
|
|
241
|
+
for permission_name in permissions:
|
|
242
|
+
user = AuthUtils.add_permission_to_user_by_name(permission_name, user)
|
|
243
|
+
return user
|
|
244
|
+
raise ValueError("No permissions provided to add to user.")
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
def create_ledger_owner(
|
|
248
|
+
eve_character: EveCharacter, owner_type="character", **kwargs
|
|
249
|
+
) -> CharacterOwner | CorporationOwner:
|
|
250
|
+
"""
|
|
251
|
+
Create a Ledger Owner (CharacterOwner or CorporationOwner) from an EveCharacter.
|
|
252
|
+
The type of owner created depends on the owner_type parameter.
|
|
253
|
+
Args:
|
|
254
|
+
eve_character (EveCharacter): The EveCharacter to create the owner from.
|
|
255
|
+
owner_type (str, optional): Type of owner, either "character" or "corporation"
|
|
256
|
+
Returns:
|
|
257
|
+
(CharacterOwner or CorporationOwner): The created ledger owner.
|
|
258
|
+
|
|
259
|
+
"""
|
|
260
|
+
if owner_type == "character":
|
|
261
|
+
defaults = {
|
|
262
|
+
"character_name": eve_character.character_name,
|
|
263
|
+
}
|
|
264
|
+
defaults.update(kwargs)
|
|
265
|
+
owner = CharacterOwner.objects.get_or_create(
|
|
266
|
+
eve_character=eve_character,
|
|
267
|
+
defaults=defaults,
|
|
268
|
+
)[0]
|
|
269
|
+
return owner
|
|
270
|
+
if owner_type == "corporation":
|
|
271
|
+
defaults = {
|
|
272
|
+
"corporation_name": eve_character.corporation.corporation_name,
|
|
273
|
+
}
|
|
274
|
+
defaults.update(kwargs)
|
|
275
|
+
owner = CorporationOwner.objects.get_or_create(
|
|
276
|
+
eve_corporation=eve_character.corporation,
|
|
277
|
+
defaults=defaults,
|
|
278
|
+
)[0]
|
|
279
|
+
return owner
|
|
280
|
+
raise ValueError("owner_type must be either 'character' or 'corporation'")
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
def create_update_status(
|
|
284
|
+
owner: CharacterOwner,
|
|
285
|
+
section: str,
|
|
286
|
+
error_message="",
|
|
287
|
+
owner_type="character",
|
|
288
|
+
**kwargs,
|
|
289
|
+
) -> CharacterUpdateStatus | CorporationUpdateStatus:
|
|
290
|
+
"""
|
|
291
|
+
Create an Update Status for a CharacterOwner or CorporationOwner.
|
|
292
|
+
The type of update status created depends on the owner_type parameter.
|
|
293
|
+
|
|
294
|
+
Args:
|
|
295
|
+
owner (CharacterOwner | CorporationOwner): The owner for whom to create the update status.
|
|
296
|
+
section (str): The section for the update status.
|
|
297
|
+
error_message (str, optional): The error message for the update status.
|
|
298
|
+
tax_type (str, optional): Type of tax owner, either "corporation" or "alliance"
|
|
299
|
+
**kwargs: Additional fields for the Update Status
|
|
300
|
+
Returns:
|
|
301
|
+
(CharacterUpdateStatus or CorporationUpdateStatus): The created update status.
|
|
302
|
+
"""
|
|
303
|
+
params = {
|
|
304
|
+
"owner": owner,
|
|
305
|
+
"section": section,
|
|
306
|
+
"error_message": error_message,
|
|
307
|
+
}
|
|
308
|
+
params.update(kwargs)
|
|
309
|
+
if owner_type == "corporation":
|
|
310
|
+
update_status = CorporationUpdateStatus(**params)
|
|
311
|
+
else:
|
|
312
|
+
update_status = CharacterUpdateStatus(**params)
|
|
313
|
+
update_status.save()
|
|
314
|
+
return update_status
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
def create_owner_from_user(
|
|
318
|
+
user: User, owner_type="character", **kwargs
|
|
319
|
+
) -> CharacterOwner | CorporationOwner:
|
|
320
|
+
"""
|
|
321
|
+
Create a CharacterOwner or CorporationOwner from a user.
|
|
322
|
+
The type of owner created depends on the owner_type parameter.
|
|
323
|
+
|
|
324
|
+
Args:
|
|
325
|
+
user (User): The user to create the owner from.
|
|
326
|
+
owner_type (str): Type of owner, either "character" or "corporation"
|
|
327
|
+
"""
|
|
328
|
+
eve_character = user.profile.main_character
|
|
329
|
+
if not eve_character:
|
|
330
|
+
raise ValueError("User needs to have a main character.")
|
|
331
|
+
|
|
332
|
+
return create_ledger_owner(eve_character, owner_type=owner_type, **kwargs)
|
|
333
|
+
|
|
334
|
+
|
|
335
|
+
def create_owner_from_evecharacter(
|
|
336
|
+
character_id: int, owner_type="character", **kwargs
|
|
337
|
+
) -> CharacterOwner | CorporationOwner:
|
|
338
|
+
"""
|
|
339
|
+
Create a CharacterOwner or CorporationOwner from an existing EveCharacter.
|
|
340
|
+
The type of owner created depends on the owner_type parameter.
|
|
341
|
+
|
|
342
|
+
Args:
|
|
343
|
+
character_id (int): ID of the EveCharacter to create the owner from.
|
|
344
|
+
owner_type (str): Type of owner, either "character" or "corporation"
|
|
345
|
+
Returns:
|
|
346
|
+
CharacterOwner | CorporationOwner: The created ledger owner.
|
|
347
|
+
"""
|
|
348
|
+
|
|
349
|
+
_, character_ownership = create_user_from_evecharacter_with_access(
|
|
350
|
+
character_id, disconnect_signals=True
|
|
351
|
+
)
|
|
352
|
+
return create_ledger_owner(
|
|
353
|
+
character_ownership.character, owner_type=owner_type, **kwargs
|
|
354
|
+
)
|
|
355
|
+
|
|
356
|
+
|
|
357
|
+
def create_user_from_evecharacter_with_access(
|
|
358
|
+
character_id: int, disconnect_signals: bool = True, owner_type="character"
|
|
359
|
+
) -> tuple[User, CharacterOwnership]:
|
|
360
|
+
"""
|
|
361
|
+
Create user with basic access from an existing EveCharacter and use it as main.
|
|
362
|
+
|
|
363
|
+
Args:
|
|
364
|
+
character_id (int): ID of eve character
|
|
365
|
+
disconnect_signals (bool, optional): Whether to disconnect signals during user creation. Defaults to True.
|
|
366
|
+
owner_type (str, optional): Type of owner, either "character" or "corporation"
|
|
367
|
+
Returns:
|
|
368
|
+
tuple(User, CharacterOwnership): Created Alliance Auth User and CharacterOwnership
|
|
369
|
+
"""
|
|
370
|
+
auth_character = EveCharacter.objects.get(character_id=character_id)
|
|
371
|
+
username = StateBackend.iterate_username(auth_character.character_name)
|
|
372
|
+
user = AuthUtils.create_user(username, disconnect_signals=disconnect_signals)
|
|
373
|
+
user = AuthUtils.add_permission_to_user_by_name(
|
|
374
|
+
"ledger.basic_access", user, disconnect_signals=disconnect_signals
|
|
375
|
+
)
|
|
376
|
+
|
|
377
|
+
if owner_type == "character":
|
|
378
|
+
scopes = CharacterOwner.get_esi_scopes()
|
|
379
|
+
else:
|
|
380
|
+
scopes = CorporationOwner.get_esi_scopes()
|
|
381
|
+
|
|
382
|
+
character_ownership = add_character_to_user(
|
|
383
|
+
user,
|
|
384
|
+
auth_character,
|
|
385
|
+
is_main=True,
|
|
386
|
+
scopes=scopes,
|
|
387
|
+
disconnect_signals=disconnect_signals,
|
|
388
|
+
)
|
|
389
|
+
return user, character_ownership
|
|
390
|
+
|
|
391
|
+
|
|
392
|
+
def add_new_permission_to_user(
|
|
393
|
+
user: User,
|
|
394
|
+
permission_name: str,
|
|
395
|
+
disconnect_signals: bool = True,
|
|
396
|
+
) -> User:
|
|
397
|
+
"""Add a new permission to an existing allianceauth user.
|
|
398
|
+
|
|
399
|
+
Args:
|
|
400
|
+
user (User): Alliance Auth User
|
|
401
|
+
permission_name (str): Permission name, e.g. `"my_app.my_permission"`
|
|
402
|
+
disconnect_signals (bool, optional): Whether to disconnect signals during addition. Defaults to True.
|
|
403
|
+
Returns:
|
|
404
|
+
User: Updated Alliance Auth User
|
|
405
|
+
"""
|
|
406
|
+
return AuthUtils.add_permission_to_user_by_name(
|
|
407
|
+
permission_name, user, disconnect_signals=disconnect_signals
|
|
408
|
+
)
|
|
409
|
+
|
|
410
|
+
|
|
411
|
+
def add_auth_character_to_user(
|
|
412
|
+
user: User,
|
|
413
|
+
character_id: int,
|
|
414
|
+
disconnect_signals: bool = True,
|
|
415
|
+
owner_type="character",
|
|
416
|
+
) -> CharacterOwnership:
|
|
417
|
+
"""Add an existing :class:`EveCharacter` to a User.
|
|
418
|
+
|
|
419
|
+
Args:
|
|
420
|
+
user (User): Alliance Auth User
|
|
421
|
+
character_id (int): ID of eve character
|
|
422
|
+
disconnect_signals (bool, optional): Whether to disconnect signals during addition. Defaults to True.
|
|
423
|
+
owner_type (str, optional): Type of owner, either "character" or "corporation"
|
|
424
|
+
Returns:
|
|
425
|
+
CharacterOwnership: The created CharacterOwnership instance.
|
|
426
|
+
"""
|
|
427
|
+
auth_character = EveCharacter.objects.get(character_id=character_id)
|
|
428
|
+
|
|
429
|
+
if owner_type == "character":
|
|
430
|
+
scopes = CharacterOwner.get_esi_scopes()
|
|
431
|
+
else:
|
|
432
|
+
scopes = CorporationOwner.get_esi_scopes()
|
|
433
|
+
|
|
434
|
+
return add_character_to_user(
|
|
435
|
+
user,
|
|
436
|
+
auth_character,
|
|
437
|
+
is_main=False,
|
|
438
|
+
scopes=scopes,
|
|
439
|
+
disconnect_signals=disconnect_signals,
|
|
440
|
+
)
|
|
441
|
+
|
|
442
|
+
|
|
443
|
+
def add_owner_to_user(
|
|
444
|
+
user: User,
|
|
445
|
+
character_id: int,
|
|
446
|
+
disconnect_signals: bool = True,
|
|
447
|
+
owner_type="character",
|
|
448
|
+
**kwargs,
|
|
449
|
+
) -> CharacterOwner | CorporationOwner:
|
|
450
|
+
"""
|
|
451
|
+
Add a CharacterOwner or CorporationOwner character to a user.
|
|
452
|
+
The type of owner created depends on the owner_type parameter.
|
|
453
|
+
|
|
454
|
+
Args:
|
|
455
|
+
user (User): Alliance Auth User
|
|
456
|
+
character_id (int): ID of eve character
|
|
457
|
+
disconnect_signals (bool, optional): Whether to disconnect signals during addition. Defaults to True.
|
|
458
|
+
owner_type (str): Type of owner, either "character" or "corporation"
|
|
459
|
+
Returns:
|
|
460
|
+
CharacterOwner | CorporationOwner: The created owner.
|
|
461
|
+
"""
|
|
462
|
+
character_ownership = add_auth_character_to_user(
|
|
463
|
+
user,
|
|
464
|
+
character_id,
|
|
465
|
+
disconnect_signals=disconnect_signals,
|
|
466
|
+
)
|
|
467
|
+
return create_ledger_owner(
|
|
468
|
+
character_ownership.character, owner_type=owner_type, **kwargs
|
|
469
|
+
)
|
|
470
|
+
|
|
471
|
+
|
|
472
|
+
def create_miningledger(
|
|
473
|
+
character: CharacterOwner,
|
|
474
|
+
id: int,
|
|
475
|
+
date: str,
|
|
476
|
+
type: EveType,
|
|
477
|
+
system: EveSolarSystem,
|
|
478
|
+
quantity: int,
|
|
479
|
+
**kwargs,
|
|
480
|
+
) -> CharacterMiningLedger:
|
|
481
|
+
"""
|
|
482
|
+
Create a CharacterMiningLedger
|
|
483
|
+
|
|
484
|
+
Args:
|
|
485
|
+
character (CharacterOwner): The character.
|
|
486
|
+
id (int): The ID of the mining ledger.
|
|
487
|
+
date (str): The date of the mining ledger.
|
|
488
|
+
type (EveType): The type of the mined item.
|
|
489
|
+
system (EveSolarSystem): The solar system where mining took place.
|
|
490
|
+
quantity (int): The quantity mined.
|
|
491
|
+
**kwargs: Fields for the CharacterMiningLedger
|
|
492
|
+
Returns:
|
|
493
|
+
CharacterMiningLedger: The created mining ledger.
|
|
494
|
+
"""
|
|
495
|
+
params = {
|
|
496
|
+
"character": character,
|
|
497
|
+
"id": id,
|
|
498
|
+
"date": date,
|
|
499
|
+
"type": type,
|
|
500
|
+
"system": system,
|
|
501
|
+
"quantity": quantity,
|
|
502
|
+
}
|
|
503
|
+
params.update(kwargs)
|
|
504
|
+
mining_ledger = CharacterMiningLedger(**params)
|
|
505
|
+
mining_ledger.save()
|
|
506
|
+
return mining_ledger
|
|
507
|
+
|
|
508
|
+
|
|
509
|
+
def create_division(
|
|
510
|
+
corporation: CorporationOwner, balance: float, division_id: int, **kwargs
|
|
511
|
+
) -> CorporationWalletDivision:
|
|
512
|
+
"""
|
|
513
|
+
Create a CorporationWalletDivision
|
|
514
|
+
|
|
515
|
+
Args:
|
|
516
|
+
corporation (CorporationOwner): The corporation.
|
|
517
|
+
balance (float): The balance of the division.
|
|
518
|
+
division_id (int): The division ID.
|
|
519
|
+
**kwargs: Fields for the CorporationWalletDivision
|
|
520
|
+
Returns:
|
|
521
|
+
CorporationWalletDivision: The created division.
|
|
522
|
+
"""
|
|
523
|
+
params = {
|
|
524
|
+
"corporation": corporation,
|
|
525
|
+
"balance": balance,
|
|
526
|
+
"division_id": division_id,
|
|
527
|
+
}
|
|
528
|
+
params.update(kwargs)
|
|
529
|
+
division = CorporationWalletDivision(**params)
|
|
530
|
+
division.save()
|
|
531
|
+
return division
|
|
532
|
+
|
|
533
|
+
|
|
534
|
+
def create_wallet_journal_entry(
|
|
535
|
+
date: str,
|
|
536
|
+
description: str,
|
|
537
|
+
first_party: EveEntity,
|
|
538
|
+
second_party: EveEntity,
|
|
539
|
+
entry_id: int,
|
|
540
|
+
ref_type: str,
|
|
541
|
+
owner_type="character",
|
|
542
|
+
**kwargs,
|
|
543
|
+
) -> CorporationWalletJournalEntry:
|
|
544
|
+
"""
|
|
545
|
+
Create a CorporationWalletJournalEntry
|
|
546
|
+
|
|
547
|
+
Args:
|
|
548
|
+
division (CorporationWalletDivision): The division.
|
|
549
|
+
date (str): The date of the journal entry.
|
|
550
|
+
description (str): The description of the journal entry.
|
|
551
|
+
first_party (EveEntity): The first party entity.
|
|
552
|
+
second_party (EveEntity): The second party entity.
|
|
553
|
+
entry_id (int): The entry ID.
|
|
554
|
+
ref_type (str): The reference type.
|
|
555
|
+
**kwargs: Fields for the CorporationWalletJournalEntry
|
|
556
|
+
Returns:
|
|
557
|
+
CorporationWalletJournalEntry: The created journal entry.
|
|
558
|
+
"""
|
|
559
|
+
params = {
|
|
560
|
+
"date": date,
|
|
561
|
+
"description": description,
|
|
562
|
+
"first_party": first_party,
|
|
563
|
+
"second_party": second_party,
|
|
564
|
+
"entry_id": entry_id,
|
|
565
|
+
"ref_type": ref_type,
|
|
566
|
+
}
|
|
567
|
+
params.update(kwargs)
|
|
568
|
+
if owner_type == "corporation":
|
|
569
|
+
journal_entry = CorporationWalletJournalEntry(**params)
|
|
570
|
+
else:
|
|
571
|
+
journal_entry = CharacterWalletJournalEntry(**params)
|
|
572
|
+
journal_entry.save()
|
|
573
|
+
return journal_entry
|
|
574
|
+
|
|
575
|
+
|
|
576
|
+
def create_character_planet(
|
|
577
|
+
owner: CharacterOwner, planet_id: int, **kwargs
|
|
578
|
+
) -> CharacterPlanet:
|
|
579
|
+
"""Create a CharacterPlanet from CharacterOwner and planet_id."""
|
|
580
|
+
params = {
|
|
581
|
+
"character": owner,
|
|
582
|
+
"eve_planet": EvePlanet.objects.get(id=planet_id),
|
|
583
|
+
}
|
|
584
|
+
params.update(kwargs)
|
|
585
|
+
planet = CharacterPlanet(**params)
|
|
586
|
+
planet.save()
|
|
587
|
+
return planet
|
|
588
|
+
|
|
589
|
+
|
|
590
|
+
def create_character_planet_details(
|
|
591
|
+
planet: CharacterPlanet, **kwargs
|
|
592
|
+
) -> CharacterPlanetDetails:
|
|
593
|
+
"""Create a CharacterPlanetDetails from CharacterPlanet."""
|
|
594
|
+
params = {
|
|
595
|
+
"character": planet.character,
|
|
596
|
+
"planet": planet,
|
|
597
|
+
}
|
|
598
|
+
params.update(kwargs)
|
|
599
|
+
planetdetails = CharacterPlanetDetails(**params)
|
|
600
|
+
planetdetails.save()
|
|
601
|
+
return planetdetails
|