aa-ledger 1.0.4__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.
Files changed (280) hide show
  1. {aa_ledger-1.0.4.dist-info → aa_ledger-2.0.0.dist-info}/METADATA +5 -6
  2. aa_ledger-2.0.0.dist-info/RECORD +267 -0
  3. ledger/__init__.py +2 -2
  4. ledger/admin.py +23 -18
  5. ledger/api/__init__.py +23 -7
  6. ledger/api/{ledger/admin.py → admin.py} +25 -31
  7. ledger/api/alliance.py +755 -0
  8. ledger/api/character.py +786 -0
  9. ledger/api/corporation.py +1141 -0
  10. ledger/api/{helpers.py → helpers/core.py} +33 -33
  11. ledger/api/helpers/icons.py +372 -0
  12. ledger/api/helpers/planetary_helper.py +354 -0
  13. ledger/api/planetary.py +354 -0
  14. ledger/api/schema.py +240 -15
  15. ledger/app_settings.py +11 -27
  16. ledger/auth_hooks.py +2 -2
  17. ledger/constants.py +50 -177
  18. ledger/decorators.py +2 -46
  19. ledger/forms.py +133 -39
  20. ledger/helpers/billboard.py +194 -144
  21. ledger/helpers/cache.py +105 -0
  22. ledger/helpers/discord.py +2 -4
  23. ledger/helpers/eveonline.py +160 -0
  24. ledger/helpers/ledger_data.py +23 -0
  25. ledger/helpers/ref_type.py +53 -78
  26. ledger/locale/cs_CZ/LC_MESSAGES/django.mo +0 -0
  27. ledger/locale/cs_CZ/LC_MESSAGES/django.po +349 -193
  28. ledger/locale/de/LC_MESSAGES/django.mo +0 -0
  29. ledger/locale/de/LC_MESSAGES/django.po +528 -379
  30. ledger/locale/django.pot +721 -546
  31. ledger/locale/es/LC_MESSAGES/django.mo +0 -0
  32. ledger/locale/es/LC_MESSAGES/django.po +349 -194
  33. ledger/locale/fr_FR/LC_MESSAGES/django.mo +0 -0
  34. ledger/locale/fr_FR/LC_MESSAGES/django.po +349 -193
  35. ledger/locale/it_IT/LC_MESSAGES/django.mo +0 -0
  36. ledger/locale/it_IT/LC_MESSAGES/django.po +349 -193
  37. ledger/locale/ja/LC_MESSAGES/django.mo +0 -0
  38. ledger/locale/ja/LC_MESSAGES/django.po +348 -193
  39. ledger/locale/ko_KR/LC_MESSAGES/django.mo +0 -0
  40. ledger/locale/ko_KR/LC_MESSAGES/django.po +349 -193
  41. ledger/locale/nl_NL/LC_MESSAGES/django.mo +0 -0
  42. ledger/locale/nl_NL/LC_MESSAGES/django.po +349 -193
  43. ledger/locale/pl_PL/LC_MESSAGES/django.mo +0 -0
  44. ledger/locale/pl_PL/LC_MESSAGES/django.po +350 -193
  45. ledger/locale/ru/LC_MESSAGES/django.mo +0 -0
  46. ledger/locale/ru/LC_MESSAGES/django.po +348 -193
  47. ledger/locale/sk/LC_MESSAGES/django.mo +0 -0
  48. ledger/locale/sk/LC_MESSAGES/django.po +348 -193
  49. ledger/locale/uk/LC_MESSAGES/django.mo +0 -0
  50. ledger/locale/uk/LC_MESSAGES/django.po +348 -193
  51. ledger/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  52. ledger/locale/zh_Hans/LC_MESSAGES/django.po +348 -193
  53. ledger/managers/character_audit_manager.py +28 -20
  54. ledger/managers/character_journal_manager.py +185 -357
  55. ledger/managers/character_mining_manager.py +52 -26
  56. ledger/managers/character_planetary_manager.py +178 -136
  57. ledger/managers/corporation_audit_manager.py +36 -27
  58. ledger/managers/corporation_journal_manager.py +92 -56
  59. ledger/managers/general_manager.py +8 -7
  60. ledger/migrations/0018_remove_characterplanet_ledger_char_planet__58a5b6_idx_and_more.py +44 -0
  61. ledger/migrations/0019_rename_characteraudit_characterowner_and_more.py +48 -0
  62. ledger/models/__init__.py +5 -11
  63. ledger/models/characteraudit.py +101 -109
  64. ledger/models/corporationaudit.py +94 -49
  65. ledger/models/general.py +105 -211
  66. ledger/models/helpers/update_manager.py +302 -0
  67. ledger/models/planetary.py +60 -205
  68. ledger/providers.py +101 -0
  69. ledger/static/ledger/css/{ledger.css → aa-ledger.css} +54 -28
  70. ledger/static/ledger/js/aa-ledger.js +124 -0
  71. ledger/static/ledger/js/charts.js +25 -1
  72. ledger/static/ledger/js/view-alliance-ledger.js +383 -0
  73. ledger/static/ledger/js/view-character-ledger.js +388 -0
  74. ledger/static/ledger/js/view-corporation-ledger.js +402 -0
  75. ledger/static/ledger/js/view-planetary.js +492 -0
  76. ledger/static/ledger/libs/amCharts/5.14.4/js/flow.js +2 -0
  77. ledger/static/ledger/libs/amCharts/5.14.4/js/index.js +2 -0
  78. ledger/static/ledger/libs/amCharts/5.14.4/js/percent.js +2 -0
  79. ledger/static/ledger/libs/amCharts/5.14.4/js/themes/Animated.js +2 -0
  80. ledger/static/ledger/libs/amCharts/5.14.4/js/themes/Dark.js +2 -0
  81. ledger/static/ledger/libs/amCharts/5.14.4/js/xy.js +2 -0
  82. ledger/static/ledger/libs/datatables/2.3.5/css/dataTables.bootstrap5.css +610 -0
  83. ledger/static/ledger/libs/datatables/2.3.5/js/dataTables.bootstrap5.js +122 -0
  84. ledger/static/ledger/libs/datatables/2.3.5/js/dataTables.js +14127 -0
  85. ledger/static/ledger/libs/datatables/Extensions/ColumnControl/1.1.1/css/columnControl.bootstrap5.css +516 -0
  86. ledger/static/ledger/libs/datatables/Extensions/ColumnControl/1.1.1/css/columnControl.dataTables.css +529 -0
  87. ledger/static/ledger/libs/datatables/Extensions/ColumnControl/1.1.1/js/columnControl.bootstrap5.js +73 -0
  88. ledger/static/ledger/libs/datatables/Extensions/ColumnControl/1.1.1/js/dataTables.columnControl.js +3090 -0
  89. ledger/static/ledger/libs/datatables/Extensions/FixedHeader/4.0.4/css/fixedHeader.bootstrap5.css +20 -0
  90. ledger/static/ledger/libs/datatables/Extensions/FixedHeader/4.0.4/js/dataTables.fixedHeader.js +1203 -0
  91. ledger/static/ledger/libs/datatables/Extensions/FixedHeader/4.0.4/js/fixedHeader.bootstrap5.js +59 -0
  92. ledger/tasks.py +157 -141
  93. ledger/templates/ledger/base.html +59 -21
  94. ledger/templates/ledger/bundles/aa-ledger-css.html +3 -0
  95. ledger/templates/ledger/bundles/aa-ledger-js.html +3 -0
  96. ledger/templates/ledger/bundles/view-alliance-ledger-js.html +14 -0
  97. ledger/templates/ledger/bundles/view-character-ledger-js.html +15 -0
  98. ledger/templates/ledger/bundles/view-character-planetary-css.html +3 -0
  99. ledger/templates/ledger/bundles/view-character-planetary-js.html +4 -0
  100. ledger/templates/ledger/bundles/view-corporation-ledger-js.html +15 -0
  101. ledger/templates/ledger/partials/modal/confirm.html +0 -1
  102. ledger/templates/ledger/partials/modal/request-accept-delete-alliance.html +38 -0
  103. ledger/templates/ledger/partials/modal/request-accept-delete-character.html +38 -0
  104. ledger/templates/ledger/partials/modal/request-accept-delete-corporation.html +38 -0
  105. ledger/templates/ledger/partials/modal/request-accept-switch-notification.html +38 -0
  106. ledger/templates/ledger/partials/modal/request-view-alliance-details.html +26 -0
  107. ledger/templates/ledger/partials/modal/request-view-character-details.html +26 -0
  108. ledger/templates/ledger/partials/modal/request-view-corporation-details.html +26 -0
  109. ledger/templates/ledger/partials/modal/request-view-extractor.html +32 -0
  110. ledger/templates/ledger/partials/modal/request-view-factory.html +31 -0
  111. ledger/templates/ledger/partials/{menu → navigation}/administration.html +8 -0
  112. ledger/templates/ledger/partials/{menu → navigation}/navigation.html +2 -2
  113. ledger/templates/ledger/partials/{administration → view-alliance-administration}/alliance_corporations.html +3 -3
  114. ledger/templates/ledger/partials/view-alliance-administration/dashboard.html +81 -0
  115. ledger/templates/ledger/partials/view-alliance-ledger/alliance-billboard.html +25 -0
  116. ledger/templates/ledger/partials/view-alliance-ledger/alliance-ledger-details.html +21 -0
  117. ledger/templates/ledger/partials/view-alliance-ledger/alliance-table.html +24 -0
  118. ledger/templates/ledger/partials/view-alliance-ledger/information/daily.html +18 -0
  119. ledger/templates/ledger/partials/view-alliance-ledger/information/hourly.html +18 -0
  120. ledger/templates/ledger/partials/view-alliance-ledger/information/summary.html +19 -0
  121. ledger/templates/ledger/partials/{administration → view-character-administration}/character.html +1 -9
  122. ledger/templates/ledger/partials/{administration → view-character-administration}/dashboard.html +0 -34
  123. ledger/templates/ledger/partials/view-character-ledger/character-billboard.html +25 -0
  124. ledger/templates/ledger/partials/view-character-ledger/character-ledger-details.html +21 -0
  125. ledger/templates/ledger/partials/view-character-ledger/character-table.html +25 -0
  126. ledger/templates/ledger/partials/view-character-ledger/information/daily.html +18 -0
  127. ledger/templates/ledger/partials/view-character-ledger/information/hourly.html +18 -0
  128. ledger/templates/ledger/partials/view-character-ledger/information/summary.html +19 -0
  129. ledger/templates/ledger/partials/view-character-planetary/extractor-table.html +24 -0
  130. ledger/templates/ledger/partials/view-character-planetary/factory-table.html +24 -0
  131. ledger/templates/ledger/partials/view-character-planetary/planetary-table.html +22 -0
  132. ledger/templates/ledger/partials/view-character-planetary/storage-table.html +23 -0
  133. ledger/templates/ledger/partials/{administration → view-corporation-administration}/corporation.html +5 -13
  134. ledger/templates/ledger/partials/{administration → view-corporation-administration}/corporation_characters.html +1 -1
  135. ledger/templates/ledger/partials/view-corporation-administration/dashboard.html +81 -0
  136. ledger/templates/ledger/partials/view-corporation-ledger/corporation-billboard.html +25 -0
  137. ledger/templates/ledger/partials/view-corporation-ledger/corporation-ledger-details.html +21 -0
  138. ledger/templates/ledger/partials/view-corporation-ledger/corporation-table.html +26 -0
  139. ledger/templates/ledger/partials/view-corporation-ledger/information/daily.html +18 -0
  140. ledger/templates/ledger/partials/view-corporation-ledger/information/hourly.html +18 -0
  141. ledger/templates/ledger/partials/view-corporation-ledger/information/summary.html +19 -0
  142. ledger/templates/ledger/view-administration.html +62 -0
  143. ledger/templates/ledger/view-alliance-administration.html +49 -0
  144. ledger/templates/ledger/view-alliance-ledger.html +72 -0
  145. ledger/templates/ledger/view-alliance-overview.html +131 -0
  146. ledger/templates/ledger/view-character-administration.html +42 -0
  147. ledger/templates/ledger/view-character-ledger.html +73 -0
  148. ledger/templates/ledger/view-character-overview.html +135 -0
  149. ledger/templates/ledger/view-character-planetary-overview.html +135 -0
  150. ledger/templates/ledger/view-character-planetary.html +73 -0
  151. ledger/templates/ledger/view-corporation-administration.html +42 -0
  152. ledger/templates/ledger/view-corporation-ledger.html +73 -0
  153. ledger/templates/ledger/view-corporation-overview.html +131 -0
  154. ledger/templatetags/ledger.py +3 -5
  155. ledger/tests/__init__.py +187 -0
  156. ledger/tests/test_admin.py +164 -68
  157. ledger/tests/test_auth_hook.py +31 -13
  158. ledger/tests/test_decarators.py +14 -79
  159. ledger/tests/test_discord_installed.py +0 -1
  160. ledger/tests/test_helpers/test_ledger_data.py +19 -0
  161. ledger/tests/test_managers/test_character_audit_manager.py +111 -69
  162. ledger/tests/test_managers/test_character_journal_manager.py +48 -208
  163. ledger/tests/test_managers/test_character_mining_manager.py +37 -16
  164. ledger/tests/test_managers/test_corporation_division_manager.py +66 -28
  165. ledger/tests/test_managers/test_corporation_journal_manager.py +39 -42
  166. ledger/tests/test_managers/test_general_manager.py +78 -18
  167. ledger/tests/test_managers/test_planetary_manager.py +73 -32
  168. ledger/tests/test_models/test_characteraudit.py +58 -74
  169. ledger/tests/test_models/test_characterminingledger.py +20 -26
  170. ledger/tests/test_models/test_characterwalletjournal.py +10 -33
  171. ledger/tests/test_models/test_corporationaudit.py +41 -35
  172. ledger/tests/test_models/test_corporationwalletjournal.py +35 -32
  173. ledger/tests/test_models/test_general.py +44 -11
  174. ledger/tests/test_models/test_planetary.py +14 -80
  175. ledger/tests/test_templatetags.py +2 -7
  176. ledger/tests/test_views/corporation/test_add_corp.py +16 -35
  177. ledger/tests/test_views/corporation/test_delete_corporation.py +66 -42
  178. ledger/tests/test_views/test_access.py +512 -545
  179. ledger/tests/test_views/test_add_ally.py +57 -46
  180. ledger/tests/test_views/test_add_char.py +21 -33
  181. ledger/tests/test_views/test_delete_character.py +24 -21
  182. ledger/tests/testdata/README_ESI_STUB.md +430 -0
  183. ledger/tests/testdata/esi_stub_openapi.py +511 -0
  184. ledger/tests/testdata/integrations/__init__.py +0 -0
  185. ledger/tests/testdata/{load_eveuniverse.py → integrations/eveuniverse.py} +0 -1
  186. ledger/tests/testdata/integrations/planetary.py +13 -0
  187. ledger/tests/testdata/json/factory.json +281 -0
  188. ledger/tests/testdata/json/inactive.json +281 -0
  189. ledger/tests/testdata/json/pins.json +175 -272
  190. ledger/tests/testdata/json/route.json +95 -528
  191. ledger/tests/testdata/test_esi_stub.py +468 -0
  192. ledger/tests/testdata/utils.py +601 -0
  193. ledger/thirdparty/charlink_hook.py +60 -30
  194. ledger/urls.py +0 -135
  195. ledger/views/alliance/add_ally.py +2 -4
  196. ledger/views/alliance/alliance_ledger.py +64 -147
  197. ledger/views/character/add_char.py +8 -10
  198. ledger/views/character/character_ledger.py +60 -126
  199. ledger/views/character/planetary.py +5 -98
  200. ledger/views/corporation/add_corp.py +10 -12
  201. ledger/views/corporation/corporation_ledger.py +65 -327
  202. ledger/views/index.py +92 -30
  203. aa_ledger-1.0.4.dist-info/RECORD +0 -236
  204. ledger/api/api_helper/planetary_helper.py +0 -107
  205. ledger/api/ledger/__init__.py +0 -7
  206. ledger/api/ledger/planetary.py +0 -231
  207. ledger/helpers/alliance.py +0 -317
  208. ledger/helpers/character.py +0 -251
  209. ledger/helpers/core.py +0 -665
  210. ledger/helpers/corporation.py +0 -427
  211. ledger/helpers/data_exporter.py +0 -452
  212. ledger/static/ledger/js/planetary-confirm.js +0 -66
  213. ledger/static/ledger/js/planetary.js +0 -143
  214. ledger/templates/ledger/admin.html +0 -43
  215. ledger/templates/ledger/allyledger/admin/alliance_administration.html +0 -46
  216. ledger/templates/ledger/allyledger/admin/alliance_overview.html +0 -108
  217. ledger/templates/ledger/allyledger/alliance_ledger.html +0 -86
  218. ledger/templates/ledger/bundles/character-ledger-bundles.html +0 -66
  219. ledger/templates/ledger/bundles/corporation-ledger-bundles.html +0 -75
  220. ledger/templates/ledger/bundles/ledger-bundles.html +0 -23
  221. ledger/templates/ledger/bundles/ledger-css.html +0 -3
  222. ledger/templates/ledger/bundles/planetary-bundles.html +0 -50
  223. ledger/templates/ledger/bundles/table-css.html +0 -3
  224. ledger/templates/ledger/charledger/admin/character_administration.html +0 -39
  225. ledger/templates/ledger/charledger/admin/character_overview.html +0 -106
  226. ledger/templates/ledger/charledger/character_ledger.html +0 -94
  227. ledger/templates/ledger/charledger/planetary/admin/planetary_overview.html +0 -123
  228. ledger/templates/ledger/charledger/planetary/planetary_ledger.html +0 -54
  229. ledger/templates/ledger/corpledger/admin/corporation_administration.html +0 -39
  230. ledger/templates/ledger/corpledger/admin/corporation_overview.html +0 -108
  231. ledger/templates/ledger/corpledger/corporation_ledger.html +0 -129
  232. ledger/templates/ledger/data-export.html +0 -78
  233. ledger/templates/ledger/error.html +0 -31
  234. ledger/templates/ledger/partials/form/error-message.html +0 -1
  235. ledger/templates/ledger/partials/information/daily.html +0 -56
  236. ledger/templates/ledger/partials/information/day.html +0 -48
  237. ledger/templates/ledger/partials/information/error.html +0 -8
  238. ledger/templates/ledger/partials/information/hourly.html +0 -53
  239. ledger/templates/ledger/partials/information/summary.html +0 -88
  240. ledger/templates/ledger/partials/information/view_character_content.html +0 -35
  241. ledger/templates/ledger/partials/modal/switchalarm_confirm.html +0 -39
  242. ledger/templates/ledger/partials/modal/view_extractor.html +0 -48
  243. ledger/templates/ledger/partials/modal/view_factory.html +0 -123
  244. ledger/templates/ledger/partials/table/char-ledger.html +0 -85
  245. ledger/templates/ledger/partials/table/corp-ledger.html +0 -66
  246. ledger/templates/ledger/partials/table/planetary.html +0 -18
  247. ledger/templates/ledger/partials/thirdparty/billboard.html +0 -22
  248. ledger/templates/ledger/partials/view/card.html +0 -160
  249. ledger/templates/ledger/permission.html +0 -2
  250. ledger/tests/test_helpers/test_billboard.py +0 -11
  251. ledger/tests/test_helpers/test_data_exporter.py +0 -207
  252. ledger/tests/test_tasks.py +0 -282
  253. ledger/tests/test_view_helpers/test_core.py +0 -47
  254. ledger/tests/test_views/corporation/test_corporation.py +0 -267
  255. ledger/tests/test_views/test_planetary.py +0 -137
  256. ledger/tests/testdata/esi_stub.py +0 -109
  257. ledger/tests/testdata/esi_stub_migration.py +0 -80
  258. ledger/tests/testdata/generate_characteraudit.py +0 -106
  259. ledger/tests/testdata/generate_corporationaudit.py +0 -74
  260. ledger/tests/testdata/generate_events.py +0 -31
  261. ledger/tests/testdata/generate_miningledger.py +0 -13
  262. ledger/tests/testdata/generate_planets.py +0 -48
  263. ledger/tests/testdata/generate_walletjournal.py +0 -42
  264. ledger/tests/testdata/json/czarno-pins.json +0 -240
  265. ledger/tests/testdata/json/czarno-routes.json +0 -165
  266. ledger/tests/testdata/json/pins2.json +0 -538
  267. {aa_ledger-1.0.4.dist-info → aa_ledger-2.0.0.dist-info}/WHEEL +0 -0
  268. {aa_ledger-1.0.4.dist-info → aa_ledger-2.0.0.dist-info}/licenses/LICENSE +0 -0
  269. /ledger/{tests/test_view_helpers → api/helpers}/__init__.py +0 -0
  270. /ledger/templates/ledger/bundles/{ally-administration-bundles.html → view-alliance-administration-js.html} +0 -0
  271. /ledger/templates/ledger/bundles/{char-administration-bundles.html → view-character-administration-js.html} +0 -0
  272. /ledger/templates/ledger/bundles/{corp-administration-bundles.html → view-corporation-administration-js.html} +0 -0
  273. /ledger/templates/ledger/partials/{administration → view-alliance-administration}/alliance.html +0 -0
  274. /ledger/tests/testdata/{esi.json → esi_test_data.json} +0 -0
  275. /ledger/tests/testdata/{allianceauth.json → integrations/allianceauth.json} +0 -0
  276. /ledger/tests/testdata/{load_allianceauth.py → integrations/allianceauth.py} +0 -0
  277. /ledger/tests/testdata/{eveentity.json → integrations/eveentity.json} +0 -0
  278. /ledger/tests/testdata/{load_eveentity.py → integrations/eveentity.py} +0 -0
  279. /ledger/tests/testdata/{eveuniverse.json → integrations/eveuniverse.json} +0 -0
  280. /ledger/tests/testdata/{planetary.json → integrations/planetary.json} +0 -0
