aa-moonmining 2.0.1__tar.gz → 2.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/PKG-INFO +2 -2
  2. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/__init__.py +1 -1
  3. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templates/moonmining/moons.html +7 -1
  4. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/views/moons.py +39 -34
  5. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/pyproject.toml +1 -1
  6. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/LICENSE +0 -0
  7. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/README.md +0 -0
  8. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/admin.py +0 -0
  9. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/app_settings.py +0 -0
  10. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/apps.py +0 -0
  11. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/auth_hooks.py +0 -0
  12. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/constants.py +0 -0
  13. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/core.py +0 -0
  14. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/forms.py +0 -0
  15. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/helpers.py +0 -0
  16. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/locale/de/LC_MESSAGES/django.po +0 -0
  17. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/locale/django.pot +0 -0
  18. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/locale/en/LC_MESSAGES/django.po +0 -0
  19. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/locale/es/LC_MESSAGES/django.po +0 -0
  20. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/locale/fr_FR/LC_MESSAGES/django.po +0 -0
  21. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/locale/it_IT/LC_MESSAGES/django.po +0 -0
  22. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/locale/ja/LC_MESSAGES/django.po +0 -0
  23. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/locale/ko_KR/LC_MESSAGES/django.po +0 -0
  24. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/locale/ru/LC_MESSAGES/django.po +0 -0
  25. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/locale/uk/LC_MESSAGES/django.po +0 -0
  26. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/locale/zh_Hans/LC_MESSAGES/django.po +0 -0
  27. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/management/commands/__init__.py +0 -0
  28. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/management/commands/moonmining_calculate_all.py +0 -0
  29. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/management/commands/moonmining_import_moons.py +0 -0
  30. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/management/commands/moonmining_load_eve.py +0 -0
  31. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/management/commands/moonstuff_export_moons.py +0 -0
  32. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/managers.py +0 -0
  33. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/migrations/0001_initial.py +0 -0
  34. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/migrations/0002_add_mining_ledger.py +0 -0
  35. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/migrations/0003_mining_ledger_reports.py +0 -0
  36. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/migrations/0004_add_permission_moon_ledgers.py +0 -0
  37. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/migrations/0005_make_pricing_more_flexible.py +0 -0
  38. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/migrations/0006_add_labels.py +0 -0
  39. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/migrations/0007_add_localization.py +0 -0
  40. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/migrations/__init__.py +0 -0
  41. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/models/__init__.py +0 -0
  42. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/models/extractions.py +0 -0
  43. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/models/general.py +0 -0
  44. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/models/moons.py +0 -0
  45. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/models/notifications.py +0 -0
  46. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/models/owners.py +0 -0
  47. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/providers.py +0 -0
  48. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/static/moonmining/css/extractions.css +0 -0
  49. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/static/moonmining/css/global.css +0 -0
  50. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/static/moonmining/css/moonmining.css +0 -0
  51. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/static/moonmining/css/moons.css +0 -0
  52. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/static/moonmining/css/reports.css +0 -0
  53. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/static/moonmining/img/Spinner-1s-64px-dark.gif +0 -0
  54. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/static/moonmining/img/Spinner-1s-64px-light.gif +0 -0
  55. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/static/moonmining/vendor/datatables/plugins/dataTables.rowGroup.min.js +0 -0
  56. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/static/moonmining/vendor/datatables/plugins/datetime.js +0 -0
  57. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/static/moonmining/vendor/datatables/plugins/filterDropDown.min.js +0 -0
  58. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/static/moonmining/vendor/datatables/plugins/rowGroup.bootstrap.min.css +0 -0
  59. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/static/moonmining/vendor/datatables/plugins/rowGroup.dataTables.min.css +0 -0
  60. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tasks.py +0 -0
  61. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templates/moonmining/_generic_modal_page.html +0 -0
  62. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templates/moonmining/base.html +0 -0
  63. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templates/moonmining/extractions.html +0 -0
  64. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templates/moonmining/modals/base.html +0 -0
  65. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templates/moonmining/modals/content_base.html +0 -0
  66. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templates/moonmining/modals/extraction_details.html +0 -0
  67. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templates/moonmining/modals/extraction_ledger.html +0 -0
  68. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templates/moonmining/modals/loader_body.html +0 -0
  69. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templates/moonmining/modals/moon_details.html +0 -0
  70. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templates/moonmining/modals/upload_survey.html +0 -0
  71. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templates/moonmining/partials/extraction_details.html +0 -0
  72. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templates/moonmining/partials/extraction_details_head.html +0 -0
  73. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templates/moonmining/partials/extraction_details_head_base.html +0 -0
  74. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templates/moonmining/partials/extraction_details_products.html +0 -0
  75. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templates/moonmining/partials/extraction_ledger.html +0 -0
  76. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templates/moonmining/partials/extraction_ledger_characters.html +0 -0
  77. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templates/moonmining/partials/extraction_ledger_head.html +0 -0
  78. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templates/moonmining/partials/extraction_ledger_ledger.html +0 -0
  79. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templates/moonmining/partials/extractions_tab.html +0 -0
  80. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templates/moonmining/partials/global_js.html +0 -0
  81. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templates/moonmining/partials/location.html +0 -0
  82. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templates/moonmining/partials/menu.html +0 -0
  83. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templates/moonmining/partials/moon_details.html +0 -0
  84. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templates/moonmining/partials/moon_details_moon.html +0 -0
  85. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templates/moonmining/partials/moon_details_products.html +0 -0
  86. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templates/moonmining/partials/moons_tab.html +0 -0
  87. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templates/moonmining/partials/reports_ore_prices_tab.html +0 -0
  88. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templates/moonmining/partials/reports_owned_value_tab.html +0 -0
  89. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templates/moonmining/partials/reports_user_mining_tab.html +0 -0
  90. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templates/moonmining/partials/reports_user_uploaded_tab.html +0 -0
  91. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templates/moonmining/partials/upload_survey.html +0 -0
  92. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templates/moonmining/partials/value_estimate_legend.html +0 -0
  93. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templates/moonmining/reports.html +0 -0
  94. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templates/moonmining/tests.html +0 -0
  95. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templatetags/__init__.py +0 -0
  96. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/templatetags/moonmining.py +0 -0
  97. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/__init__.py +0 -0
  98. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/helpers.py +0 -0
  99. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/models/__init__.py +0 -0
  100. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/models/test_extractions.py +0 -0
  101. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/models/test_moons.py +0 -0
  102. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/models/test_notifications.py +0 -0
  103. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/models/test_owners.py +0 -0
  104. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/test_admin.py +0 -0
  105. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/test_commands.py +0 -0
  106. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/test_core.py +0 -0
  107. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/test_helpers.py +0 -0
  108. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/test_integration.py +0 -0
  109. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/test_managers.py +0 -0
  110. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/test_templatetags.py +0 -0
  111. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/testdata/__init__.py +0 -0
  112. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/testdata/allianceauth.json +0 -0
  113. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/testdata/create_eveuniverse.py +0 -0
  114. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/testdata/esi.json +0 -0
  115. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/testdata/esi_client_stub.py +0 -0
  116. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/testdata/eveuniverse.json +0 -0
  117. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/testdata/factories.py +0 -0
  118. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/testdata/generate_many_moons.py +0 -0
  119. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/testdata/generate_moons.json +0 -0
  120. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/testdata/generate_moons.py +0 -0
  121. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/testdata/load_allianceauth.py +0 -0
  122. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/testdata/load_eveuniverse.py +0 -0
  123. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/testdata/moon_ids.csv +0 -0
  124. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/testdata/moon_survey_input_2.txt +0 -0
  125. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/testdata/moon_survey_input_3.txt +0 -0
  126. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/testdata/moons_for_import.csv +0 -0
  127. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/testdata/notification_details.py +0 -0
  128. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/testdata/notifications_full.json +0 -0
  129. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/testdata/survey_data.py +0 -0
  130. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/views/__init__.py +0 -0
  131. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/views/test_extractions.py +0 -0
  132. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/views/test_general.py +0 -0
  133. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/views/test_moons.py +0 -0
  134. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tests/views/test_reports.py +0 -0
  135. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tools/drop_tables.sql +0 -0
  136. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/tools/esi_notes.md +0 -0
  137. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/urls.py +0 -0
  138. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/views/__init__.py +0 -0
  139. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/views/_helpers.py +0 -0
  140. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/views/extractions.py +0 -0
  141. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/views/general.py +0 -0
  142. {aa_moonmining-2.0.1 → aa_moonmining-2.2.0}/moonmining/views/reports.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aa-moonmining
