aa-killtracker 0.12.0__py3-none-any.whl → 0.12.1__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_killtracker-0.12.0.dist-info → aa_killtracker-0.12.1.dist-info}/METADATA +1 -1
- {aa_killtracker-0.12.0.dist-info → aa_killtracker-0.12.1.dist-info}/RECORD +18 -20
- killtracker/__init__.py +1 -1
- killtracker/admin.py +18 -160
- killtracker/constants.py +62 -9
- killtracker/managers.py +0 -7
- killtracker/migrations/0003_optimize_tracker_form.py +90 -0
- killtracker/models/__init__.py +3 -2
- killtracker/models/trackers.py +65 -232
- killtracker/models/webhooks.py +242 -0
- killtracker/tests/models/test_trackers_1.py +9 -9
- killtracker/tests/models/test_trackers_2.py +0 -144
- killtracker/tests/models/test_webhook.py +150 -0
- killtracker/tests/test_admin.py +23 -162
- killtracker/tests/test_integration.py +1 -1
- killtracker/tests/test_tasks.py +1 -1
- killtracker/auth_hooks.py +0 -9
- killtracker/templates/admin/killtracker/tracker/change_form.html +0 -16
- killtracker/templates/admin/killtracker/tracker/toogle_npc_button.html +0 -23
- killtracker/urls.py +0 -20
- killtracker/views.py +0 -27
- {aa_killtracker-0.12.0.dist-info → aa_killtracker-0.12.1.dist-info}/LICENSE +0 -0
- {aa_killtracker-0.12.0.dist-info → aa_killtracker-0.12.1.dist-info}/WHEEL +0 -0
@@ -1,16 +1,13 @@
|
|
1
|
-
killtracker/__init__.py,sha256=
|
2
|
-
killtracker/admin.py,sha256=
|
1
|
+
killtracker/__init__.py,sha256=V4m-5KJOKyodZ4W8yOfYnVSdPSXA-9ROan6IGpI_Axs,356
|
2
|
+
killtracker/admin.py,sha256=CHudWND2slzqCt046xdf2lzhFaAuEsNKiF7ptaXm1wQ,13696
|
3
3
|
killtracker/app_settings.py,sha256=4Hzd2BhOoNTZ5RakJ_Hd4PMQPdLSyKN2SE-dIs_iaBY,2839
|
4
4
|
killtracker/apps.py,sha256=CfmDvqVXmoy6sumpjXKldhSlJt5xDiQW3XLBfCqH3-c,307
|
5
|
-
killtracker/
|
6
|
-
killtracker/constants.py,sha256=uLxHiCErOm4sXJZ28Z-YZa1T1cnkwjX8mxZkn82U-jQ,602
|
5
|
+
killtracker/constants.py,sha256=W7-VARE3B4_sdzV_9k7qunUzlxTcdSAeSp_ZJVnbUhw,2514
|
7
6
|
killtracker/exceptions.py,sha256=aFY6qxQOta1V-qvgKp19Cgy6M16O7Si8moc2205OsX0,846
|
8
7
|
killtracker/forms.py,sha256=BqJYcAQ9jbZxTkDsHxrxj0qKKTIGIW0mShbBYdCDlaA,5182
|
9
|
-
killtracker/managers.py,sha256=
|
8
|
+
killtracker/managers.py,sha256=JCrfc3yrKD4uHCfIzPu7y2HF-VIJm1yskdc-CFEf7V4,4390
|
10
9
|
killtracker/providers.py,sha256=smkZe_rKHkZeWFzJ0RhIhJVcbrZUpLYR5fKCge-dpXY,348
|
11
10
|
killtracker/tasks.py,sha256=u_ZAOEeFZWW6qpWcB0HCzgbN0VjA1ZZDHdKPJGHKl0U,7884
|
12
|
-
killtracker/urls.py,sha256=Kj8hMl93jfc7BE4f3ANW6cYp4UZgqrne4MtANn0vClw,436
|
13
|
-
killtracker/views.py,sha256=WqAPnmujY_jhSK0txh55NswD2qWgU2R-OiKa-6lmBaQ,901
|
14
11
|
killtracker/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
15
12
|
killtracker/core/discord_messages.py,sha256=mOKiMWq-3WnaSUFbfgVmlkAedGTZ7OWcVxLp7n58-Z0,14132
|
16
13
|
killtracker/core/killmails.py,sha256=ahppV9_MPi-0uPVo1brQflu9h5osK_uLzWwxLa7KveM,19734
|
@@ -20,6 +17,7 @@ killtracker/migrations/0001_squashed_all.py,sha256=KXwOcRayjGGGmleg7-aTcXeIi-92M
|
|
20
17
|
killtracker/migrations/0002_fix_webhook_notes_field.py,sha256=c_Uymy3K_NSwuZzoKZ2ub-YRgT0VKIVe6bhhcrvfu5Q,494
|
21
18
|
killtracker/migrations/0002_tracker_require_attackers_weapon_groups_and_more.py,sha256=zLBGMxzxha4cq9SX3yKuJA6y7yGQJ7B0TB3G9MtUfFI,1184
|
22
19
|
killtracker/migrations/0003_add_state_clauses.py,sha256=J0AwRYrmiSAmkpui-p637k_aVa404ED2nvw_mVEsY7g,1663
|
20
|
+
killtracker/migrations/0003_optimize_tracker_form.py,sha256=Q_5ArFB1mxCShgoV3CwpSAgP7DM2xR9Vr_fo92MozH0,3623
|
23
21
|
killtracker/migrations/0004_django4_update.py,sha256=fOgbzWr6gMZWYr9Q-Ozg9mHxeUxY1VhuqBvyXv60pAg,7542
|
24
22
|
killtracker/migrations/0005_add_final_blow_clause_and_more.py,sha256=XvaXUChQkcARcP-o8xTQ1inbc5l9IiAmUXuWY1UqzGQ,15550
|
25
23
|
killtracker/migrations/0006_evetypeplus.py,sha256=SpaxJKA5mwnELVtUPFmDcp5Ws1CVono5Fzn2ZuiTZfg,569
|
@@ -27,28 +25,28 @@ killtracker/migrations/0007_restructure_killsmails.py,sha256=_FAUJUM4mpRm8-C8Ogl
|
|
27
25
|
killtracker/migrations/0008_copy_data_to_new_structure.py,sha256=Dgw1jxbei8g8vYYD0LzgH3FKgwRaakelwnFVZv_VXMU,2372
|
28
26
|
killtracker/migrations/0009_remove_old_models.py,sha256=bDIz0hywpFKbHYhdXFXzra5D6mo9yCFg27MVFrTaUNY,1291
|
29
27
|
killtracker/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
30
|
-
killtracker/models/__init__.py,sha256=
|
28
|
+
killtracker/models/__init__.py,sha256=WL6VD9MK7EsZot_RLPz0nX8WxJkp7RtQpw_mYpnVqu8,188
|
31
29
|
killtracker/models/killmails.py,sha256=CCdrHkwUSoTOGqavG-TpMxDRleF9UEacOTui8v3-VT8,5181
|
32
|
-
killtracker/models/trackers.py,sha256=
|
30
|
+
killtracker/models/trackers.py,sha256=2ShkcH8CPix0EszHg-jxZZaJSM5iZUfjPWBEPxIPoOw,28791
|
31
|
+
killtracker/models/webhooks.py,sha256=hh1mYE4pBU26YFawkv1z-j4uyX8aT25B0crOTsocSSY,8268
|
33
32
|
killtracker/static/killtracker/killtracker_logo.png,sha256=3jc9zmYHqP60Np5piP5RfkX0_II-315DNjZ4FRGbqKc,74625
|
34
33
|
killtracker/static/killtracker/zkb_icon.png,sha256=wuVfgyTbTs9qS4KGbDAH3Q9KVPgHqYV5eaVrjEmTjsE,328
|
35
|
-
killtracker/templates/admin/killtracker/tracker/change_form.html,sha256=b-0N19QjQRa_T-lypJk_Bs7Ry8dj3In-xlj1l1IzGMo,519
|
36
34
|
killtracker/templates/admin/killtracker/tracker/killmail_test.html,sha256=TI2ON8qf9pW4rX6G7pT990ZadkipwncQgGUC0FPcWQY,649
|
37
|
-
killtracker/templates/admin/killtracker/tracker/toogle_npc_button.html,sha256=oCtzMJ_exQp23s-gloxVTE_HfGaDdl3eZFPGM6tku34,701
|
38
35
|
killtracker/tests/__init__.py,sha256=CEt5qqp6ptDrx1lwuA6epZ5bzh1CwUJYXeMZqWK9jT0,278
|
39
|
-
killtracker/tests/test_admin.py,sha256=
|
36
|
+
killtracker/tests/test_admin.py,sha256=Yj3CQ2ZaOq0PnsP6X_cC6iZEJ9gPdna6Oyx84G2-Fmg,5642
|
40
37
|
killtracker/tests/test_admin_2.py,sha256=rP0EscM9qUil_ZuXute3R8TQY2P5XSjmxHLbziCGcVw,1140
|
41
38
|
killtracker/tests/test_exceptions.py,sha256=wheTwm0JOBqYVI-DJM4KK2usFAZT1Q-O52VMOnSAz8Y,326
|
42
|
-
killtracker/tests/test_integration.py,sha256=
|
43
|
-
killtracker/tests/test_tasks.py,sha256=
|
39
|
+
killtracker/tests/test_integration.py,sha256=8ISULhhkvymFJ2DHgl3Xpr8CihXBuUpESI_4NB23Bz4,3155
|
40
|
+
killtracker/tests/test_tasks.py,sha256=ZDoCUBd-1kSOKrvSeTrlDaSGFmzHieT5ef0iBz6nr2I,13929
|
44
41
|
killtracker/tests/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
45
42
|
killtracker/tests/core/test_discord_messages_1.py,sha256=dXEj36ejOtf1t6E9gM1GgpOHd77NIxDVlNf4rOrPzxc,3054
|
46
43
|
killtracker/tests/core/test_discord_messages_2.py,sha256=Dm1hzJOg3E_yfkGaU0dbvjucmm5pVjjclOmfO7NDapI,4743
|
47
44
|
killtracker/tests/core/test_killmails.py,sha256=mZzeED2rd2vXHdV5NmPxC0Wt8qkvNz6OX3l046BnEi8,11647
|
48
45
|
killtracker/tests/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
49
46
|
killtracker/tests/models/test_killmails.py,sha256=qSEClhyrqmvsU2P1DiCUonfnl5NDUu50aReQIsCz9CQ,8233
|
50
|
-
killtracker/tests/models/test_trackers_1.py,sha256=
|
51
|
-
killtracker/tests/models/test_trackers_2.py,sha256=
|
47
|
+
killtracker/tests/models/test_trackers_1.py,sha256=KgpoEE7IrfRGe1UMTA7geFb-sOWkU8Ulo5iJrgA_LKw,35211
|
48
|
+
killtracker/tests/models/test_trackers_2.py,sha256=ry4Bb3ab3OTC7Df9hTow1UuKwXULpDrF_qhbGCV8uPo,5373
|
49
|
+
killtracker/tests/models/test_webhook.py,sha256=E4BgmQw9mI5ZenV6ncYHbBonlEeWvvdilAS8IKFkbjw,5246
|
52
50
|
killtracker/tests/testdata/__init__.py,sha256=9aQhf8V-DseZMWjJ_QMXOba6CypoHFSVpYRZEUh-oFc,212
|
53
51
|
killtracker/tests/testdata/create_eveuniverse.py,sha256=Ewr5OBiQwjK1kwDCRh3A3f0Z-CCPi8Gp8dpsPgVAU4A,966
|
54
52
|
killtracker/tests/testdata/evealliances.json,sha256=i6udrtUnWQjn71Iw17WWz9Eb1fdGUNhI1UYLt0hZHog,307
|
@@ -61,7 +59,7 @@ killtracker/tests/testdata/killmails.json,sha256=HKfpXQJ_ikymBSewh4wWixYpLwC3kNB
|
|
61
59
|
killtracker/tests/testdata/load_eveuniverse.py,sha256=FitVc12E_ob56ezK5Y1q07Kbyc7N8poHiCNaLRGU4Jg,388
|
62
60
|
killtracker/tools/drop_tables_killtracker.sql,sha256=fJrGY23NKRunpYC3hI-klFkWub4sBuhfP8TaT__zjPg,1726
|
63
61
|
killtracker/tools/generate_conditions_text.py,sha256=CiXBtaH2KY6JHpuxNlGmxLI6GsvxKKBX5xhXsSz3Rno,768
|
64
|
-
aa_killtracker-0.12.
|
65
|
-
aa_killtracker-0.12.
|
66
|
-
aa_killtracker-0.12.
|
67
|
-
aa_killtracker-0.12.
|
62
|
+
aa_killtracker-0.12.1.dist-info/LICENSE,sha256=XZiwB_S_40_HhnvLg5xvtBb3g1oGjPrk0rpFwk8iInE,1070
|
63
|
+
aa_killtracker-0.12.1.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
|
64
|
+
aa_killtracker-0.12.1.dist-info/METADATA,sha256=wi0FJgujuWNYApqjRCeX37PbzxRh6MR8rVatiOXuc2c,12484
|
65
|
+
aa_killtracker-0.12.1.dist-info/RECORD,,
|
killtracker/__init__.py
CHANGED
killtracker/admin.py
CHANGED
@@ -4,27 +4,16 @@
|
|
4
4
|
|
5
5
|
|
6
6
|
from django.contrib import admin
|
7
|
-
from django.
|
8
|
-
from django.
|
9
|
-
from django.http import HttpResponse, HttpResponseRedirect
|
10
|
-
from django.shortcuts import get_object_or_404, render
|
7
|
+
from django.http import HttpResponseRedirect
|
8
|
+
from django.shortcuts import render
|
11
9
|
from django.utils.safestring import mark_safe
|
12
|
-
from eveuniverse.models import EveGroup
|
13
10
|
|
14
11
|
from allianceauth import NAME as site_header
|
15
|
-
from allianceauth.eveonline.models import EveAllianceInfo, EveCorporationInfo
|
16
12
|
|
17
13
|
from . import tasks
|
18
|
-
from .constants import (
|
19
|
-
SESSION_KEY_TOOGLE_NPC,
|
20
|
-
SESSION_KEY_USES_NPC,
|
21
|
-
EveCategoryId,
|
22
|
-
EveDogmaEffectId,
|
23
|
-
EveGroupId,
|
24
|
-
)
|
25
14
|
from .core.killmails import Killmail
|
26
15
|
from .forms import TrackerAdminForm, TrackerAdminKillmailIdForm, field_nice_display
|
27
|
-
from .models import EveKillmail, EveKillmailAttacker,
|
16
|
+
from .models import EveKillmail, EveKillmailAttacker, Tracker, Webhook
|
28
17
|
|
29
18
|
|
30
19
|
class EveKillmailAttackerInline(admin.TabularInline):
|
@@ -106,8 +95,11 @@ class TrackerAdmin(admin.ModelAdmin):
|
|
106
95
|
)
|
107
96
|
ordering = ("name",)
|
108
97
|
actions = ["disable_tracker", "enable_tracker", "reset_color", "run_test_killmail"]
|
109
|
-
autocomplete_fields = [
|
110
|
-
|
98
|
+
autocomplete_fields = [
|
99
|
+
"origin_solar_system",
|
100
|
+
"require_regions",
|
101
|
+
"require_constellations",
|
102
|
+
"require_solar_systems",
|
111
103
|
"exclude_attacker_alliances",
|
112
104
|
"exclude_attacker_corporations",
|
113
105
|
"require_attacker_alliances",
|
@@ -116,18 +108,17 @@ class TrackerAdmin(admin.ModelAdmin):
|
|
116
108
|
"exclude_victim_alliances",
|
117
109
|
"require_victim_corporations",
|
118
110
|
"exclude_victim_corporations",
|
119
|
-
"exclude_attacker_states",
|
120
|
-
"require_attacker_states",
|
121
|
-
"require_victim_states",
|
122
|
-
"require_regions",
|
123
|
-
"require_constellations",
|
124
|
-
"require_solar_systems",
|
125
|
-
"require_attackers_ship_groups",
|
126
111
|
"require_attackers_ship_types",
|
112
|
+
"require_attackers_ship_groups",
|
127
113
|
"require_attackers_weapon_groups",
|
128
114
|
"require_attackers_weapon_types",
|
129
115
|
"require_victim_ship_groups",
|
130
116
|
"require_victim_ship_types",
|
117
|
+
]
|
118
|
+
filter_horizontal = (
|
119
|
+
"exclude_attacker_states",
|
120
|
+
"require_attacker_states",
|
121
|
+
"require_victim_states",
|
131
122
|
"ping_groups",
|
132
123
|
)
|
133
124
|
fieldsets = (
|
@@ -249,25 +240,6 @@ class TrackerAdmin(admin.ModelAdmin):
|
|
249
240
|
"ping_groups",
|
250
241
|
)
|
251
242
|
|
252
|
-
def change_view(
|
253
|
-
self, request, object_id, form_url="", extra_context=None
|
254
|
-
) -> HttpResponse:
|
255
|
-
extra_context = extra_context or {}
|
256
|
-
tracker = get_object_or_404(Tracker, pk=object_id)
|
257
|
-
is_using_npc = (
|
258
|
-
tracker.require_attackers_ship_types.filter(
|
259
|
-
eve_group__eve_category_id=EveCategoryId.ENTITY
|
260
|
-
).exists()
|
261
|
-
or tracker.require_attackers_ship_groups.filter(
|
262
|
-
eve_category_id=EveCategoryId.ENTITY
|
263
|
-
).exists()
|
264
|
-
)
|
265
|
-
request.session[SESSION_KEY_USES_NPC] = is_using_npc
|
266
|
-
extra_context["is_using_npc"] = is_using_npc
|
267
|
-
return super().change_view(
|
268
|
-
request, object_id, form_url, extra_context=extra_context
|
269
|
-
)
|
270
|
-
|
271
243
|
def _color(self, obj):
|
272
244
|
html = (
|
273
245
|
f'<input type="color" value="{obj.color}" disabled>' if obj.color else "-"
|
@@ -336,21 +308,21 @@ class TrackerAdmin(admin.ModelAdmin):
|
|
336
308
|
def _append_field_to_clauses(self, clauses, field, text):
|
337
309
|
clauses.append(f"{field_nice_display(field)} = {text}")
|
338
310
|
|
339
|
-
@admin.
|
311
|
+
@admin.action(description="Reset color for selected trackers")
|
340
312
|
def reset_color(self, request, queryset):
|
341
313
|
queryset.update(color="")
|
342
314
|
|
343
|
-
@admin.
|
315
|
+
@admin.action(description="Enable selected trackers")
|
344
316
|
def enable_tracker(self, request, queryset):
|
345
317
|
queryset.update(is_enabled=True)
|
346
318
|
self.message_user(request, f"{queryset.count()} trackers enabled.")
|
347
319
|
|
348
|
-
@admin.
|
320
|
+
@admin.action(description="Disable selected trackers")
|
349
321
|
def disable_tracker(self, request, queryset):
|
350
322
|
queryset.update(is_enabled=False)
|
351
323
|
self.message_user(request, f"{queryset.count()} trackers disabled.")
|
352
324
|
|
353
|
-
@admin.
|
325
|
+
@admin.action(description="Run test killmail with selected trackers")
|
354
326
|
def run_test_killmail(self, request, queryset):
|
355
327
|
if "apply" in request.POST:
|
356
328
|
form = TrackerAdminKillmailIdForm(request.POST)
|
@@ -399,117 +371,3 @@ class TrackerAdmin(admin.ModelAdmin):
|
|
399
371
|
"queryset": queryset.order_by("name"),
|
400
372
|
},
|
401
373
|
)
|
402
|
-
|
403
|
-
def formfield_for_manytomany(self, db_field, request, **kwargs):
|
404
|
-
"""overriding this formfield to have sorted lists in the form"""
|
405
|
-
show_npc_types = request.session.get(
|
406
|
-
SESSION_KEY_USES_NPC, False
|
407
|
-
) or request.session.get(SESSION_KEY_TOOGLE_NPC, False)
|
408
|
-
|
409
|
-
if db_field.name in {
|
410
|
-
"exclude_attacker_alliances",
|
411
|
-
"require_attacker_alliances",
|
412
|
-
"require_victim_alliances",
|
413
|
-
"exclude_victim_alliances",
|
414
|
-
}:
|
415
|
-
kwargs["queryset"] = EveAllianceInfo.objects.order_by(
|
416
|
-
Lower("alliance_name")
|
417
|
-
)
|
418
|
-
|
419
|
-
elif db_field.name in {
|
420
|
-
"exclude_attacker_corporations",
|
421
|
-
"require_attacker_corporations",
|
422
|
-
"require_victim_corporations",
|
423
|
-
"exclude_victim_corporations",
|
424
|
-
}:
|
425
|
-
kwargs["queryset"] = EveCorporationInfo.objects.order_by(
|
426
|
-
Lower("corporation_name")
|
427
|
-
)
|
428
|
-
|
429
|
-
elif db_field.name == "require_attackers_ship_groups":
|
430
|
-
qs = EveGroup.objects.filter(
|
431
|
-
eve_category_id__in=[
|
432
|
-
EveCategoryId.STRUCTURE,
|
433
|
-
EveCategoryId.SHIP,
|
434
|
-
EveCategoryId.FIGHTER,
|
435
|
-
],
|
436
|
-
published=True,
|
437
|
-
)
|
438
|
-
if show_npc_types:
|
439
|
-
qs = (
|
440
|
-
qs
|
441
|
-
| EveGroup.objects.filter(
|
442
|
-
eve_category_id=EveCategoryId.ENTITY
|
443
|
-
).filter(eve_types__mass__gt=1, eve_types__volume__gt=1)
|
444
|
-
).distinct()
|
445
|
-
kwargs["queryset"] = qs.order_by(Lower("name"))
|
446
|
-
|
447
|
-
elif db_field.name == "require_attackers_ship_types":
|
448
|
-
qs = EveTypePlus.objects.filter(
|
449
|
-
eve_group__eve_category_id__in=[
|
450
|
-
EveCategoryId.STRUCTURE,
|
451
|
-
EveCategoryId.SHIP,
|
452
|
-
EveCategoryId.FIGHTER,
|
453
|
-
],
|
454
|
-
published=True,
|
455
|
-
)
|
456
|
-
if show_npc_types:
|
457
|
-
qs = qs | EveTypePlus.objects.filter(
|
458
|
-
eve_group__eve_category_id=EveCategoryId.ENTITY,
|
459
|
-
mass__gt=1,
|
460
|
-
volume__gt=1,
|
461
|
-
)
|
462
|
-
kwargs["queryset"] = qs.order_by(Lower("name"))
|
463
|
-
|
464
|
-
elif db_field.name == "require_attackers_weapon_groups":
|
465
|
-
qs = EveGroup.objects.filter(
|
466
|
-
eve_category_id__in=[EveCategoryId.MODULE],
|
467
|
-
published=True,
|
468
|
-
eve_types__dogma_effects__eve_dogma_effect_id=EveDogmaEffectId.HI_POWER,
|
469
|
-
).distinct()
|
470
|
-
kwargs["queryset"] = qs.order_by(Lower("name"))
|
471
|
-
|
472
|
-
elif db_field.name == "require_attackers_weapon_types":
|
473
|
-
qs = EveTypePlus.objects.filter(
|
474
|
-
eve_group__eve_category_id__in=[EveCategoryId.MODULE],
|
475
|
-
published=True,
|
476
|
-
dogma_effects__eve_dogma_effect_id=EveDogmaEffectId.HI_POWER,
|
477
|
-
)
|
478
|
-
|
479
|
-
kwargs["queryset"] = qs.order_by(Lower("name"))
|
480
|
-
|
481
|
-
elif db_field.name == "require_victim_ship_groups":
|
482
|
-
kwargs["queryset"] = EveGroup.objects.filter(
|
483
|
-
(
|
484
|
-
Q(
|
485
|
-
eve_category_id__in=[
|
486
|
-
EveCategoryId.STRUCTURE,
|
487
|
-
EveCategoryId.SHIP,
|
488
|
-
EveCategoryId.FIGHTER,
|
489
|
-
EveCategoryId.DEPLOYABLE,
|
490
|
-
]
|
491
|
-
)
|
492
|
-
& Q(published=True)
|
493
|
-
)
|
494
|
-
| (Q(id=EveGroupId.MINING_DRONE) & Q(published=True))
|
495
|
-
| Q(id=EveGroupId.ORBITAL_INFRASTRUCTURE)
|
496
|
-
).order_by(Lower("name"))
|
497
|
-
|
498
|
-
elif db_field.name == "require_victim_ship_types":
|
499
|
-
kwargs["queryset"] = EveTypePlus.objects.filter(
|
500
|
-
(
|
501
|
-
Q(
|
502
|
-
eve_group__eve_category_id__in=[
|
503
|
-
EveCategoryId.STRUCTURE,
|
504
|
-
EveCategoryId.SHIP,
|
505
|
-
EveCategoryId.FIGHTER,
|
506
|
-
EveCategoryId.DEPLOYABLE,
|
507
|
-
]
|
508
|
-
)
|
509
|
-
& Q(published=True)
|
510
|
-
)
|
511
|
-
| (Q(eve_group_id=EveGroupId.MINING_DRONE) & Q(published=True))
|
512
|
-
| Q(eve_group_id=EveGroupId.ORBITAL_INFRASTRUCTURE)
|
513
|
-
).order_by(Lower("name"))
|
514
|
-
|
515
|
-
return super().formfield_for_manytomany(db_field, request, **kwargs)
|
killtracker/constants.py
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
"""Global constants for killtracker."""
|
2
2
|
|
3
3
|
from enum import IntEnum
|
4
|
-
|
5
|
-
SESSION_KEY_TOOGLE_NPC = "killtracker_toogle_npc"
|
6
|
-
SESSION_KEY_USES_NPC = "killtracker_uses_npc"
|
7
|
-
|
8
|
-
|
9
|
-
class EveDogmaEffectId(IntEnum):
|
10
|
-
"""An Eve dogma effect ID."""
|
11
|
-
|
12
|
-
HI_POWER = 12
|
4
|
+
from typing import Set
|
13
5
|
|
14
6
|
|
15
7
|
class EveCategoryId(IntEnum):
|
@@ -31,3 +23,64 @@ class EveGroupId(IntEnum):
|
|
31
23
|
ORBITAL_INFRASTRUCTURE = 1025
|
32
24
|
PROJECTILE_WEAPON = 55
|
33
25
|
TACTICAL_DESTROYER = 1305
|
26
|
+
|
27
|
+
BURST_PROJECTORS = 842
|
28
|
+
ENERGY_NEUTRALIZER = 71
|
29
|
+
ENERGY_NOSFERATU = 68
|
30
|
+
ENERGY_WEAPON = 53
|
31
|
+
HYBRID_WEAPON = 74
|
32
|
+
INTERDICTION_NULLIFIER = 4117
|
33
|
+
INTERDICTION_SPHERE_LAUNCHER = 589
|
34
|
+
MISSILE_LAUNCHER_BOMB = 862
|
35
|
+
MISSILE_LAUNCHER_CRUISE = 506
|
36
|
+
MISSILE_LAUNCHER_DEFENDER = 512
|
37
|
+
MISSILE_LAUNCHER_HEAVY = 510
|
38
|
+
MISSILE_LAUNCHER_HEAVY_ASSAULT = 771
|
39
|
+
MISSILE_LAUNCHER_LIGHT = 509
|
40
|
+
MISSILE_LAUNCHER_RAPID_HEAVY = 1245
|
41
|
+
MISSILE_LAUNCHER_RAPID_LIGHT = 511
|
42
|
+
MISSILE_LAUNCHER_RAPID_TORPEDO = 1673
|
43
|
+
MISSILE_LAUNCHER_ROCKET = 507
|
44
|
+
MISSILE_LAUNCHER_TORPEDO = 508
|
45
|
+
MISSILE_LAUNCHER_XL_CRUISE = 1674
|
46
|
+
MISSILE_LAUNCHER_XL_TORPEDO = 524
|
47
|
+
PRECURSOR_WEAPON = 1986
|
48
|
+
SMART_BOMB = 72
|
49
|
+
STRIP_MINER = 464
|
50
|
+
SUPER_WEAPON = 588
|
51
|
+
TITAN_PHENOMENA_GENERATOR = 1815
|
52
|
+
VORTON_PROJECTOR = 4060
|
53
|
+
WARP_DISRUPT_FIELD_GENERATOR = 899
|
54
|
+
|
55
|
+
@classmethod
|
56
|
+
def weapons(cls) -> Set["EveGroupId"]:
|
57
|
+
"""Return group IDs for all weapons."""
|
58
|
+
return {
|
59
|
+
cls.BURST_PROJECTORS,
|
60
|
+
cls.ENERGY_NEUTRALIZER,
|
61
|
+
cls.ENERGY_NOSFERATU,
|
62
|
+
cls.ENERGY_WEAPON,
|
63
|
+
cls.HYBRID_WEAPON,
|
64
|
+
cls.INTERDICTION_NULLIFIER,
|
65
|
+
cls.INTERDICTION_SPHERE_LAUNCHER,
|
66
|
+
cls.MISSILE_LAUNCHER_BOMB,
|
67
|
+
cls.MISSILE_LAUNCHER_CRUISE,
|
68
|
+
cls.MISSILE_LAUNCHER_DEFENDER,
|
69
|
+
cls.MISSILE_LAUNCHER_HEAVY,
|
70
|
+
cls.MISSILE_LAUNCHER_HEAVY_ASSAULT,
|
71
|
+
cls.MISSILE_LAUNCHER_LIGHT,
|
72
|
+
cls.MISSILE_LAUNCHER_RAPID_HEAVY,
|
73
|
+
cls.MISSILE_LAUNCHER_RAPID_LIGHT,
|
74
|
+
cls.MISSILE_LAUNCHER_RAPID_TORPEDO,
|
75
|
+
cls.MISSILE_LAUNCHER_ROCKET,
|
76
|
+
cls.MISSILE_LAUNCHER_TORPEDO,
|
77
|
+
cls.MISSILE_LAUNCHER_XL_CRUISE,
|
78
|
+
cls.MISSILE_LAUNCHER_XL_TORPEDO,
|
79
|
+
cls.PRECURSOR_WEAPON,
|
80
|
+
cls.PROJECTILE_WEAPON,
|
81
|
+
cls.SMART_BOMB,
|
82
|
+
cls.SUPER_WEAPON,
|
83
|
+
cls.TITAN_PHENOMENA_GENERATOR,
|
84
|
+
cls.VORTON_PROJECTOR,
|
85
|
+
cls.WARP_DISRUPT_FIELD_GENERATOR,
|
86
|
+
}
|
killtracker/managers.py
CHANGED
@@ -20,13 +20,6 @@ from .core.killmails import Killmail, _KillmailCharacter
|
|
20
20
|
logger = LoggerAddTag(get_extension_logger(__name__), __title__)
|
21
21
|
|
22
22
|
|
23
|
-
class EveTypePlusManager(models.Manager):
|
24
|
-
def get_queryset(self):
|
25
|
-
"""Add join with EveGroup to default queryset."""
|
26
|
-
qs = super().get_queryset()
|
27
|
-
return qs.select_related("eve_group")
|
28
|
-
|
29
|
-
|
30
23
|
class EveKillmailQuerySet(models.QuerySet):
|
31
24
|
"""Custom queryset for EveKillmail"""
|
32
25
|
|
@@ -0,0 +1,90 @@
|
|
1
|
+
# Generated by Django 4.0.10 on 2023-10-05 18:56
|
2
|
+
|
3
|
+
from django.db import migrations, models
|
4
|
+
|
5
|
+
import killtracker.models.trackers
|
6
|
+
|
7
|
+
|
8
|
+
class Migration(migrations.Migration):
|
9
|
+
dependencies = [
|
10
|
+
("eveuniverse", "0010_alter_eveindustryactivityduration_eve_type_and_more"),
|
11
|
+
("killtracker", "0002_tracker_require_attackers_weapon_groups_and_more"),
|
12
|
+
]
|
13
|
+
|
14
|
+
operations = [
|
15
|
+
migrations.DeleteModel(
|
16
|
+
name="EveTypePlus",
|
17
|
+
),
|
18
|
+
migrations.AlterField(
|
19
|
+
model_name="tracker",
|
20
|
+
name="require_attackers_ship_groups",
|
21
|
+
field=models.ManyToManyField(
|
22
|
+
blank=True,
|
23
|
+
default=None,
|
24
|
+
help_text="Only include killmails where at least one attacker is flying one of these ship groups. ",
|
25
|
+
limit_choices_to=killtracker.models.trackers._require_attackers_ship_groups_query,
|
26
|
+
related_name="+",
|
27
|
+
to="eveuniverse.evegroup",
|
28
|
+
),
|
29
|
+
),
|
30
|
+
migrations.AlterField(
|
31
|
+
model_name="tracker",
|
32
|
+
name="require_attackers_ship_types",
|
33
|
+
field=models.ManyToManyField(
|
34
|
+
blank=True,
|
35
|
+
default=None,
|
36
|
+
help_text="Only include killmails where at least one attacker is flying one of these ship types. ",
|
37
|
+
limit_choices_to=killtracker.models.trackers._require_attackers_ship_types_query,
|
38
|
+
related_name="+",
|
39
|
+
to="eveuniverse.evetype",
|
40
|
+
),
|
41
|
+
),
|
42
|
+
migrations.AlterField(
|
43
|
+
model_name="tracker",
|
44
|
+
name="require_attackers_weapon_groups",
|
45
|
+
field=models.ManyToManyField(
|
46
|
+
blank=True,
|
47
|
+
default=None,
|
48
|
+
help_text="Only include killmails where at least one attacker is using one of these weapon groups. ",
|
49
|
+
limit_choices_to=killtracker.models.trackers._require_attackers_weapon_groups_query,
|
50
|
+
related_name="+",
|
51
|
+
to="eveuniverse.evegroup",
|
52
|
+
),
|
53
|
+
),
|
54
|
+
migrations.AlterField(
|
55
|
+
model_name="tracker",
|
56
|
+
name="require_attackers_weapon_types",
|
57
|
+
field=models.ManyToManyField(
|
58
|
+
blank=True,
|
59
|
+
default=None,
|
60
|
+
help_text="Only include killmails where at least one attacker is using one of these weapon types. ",
|
61
|
+
limit_choices_to=killtracker.models.trackers._require_attackers_weapon_types_query,
|
62
|
+
related_name="+",
|
63
|
+
to="eveuniverse.evetype",
|
64
|
+
),
|
65
|
+
),
|
66
|
+
migrations.AlterField(
|
67
|
+
model_name="tracker",
|
68
|
+
name="require_victim_ship_groups",
|
69
|
+
field=models.ManyToManyField(
|
70
|
+
blank=True,
|
71
|
+
default=None,
|
72
|
+
help_text="Only include killmails where victim is flying one of these ship groups. ",
|
73
|
+
limit_choices_to=killtracker.models.trackers._require_victim_ship_groups_query,
|
74
|
+
related_name="+",
|
75
|
+
to="eveuniverse.evegroup",
|
76
|
+
),
|
77
|
+
),
|
78
|
+
migrations.AlterField(
|
79
|
+
model_name="tracker",
|
80
|
+
name="require_victim_ship_types",
|
81
|
+
field=models.ManyToManyField(
|
82
|
+
blank=True,
|
83
|
+
default=None,
|
84
|
+
help_text="Only include killmails where victim is flying one of these ship types. ",
|
85
|
+
limit_choices_to=killtracker.models.trackers._require_victim_ship_types_query,
|
86
|
+
related_name="+",
|
87
|
+
to="eveuniverse.evetype",
|
88
|
+
),
|
89
|
+
),
|
90
|
+
]
|
killtracker/models/__init__.py
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
from .killmails import EveKillmail, EveKillmailAttacker
|
2
|
-
from .trackers import
|
2
|
+
from .trackers import Tracker
|
3
|
+
from .webhooks import Webhook
|
3
4
|
|
4
|
-
__all__ = ["EveKillmail", "EveKillmailAttacker", "
|
5
|
+
__all__ = ["EveKillmail", "EveKillmailAttacker", "Tracker", "Webhook"]
|