@@ -6,39 +6,37 @@ Character Audit
6
6
  from django.contrib import messages
7
7
  from django.contrib.auth.decorators import login_required, permission_required
8
8
  from django.shortcuts import redirect
9
- from django.utils.translation import gettext_lazy as trans
9
+ from django.utils.translation import gettext_lazy as _
10
10
 
11
11
  # Alliance Auth
12
12
  from allianceauth.eveonline.models import EveCharacter
13
13
  from allianceauth.services.hooks import get_extension_logger
14
14
  from esi.decorators import token_required
15
15
 
16
- # Alliance Auth (External Libs)
17
- from app_utils.logging import LoggerAddTag
18
-
19
16
  # AA Ledger
20
17
  from ledger import __title__, tasks
21
- from ledger.models.characteraudit import CharacterAudit
18
+ from ledger.models.characteraudit import CharacterOwner
19
+ from ledger.providers import AppLogger
22
20
 
23
- logger = LoggerAddTag(get_extension_logger(__name__), __title__)
21
+ logger = AppLogger(get_extension_logger(__name__), __title__)
24
22
 
25
23
 
26
24
  @login_required
27
- @token_required(scopes=CharacterAudit.get_esi_scopes())
25
+ @token_required(scopes=CharacterOwner.get_esi_scopes())
28
26
  @permission_required("ledger.basic_access")