3
- Version: 2.0.1
3
+ Version: 2.2.0
4
4
  Summary: Alliance Auth app for tracking moon extractions and scouting new moons.
5
5
  Author-email: Erik Kalkoken <kaloken87@gmail.com>
6
6
  Requires-Python: >=3.8
@@ -20,7 +20,7 @@ Classifier: Programming Language :: Python :: 3.12
20
20
  Classifier: Topic :: Internet :: WWW/HTTP
21
21
  Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
22
22
  License-File: LICENSE
23
- Requires-Dist: allianceauth-app-utils>=1.26
23
+ Requires-Dist: allianceauth-app-utils>=1.27
24
24
  Requires-Dist: allianceauth>=4,<5
25
25
  Requires-Dist: django-bootstrap-form
26
26
  Requires-Dist: django-datatables-view>=1.20
@@ -3,5 +3,5 @@
3
3
  # pylint: disable = invalid-name
4
4
  default_app_config = "moonmining.apps.MoonMiningConfig"
5
5
 
6
- __version__ = "2.0.1"
6
+ __version__ = "2.2.0"
7
7
  __title__ = "Moon Mining"
@@ -100,6 +100,11 @@
100
100
  idx: 8,
101
101
  title: "{% translate 'Owned?' %}",
102
102
  maxWidth: "10em"
103
+ },
104
+ {
105
+ idx: 16,
106
+ title: "{% translate 'Ore Type' %}",
107
+ maxWidth: "10em"
103
108
  }
104
109
  ];
105
110
  if (perms.moonmining.extractions_access) {
@@ -141,6 +146,7 @@
141
146
  { data: 'constellation_name' },
142
147
  { data: 'label_name' },
143
148
  { data: 'region_name' },
149
+ { data: 'ore_type_dummy' },
144
150
  ],
145
151
  searching: true,
146
152
  processing: true,
@@ -150,7 +156,7 @@
150
156
  order: [ [0, "asc"] ],
151
157
  columnDefs: [
152
158
  { "orderable": false, "targets": [ 4, 6 ] },
153
- { "visible": false, "targets": [ 7, 8, 9, 10, 11, 12, 13, 14, 15 ] },
159
+ { "visible": false, "targets": [ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 ] },
154
160
  ],
155
161
  filterDropDown: {
156
162
  columns: dropDownColumns,
@@ -10,7 +10,7 @@ from django.contrib.auth.decorators import login_required, permission_required
10
10
  from django.contrib.auth.mixins import LoginRequiredMixin, PermissionRequiredMixin
11
11
  from django.contrib.auth.models import User
12
12
  from django.db import models
13
- from django.db.models import Case, F, OuterRef, Q, Subquery, Value, When
13
+ from django.db.models import Case, F, OuterRef, Q, QuerySet, Subquery, Value, When
14
14
  from django.db.models.functions import Concat
15
15
  from django.http import HttpRequest, JsonResponse
16
16
  from django.shortcuts import get_object_or_404, redirect, render
@@ -28,7 +28,7 @@ from moonmining.app_settings import (
28
28
  )
29
29
  from moonmining.forms import MoonScanForm
30
30
  from moonmining.helpers import user_perms_lookup
31
- from moonmining.models import Extraction, Moon
31
+ from moonmining.models import Extraction, Moon, MoonProduct
32
32
  from moonmining.views._helpers import moon_details_button_html
33
33
  from moonmining.views.extractions import extraction_details_button_html
34
34
 
@@ -66,6 +66,7 @@ class MoonListJson(PermissionRequiredMixin, LoginRequiredMixin, BaseDatatableVie
66
66
  "alliance_name",
67
67
  "has_refinery",
68
68
  "label_name",
69
+ "ore_type_dummy",
69
70
  ]
70
71
 
71
72
  # define column names that will be used in sorting
@@ -73,34 +74,22 @@ class MoonListJson(PermissionRequiredMixin, LoginRequiredMixin, BaseDatatableVie
73
74
  # displayed by datatables. For non sortable columns use empty
74
75
  # value like ''
75
76
  order_columns = [
76
- "pk",
77
- "name",
78
- "refinery__eve_solar_system__name",
77
+ "eve_moon__name",
78
+ "eve_moon__eve_planet__eve_solar_system__name",
79
+ "eve_moon__eve_planet__eve_solar_system__eve_constellation__name",
79
80
  "refinery__name",
80
81
  "",
81
82
  "value",
82
83
  "",
83
- # hidden columns below
84
- "",
85
- "",
86
- "",
87
- "",
88
- "",
89
- "",
90
- "",
91
- "",
92
- "",
93
- "",
94
- "",
95
84
  ]
96
85
 
97
- def get_initial_queryset(self) -> models.QuerySet:
86
+ def get_initial_queryset(self) -> QuerySet:
98
87
  return self.initial_queryset(
99
88
  category=self.kwargs["category"], user=self.request.user
100
89
  )
101
90
 
102
91
  @classmethod
103
- def initial_queryset(cls, category: str, user: User) -> models.QuerySet:
92
+ def initial_queryset(cls, category: str, user: User) -> QuerySet:
104
93
  """Return initial queryset."""
105
94
  current_extraction_qs = Extraction.objects.filter(
106
95
  refinery__moon=OuterRef("pk"),
@@ -157,7 +146,7 @@ class MoonListJson(PermissionRequiredMixin, LoginRequiredMixin, BaseDatatableVie
157
146
 
158
147
  return Moon.objects.none()
159
148
 
160
- def filter_queryset(self, qs) -> models.QuerySet:
149
+ def filter_queryset(self, qs: QuerySet) -> QuerySet:
161
150
  """use parameters passed in GET request to filter queryset"""
162
151
 
163
152
  qs = self._apply_search_filter(
@@ -182,8 +171,11 @@ class MoonListJson(PermissionRequiredMixin, LoginRequiredMixin, BaseDatatableVie
182
171
  "eve_moon__eve_planet__eve_solar_system__eve_constellation__eve_region__name",
183
172
  )
184
173
 
185
- search = self.request.GET.get("search[value]", None)
186
- if search:
174
+ if ore_type_name := self.request.GET.get("columns[16][search][value]"):
175
+ if ore_type_name := ore_type_name.removeprefix("^").removesuffix("$"):
176
+ qs = qs.filter(products__ore_type__name__in=[ore_type_name])
177
+
178
+ if search := self.request.GET.get("search[value]", None):
187
179
  qs = qs.filter(
188
180
  Q(eve_moon__name__istartswith=search)
189
181
  | Q(refinery__name__istartswith=search)
@@ -206,15 +198,18 @@ class MoonListJson(PermissionRequiredMixin, LoginRequiredMixin, BaseDatatableVie
206
198
 
207
199
  # return qs
208
200
 
209
- def _apply_search_filter(self, qs, column_num, field) -> models.QuerySet:
201
+ def _apply_search_filter(
202
+ self, qs: QuerySet, column_num: int, field: str
203
+ ) -> QuerySet:
210
204
  my_filter = self.request.GET.get(f"columns[{column_num}][search][value]", None)
211
- if my_filter:
212
- if self.request.GET.get(f"columns[{column_num}][search][regex]", False):
213
- kwargs = {f"{field}__iregex": my_filter}
214
- else:
215
- kwargs = {f"{field}__istartswith": my_filter}
216
- return qs.filter(**kwargs)
217
- return qs
205
+ if not my_filter:
206
+ return qs
207
+
208
+ if self.request.GET.get(f"columns[{column_num}][search][regex]", False):
209
+ kwargs = {f"{field}__iregex": my_filter}
210
+ else:
211
+ kwargs = {f"{field}__istartswith": my_filter}
212
+ return qs.filter(**kwargs)
218
213
 
219
214
  # pylint: disable = too-many-return-statements
220
215
  def render_column(self, row, column) -> Union[str, dict]:
@@ -239,6 +234,9 @@ class MoonListJson(PermissionRequiredMixin, LoginRequiredMixin, BaseDatatableVie
239
234
  if result := self._render_refinery(row, column):
240
235
  return result
241
236
 
237
+ if column == "ore_type_dummy":
238
+ return ""
239
+
242
240
  return super().render_column(row, column)
243
241
 
244
242
  def _render_location(self, row, column):
@@ -318,9 +316,8 @@ class MoonListJson(PermissionRequiredMixin, LoginRequiredMixin, BaseDatatableVie
318
316
  def moons_fdd_data(request: HttpRequest, category: str) -> JsonResponse:
319
317
  """Provide lists for drop down fields."""
320
318
  qs = MoonListJson.initial_queryset(category=category, user=request.user)
321
- columns = request.GET.get("columns")
322
319
  result = {}
323
- if columns:
320
+ if columns := request.GET.get("columns"):
324
321
  for column in columns.split(","):
325
322
  options = _calc_options(request, qs, column)
326
323
  result[column] = sorted(list(set(options)), key=str.casefold)
@@ -328,7 +325,7 @@ def moons_fdd_data(request: HttpRequest, category: str) -> JsonResponse:
328
325
 
329
326
 
330
327
  # pylint: disable = too-many-return-statements
331
- def _calc_options(request, qs, column):
328
+ def _calc_options(request: HttpRequest, qs: QuerySet, column: str) -> QuerySet:
332
329
  if column == "alliance_name":
333
330
  return qs.exclude(
334
331
  refinery__owner__corporation__alliance__isnull=True,
@@ -373,7 +370,15 @@ def _calc_options(request, qs, column):
373
370
  return qs.values_list("has_extraction_str", flat=True)
374
371
  return []
375
372
 
376
- return [f"** ERROR: Invalid column name '{column}' **"]
373
+ if column == "ore_type_dummy":
374
+ moon_ids = set(qs.values_list("eve_moon_id", flat=True))
375
+ return (
376
+ MoonProduct.objects.filter(moon_id__in=moon_ids)
377
+ .select_related("ore_type")
378
+ .values_list("ore_type__name", flat=True)
379
+ )
380
+
381
+ return [f"** ERROR: No options defined for column name '{column}' **"]
377
382
 
378
383
 
379
384
  @login_required()
@@ -26,7 +26,7 @@ classifiers = [
26
26
  "Topic :: Internet :: WWW/HTTP :: Dynamic Content",
27
27
  ]
28
28
  dependencies = [
29
- "allianceauth-app-utils>=1.26",
29
+ "allianceauth-app-utils>=1.27",
30
30
  "allianceauth>=4,<5",
31
31
  "django-bootstrap-form",
32
32
  "django-datatables-view>=1.20",
File without changes
File without changes