29
27
  def add_char(request, token):
30
- char, _ = CharacterAudit.objects.update_or_create(
28
+ char = CharacterOwner.objects.update_or_create(
31
29
  eve_character=EveCharacter.objects.get_character_by_id(token.character_id),
32
30
  defaults={
33
31
  "active": True,
34
32
  "character_name": token.character_name,
35
33
  },
36
- )
34
+ )[0]
37
35
  tasks.update_character.apply_async(
38
36
  args=[char.pk], kwargs={"force_refresh": True}, priority=6
39
37
  )
40
38
 
41
- msg = trans("{character_name} successfully added/updated to Ledger").format(
39
+ msg = _("{character_name} successfully added/updated to Ledger").format(
42
40
  character_name=char.eve_character.character_name,
43
41
  )
44
42
  messages.info(request, msg)
@@ -1,7 +1,6 @@
1
1
  """PvE Views"""
2
2
 
3
3
  # Standard Library
4
- import json
5
4
  from http import HTTPStatus
6
5
 
7
6
  # Django
@@ -10,146 +9,83 @@ from django.contrib.auth.decorators import login_required, permission_required
10
9
  from django.core.handlers.wsgi import WSGIRequest
11
10
  from django.http import JsonResponse
12
11
  from django.shortcuts import redirect, render
13
- from django.utils.translation import gettext as _
12
+ from django.urls import reverse
13
+ from django.utils import timezone
14
+ from django.utils.translation import gettext_lazy as _
14
15
  from django.views.decorators.http import require_POST
15
16
 
16
17
  # Alliance Auth
17
18
  from allianceauth.eveonline.models import EveCharacter
18
19
  from allianceauth.services.hooks import get_extension_logger
19
20
 
20
- # Alliance Auth (External Libs)
21
- from app_utils.logging import LoggerAddTag
22
-
23
21
  # AA Ledger
24
- from ledger import __title__
25
- from ledger.api.helpers import get_character_or_none
26
- from ledger.helpers.character import CharacterData
27
- from ledger.helpers.core import add_info_to_context
28
- from ledger.models.characteraudit import CharacterAudit, CharacterWalletJournalEntry
22
+ from ledger import __title__, forms
23
+ from ledger.api.helpers.core import get_characterowner_or_none
24
+ from ledger.models.characteraudit import CharacterOwner
25
+ from ledger.providers import AppLogger
29
26
 
30
- logger = LoggerAddTag(get_extension_logger(__name__), __title__)
27
+ logger = AppLogger(get_extension_logger(__name__), __title__)
31
28
 
32
29
 
33
30
  @login_required
34
31
  @permission_required("ledger.basic_access")
35
- # pylint: disable=too-many-positional-arguments
36
32
  def character_ledger(
37
33
  request: WSGIRequest,
38
34
  character_id: int,
39
35
  year=None,
40
36
  month=None,
41
37
  day=None,
42
- section=None,
43
38
  ):
44
39
  """
45
40
  Character Ledger
46
41
  """
47
- perms, character = get_character_or_none(request, character_id)
48
-
49
- if not perms:
50
- msg = _("Permission Denied")
51
- messages.error(request, msg)
52
- context = {
53
- "error": msg,
54
- "character_id": character_id,
55
- "disabled": True,
56
- }
57
- context = add_info_to_context(request, context)
58
- return render(
59
- request, "ledger/charledger/character_ledger.html", context=context
60
- )
61
-
62
- character_data = CharacterData(
63
- request=request,
64
- character=character,
65
- year=year,
66
- month=month,
67
- day=day,
68
- section=section,
69
- )
42
+ perms = get_characterowner_or_none(request, character_id)[0]
70
43
 
71
- # Create the ledger data
72
- ledger = character_data.generate_ledger_data()
73
-
74
- context = {
75
- "title": f"Character Ledger - {character.eve_character.character_name}",
44
+ kwargs = {
76
45
  "character_id": character_id,
77
- "billboard": json.dumps(character_data.billboard.dict.asdict()),
78
- "ledger": ledger,
79
- "years": CharacterWalletJournalEntry.objects.filter(
80
- character__in=character_data.characters
81
- )
82
- .exclude(date__year__isnull=True)
83
- .values_list("date__year", flat=True)
84
- .order_by("-date__year")
85
- .distinct(),
86
- "totals": character_data.calculate_totals(ledger),
87
- "view": character_data.create_view_data(
88
- viewname="character_details",
89
- character_id=character_id,
90
- section="summary",
91
- ),
92
- "is_old_ess": character_data.is_old_ess,
93
46
  }
94
- # Add additional information to the context
95
- context = add_info_to_context(request, context)
96
-
97
- return render(request, "ledger/charledger/character_ledger.html", context=context)
98
-
99
-
100
- @login_required
101
- @permission_required("ledger.basic_access")
102
- # pylint: disable=too-many-positional-arguments
103
- def character_details(
104
- request, character_id, year=None, month=None, day=None, section=None
105
- ):
106
- """
107
- Character Details
108
- """
109
- perms, character = get_character_or_none(request, character_id)
110
47
 
111
48
  # pylint: disable=duplicate-code
112
- if perms is False:
113
- msg = _("Permission Denied")
114
- return render(
115
- request,
116
- "ledger/partials/information/view_character_content.html",
117
- {
118
- "error": msg,
119
- "character_id": character_id,
120
- },
121
- )
122
- # pylint: disable=duplicate-code
123
- if perms is None:
124
- msg = _("Corporation not found")
125
- return render(
126
- request,
127
- "ledger/partials/information/view_character_content.html",
128
- {
129
- "error": msg,
130
- "character_id": character_id,
131
- },
132
- )
133
-
134
- character_data = CharacterData(request, character, year, month, day, section)
135
-
136
- journal, mining = character_data.filter_character_journal(character)
137
- amounts = character_data._create_character_details(journal, mining)
138
- details = character_data._add_average_details(request, amounts, day)
49
+ if request.POST:
50
+ year = request.POST.get("year") or None
51
+ month = request.POST.get("month") or None
52
+ day = request.POST.get("day") or None
53
+ # Ensure that if only day is provided, month is also provided
54
+ if day is not None and month is None:
55
+ month = timezone.now().month
56
+
57
+ if year is not None:
58
+ kwargs["year"] = year
59
+ if month is not None:
60
+ kwargs["month"] = month
61
+ if day is not None:
62
+ kwargs["day"] = day
63
+
64
+ # Redirect to the same view with updated parameters
65
+ if request.POST:
66
+ return redirect("ledger:character_ledger", **kwargs)
67
+
68
+ ledger_url = reverse("ledger:api:get_character_ledger", kwargs=kwargs)
139
69
 
140
70
  context = {
141
- "title": f"Character Details - {character.eve_character.character_name}",
142
- "type": "character",
143
- "character": details,
144
- "information": f"Character Details - {character_data.get_details_title}",
71
+ "title": "Character Ledger",
72
+ "character_id": character_id,
73
+ "ledger_url": ledger_url,
74
+ "forms": {
75
+ "character_dropdown": forms.CharacterDropdownForm(
76
+ character_id=character_id,
77
+ year=year,
78
+ month=month,
79
+ day=day,
80
+ ),
81
+ },
145
82
  }
146
- context = add_info_to_context(request, context)
147
83
 
148
- return render(
149
- request,
150
- "ledger/partials/information/view_character_content.html",
151
- context=context,
152
- )
84
+ if not perms:
85
+ msg = _("Permission Denied")
86
+ messages.error(request, msg)
87
+ return render(request, "ledger/view-character-ledger.html", context=context)
88
+ return render(request, "ledger/view-character-ledger.html", context=context)
153
89
 
154
90
 
155
91
  @login_required
@@ -161,11 +97,10 @@ def character_overview(request):
161
97
 
162
98
  context = {
163
99
  "title": "Character Overview",
100
+ "year": timezone.now().year,
101
+ "month": timezone.now().month,
164
102
  }
165
- context = add_info_to_context(request, context)
166
- return render(
167
- request, "ledger/charledger/admin/character_overview.html", context=context
168
- )
103
+ return render(request, "ledger/view-character-overview.html", context=context)
169
104
 
170
105
 
171
106
  @login_required
@@ -177,36 +112,35 @@ def character_administration(request, character_id=None):
177
112
  if character_id is None:
178
113
  character_id = request.user.profile.main_character.character_id
179
114
 
180
- perms, character = get_character_or_none(request, character_id)
115
+ perms, character = get_characterowner_or_none(request, character_id)
181
116
 
182
117
  if not perms:
183
118
  msg = _("Permission Denied")
184
119
  messages.error(request, msg)
185
120
  return redirect("ledger:index")
186
121
 
187
- linked_characters_ids = character.alts.values_list("character_id", flat=True)
188
-
189
- characters = CharacterAudit.objects.filter(
190
- eve_character__character_id__in=linked_characters_ids
122
+ characters = CharacterOwner.objects.filter(
123
+ eve_character__character_id__in=character.alt_ids
191
124
  ).order_by("eve_character__character_name")
192
125
  characters_ids = characters.values_list("eve_character__character_id", flat=True)
193
126
 
194
127
  missing_characters = (
195
- EveCharacter.objects.filter(character_id__in=linked_characters_ids)
128
+ EveCharacter.objects.filter(character_id__in=character.alt_ids)
196
129
  .exclude(character_id__in=characters_ids)
197
130
  .order_by("character_name")
198
131
  )
199
132
 
200
133
  context = {
201
- "character_id": character_id,
202
134
  "title": "Character Administration",
135
+ "character_id": character_id,
136
+ "year": timezone.now().year,
137
+ "month": timezone.now().month,
203
138
  "characters": characters,
204
139
  "missing_characters": missing_characters,
205
140
  }
206
- context = add_info_to_context(request, context)
207
141
  return render(
208
142
  request,
209
- "ledger/charledger/admin/character_administration.html",
143
+ "ledger/view-character-administration.html",
210
144
  context=context,
211
145
  )
212
146
 
@@ -218,7 +152,7 @@ def character_delete(request, character_id):
218
152
  """
219
153
  Character Delete
220
154
  """
221
- perms = get_character_or_none(request, character_id)[0]
155
+ perms = get_characterowner_or_none(request, character_id)[0]
222
156
  if not perms:
223
157
  msg = _("Permission Denied")
224
158
  return JsonResponse(
@@ -226,8 +160,8 @@ def character_delete(request, character_id):
226
160
  )
227
161
 
228
162
  try:
229
- audit = CharacterAudit.objects.get(eve_character__character_id=character_id)
230
- except CharacterAudit.DoesNotExist:
163
+ audit = CharacterOwner.objects.get(eve_character__character_id=character_id)
164
+ except CharacterOwner.DoesNotExist:
231
165
  msg = _("Character not found")
232
166
  return JsonResponse(
233
167
  {"success": False, "message": msg}, status=HTTPStatus.NOT_FOUND, safe=False
@@ -2,38 +2,25 @@
2
2
  Planetary Audit
3
3
  """
4
4
 
5
- # Standard Library
6
- from http import HTTPStatus
7
-
8
5
  # Django
9
6
  from django.contrib.auth.decorators import login_required, permission_required
10
- from django.db.models import Q
11
- from django.http import JsonResponse
12
7
  from django.shortcuts import redirect, render
13
8
  from django.utils.translation import gettext_lazy as _
14
- from django.views.decorators.http import require_POST
15
9
 
16
10
  # Alliance Auth
17
11
  from allianceauth.services.hooks import get_extension_logger
18
12
 
19
- # Alliance Auth (External Libs)
20
- from app_utils.logging import LoggerAddTag
21
-
22
13
  # AA Ledger
23
- from ledger import __title__, forms
24
- from ledger.api.helpers import get_character_or_none
25
- from ledger.helpers.core import add_info_to_context
26
- from ledger.models.planetary import CharacterPlanetDetails
14
+ from ledger import __title__
15
+ from ledger.providers import AppLogger
27
16
 
28
- logger = LoggerAddTag(get_extension_logger(__name__), __title__)
17
+ logger = AppLogger(get_extension_logger(__name__), __title__)
29
18
 
30
19
 
31
20
  @login_required
32
21
  @permission_required("ledger.basic_access")
33
22
  def planetary_ledger_index(request):
34
23
  """Character Ledger Index View"""
35
- context = {}
36
- context = add_info_to_context(request, context)
37
24
  return redirect(
38
25
  "ledger:planetary_ledger", request.user.profile.main_character.character_id
39
26
  )
@@ -48,14 +35,8 @@ def planetary_ledger(request, character_id=None):
48
35
  context = {
49
36
  "title": "Planetary Ledger",
50
37
  "character_id": character_id,
51
- "forms": {
52
- "confirm": forms.ConfirmForm(),
53
- },
54
38
  }
55
- context = add_info_to_context(request, context)
56
- return render(
57
- request, "ledger/charledger/planetary/planetary_ledger.html", context=context
58
- )
39
+ return render(request, "ledger/view-character-planetary.html", context=context)
59
40
 
60
41
 
61
42
  @login_required
@@ -68,82 +49,8 @@ def planetary_overview(request):
68
49
  context = {
69
50
  "title": "Planetary Overview",
70
51
  }
71
- context = add_info_to_context(request, context)
72
-
73
52
  return render(
74
53
  request,
75
- "ledger/charledger/planetary/admin/planetary_overview.html",
54
+ "ledger/view-character-planetary-overview.html",
76
55
  context=context,
77
56
  )
78
-
79
-
80
- @login_required
81
- @permission_required("ledger.basic_access")
82
- @require_POST
83
- def switch_alarm(request):
84
- # Check Permission
85
- form = forms.ConfirmForm(request.POST)
86
-
87
- if form.is_valid():
88
- is_all = False
89
- character_id = int(form.cleaned_data["character_id"])
90
- planet_id = int(form.cleaned_data["planet_id"])
91
-
92
- if character_id == 0: # pylint: disable=duplicate-code
93
- character_id = request.user.profile.main_character.character_id
94
- is_all = True
95
-
96
- perm, character = get_character_or_none(
97
- request, character_id
98
- ) # pylint: disable=duplicate-code
99
-
100
- if not perm:
101
- msg = _("Permission Denied")
102
- return JsonResponse(
103
- {"success": True, "message": msg},
104
- status=HTTPStatus.FORBIDDEN,
105
- safe=False,
106
- )
107
-
108
- if is_all:
109
- characters = character.alts.values_list("character_id", flat=True)
110
- else:
111
- characters = [character_id]
112
-
113
- filters = Q(planet__character__eve_character__character_id__in=characters)
114
- if planet_id != 0:
115
- filters &= Q(planet__planet__id=planet_id)
116
- try:
117
- planets = CharacterPlanetDetails.objects.filter(filters)
118
-
119
- if planets.exists():
120
- # Determine the majority state
121
- on_count = planets.filter(notification=True).count()
122
- off_count = planets.filter(notification=False).count()
123
- majority_state = on_count > off_count
124
-
125
- # Set all to the opposite of the majority state
126
- for p in planets:
127
- p.notification = not majority_state
128
- p.save()
129
-
130
- msg = _("All alarms successfully switched")
131
- else:
132
- raise CharacterPlanetDetails.DoesNotExist
133
-
134
- except CharacterPlanetDetails.DoesNotExist:
135
- msg = _("Planet/s not found")
136
- return JsonResponse(
137
- {"success": True, "message": msg},
138
- status=HTTPStatus.NOT_FOUND,
139
- safe=False,
140
- )
141
-
142
- return JsonResponse(
143
- {"success": True, "message": msg}, status=HTTPStatus.OK, safe=False
144
- )
145
-
146
- msg = "Invalid Form"
147
- return JsonResponse(
148
- {"success": False, "message": msg}, status=HTTPStatus.BAD_REQUEST, safe=False
149
- )
@@ -7,39 +7,37 @@ from django.contrib import messages
7
7
  from django.contrib.auth.decorators import login_required, permission_required
8
8
  from django.http import HttpResponse
9
9
  from django.shortcuts import get_object_or_404, redirect
10
- from django.utils.translation import gettext_lazy as trans
10
+ from django.utils.translation import gettext_lazy as _
11
11
 
12
12
  # Alliance Auth
13
13
  from allianceauth.eveonline.models import EveCharacter, EveCorporationInfo
14
14
  from allianceauth.services.hooks import get_extension_logger
15
15
  from esi.decorators import token_required
16
16
 
17
- # Alliance Auth (External Libs)
18
- from app_utils.logging import LoggerAddTag
19
-
20
17
  # AA Ledger
21
18
  from ledger import __title__, tasks
22
- from ledger.models.corporationaudit import CorporationAudit
19
+ from ledger.models.corporationaudit import CorporationOwner
20
+ from ledger.providers import AppLogger
23
21
 
24
- logger = LoggerAddTag(get_extension_logger(__name__), __title__)
22
+ logger = AppLogger(get_extension_logger(__name__), __title__)
25
23
 
26
24
 
27
25
  @login_required
28
- @token_required(scopes=CorporationAudit.get_esi_scopes())
26
+ @token_required(scopes=CorporationOwner.get_esi_scopes())
29
27
  @permission_required(["ledger.manage_access"])
30
28
  def add_corp(request, token) -> HttpResponse:
31
29
  char = get_object_or_404(EveCharacter, character_id=token.character_id)
32
- eve_corp, _ = EveCorporationInfo.objects.get_or_create(
30
+ eve_corp = EveCorporationInfo.objects.get_or_create(
33
31
  corporation_id=char.corporation_id,
34
32
  defaults={
35
33
  "member_count": 0,
36
34
  "corporation_ticker": char.corporation_ticker,
37
35
  "corporation_name": char.corporation_name,
38
36
  },
39
- )
37
+ )[0]
40
38
 
41
- corp = CorporationAudit.objects.update_or_create(
42
- corporation=eve_corp,
39
+ corp = CorporationOwner.objects.update_or_create(
40
+ eve_corporation=eve_corp,
43
41
  defaults={
44
42
  "corporation_name": eve_corp.corporation_name,
45
43
  },
@@ -48,7 +46,7 @@ def add_corp(request, token) -> HttpResponse:
48
46
  tasks.update_corporation.apply_async(
49
47
  args=[corp.pk], kwargs={"force_refresh": True}, priority=6
50
48
  )
51
- msg = trans("{corporation_name} successfully added/updated to Ledger").format(
49
+ msg = _("{corporation_name} successfully added/updated to Ledger").format(
52
50
  corporation_name=corp.corporation_name,
53
51
  )
54
52
  messages.info(request, msg)