aa-killtracker 0.11.0__tar.gz → 0.12.1__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.
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/PKG-INFO +1 -1
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/__init__.py +1 -1
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/admin.py +27 -134
- aa_killtracker-0.12.1/killtracker/constants.py +86 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/core/killmails.py +4 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/management/commands/killtracker_load_eve.py +4 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/managers.py +0 -7
- aa_killtracker-0.12.1/killtracker/migrations/0002_tracker_require_attackers_weapon_groups_and_more.py +35 -0
- aa_killtracker-0.12.1/killtracker/migrations/0003_optimize_tracker_form.py +90 -0
- aa_killtracker-0.12.1/killtracker/models/__init__.py +5 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/models/trackers.py +111 -232
- aa_killtracker-0.12.1/killtracker/models/webhooks.py +242 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/tests/core/test_killmails.py +7 -1
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/tests/models/test_trackers_1.py +57 -12
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/tests/models/test_trackers_2.py +0 -144
- aa_killtracker-0.12.1/killtracker/tests/models/test_webhook.py +150 -0
- aa_killtracker-0.12.1/killtracker/tests/test_admin.py +163 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/tests/test_integration.py +1 -1
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/tests/test_tasks.py +1 -1
- aa_killtracker-0.11.0/killtracker/auth_hooks.py +0 -9
- aa_killtracker-0.11.0/killtracker/constants.py +0 -23
- aa_killtracker-0.11.0/killtracker/models/__init__.py +0 -4
- aa_killtracker-0.11.0/killtracker/templates/admin/killtracker/tracker/change_form.html +0 -16
- aa_killtracker-0.11.0/killtracker/templates/admin/killtracker/tracker/toogle_npc_button.html +0 -23
- aa_killtracker-0.11.0/killtracker/tests/test_admin.py +0 -302
- aa_killtracker-0.11.0/killtracker/urls.py +0 -20
- aa_killtracker-0.11.0/killtracker/views.py +0 -27
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/LICENSE +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/README.md +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/app_settings.py +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/apps.py +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/core/__init__.py +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/core/discord_messages.py +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/exceptions.py +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/forms.py +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/migrations/0001_initial_new.py +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/migrations/0001_squashed_all.py +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/migrations/0002_fix_webhook_notes_field.py +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/migrations/0003_add_state_clauses.py +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/migrations/0004_django4_update.py +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/migrations/0005_add_final_blow_clause_and_more.py +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/migrations/0006_evetypeplus.py +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/migrations/0007_restructure_killsmails.py +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/migrations/0008_copy_data_to_new_structure.py +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/migrations/0009_remove_old_models.py +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/migrations/__init__.py +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/models/killmails.py +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/providers.py +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/static/killtracker/killtracker_logo.png +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/static/killtracker/zkb_icon.png +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/tasks.py +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/templates/admin/killtracker/tracker/killmail_test.html +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/tests/__init__.py +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/tests/core/__init__.py +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/tests/core/test_discord_messages_1.py +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/tests/core/test_discord_messages_2.py +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/tests/models/__init__.py +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/tests/models/test_killmails.py +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/tests/test_admin_2.py +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/tests/test_exceptions.py +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/tests/testdata/__init__.py +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/tests/testdata/create_eveuniverse.py +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/tests/testdata/evealliances.json +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/tests/testdata/evecorporations.json +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/tests/testdata/eveentities.json +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/tests/testdata/eveuniverse.json +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/tests/testdata/factories.py +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/tests/testdata/helpers.py +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/tests/testdata/killmails.json +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/tests/testdata/load_eveuniverse.py +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/tools/drop_tables_killtracker.sql +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/killtracker/tools/generate_conditions_text.py +0 -0
- {aa_killtracker-0.11.0 → aa_killtracker-0.12.1}/pyproject.toml +0 -0
@@ -4,26 +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
|
-
EveGroupId,
|
23
|
-
)
|
24
14
|
from .core.killmails import Killmail
|
25
15
|
from .forms import TrackerAdminForm, TrackerAdminKillmailIdForm, field_nice_display
|
26
|
-
from .models import EveKillmail, EveKillmailAttacker,
|
16
|
+
from .models import EveKillmail, EveKillmailAttacker, Tracker, Webhook
|
27
17
|
|
28
18
|
|
29
19
|
class EveKillmailAttackerInline(admin.TabularInline):
|
@@ -105,8 +95,11 @@ class TrackerAdmin(admin.ModelAdmin):
|
|
105
95
|
)
|
106
96
|
ordering = ("name",)
|
107
97
|
actions = ["disable_tracker", "enable_tracker", "reset_color", "run_test_killmail"]
|
108
|
-
autocomplete_fields = [
|
109
|
-
|
98
|
+
autocomplete_fields = [
|
99
|
+
"origin_solar_system",
|
100
|
+
"require_regions",
|
101
|
+
"require_constellations",
|
102
|
+
"require_solar_systems",
|
110
103
|
"exclude_attacker_alliances",
|
111
104
|
"exclude_attacker_corporations",
|
112
105
|
"require_attacker_alliances",
|
@@ -115,16 +108,17 @@ class TrackerAdmin(admin.ModelAdmin):
|
|
115
108
|
"exclude_victim_alliances",
|
116
109
|
"require_victim_corporations",
|
117
110
|
"exclude_victim_corporations",
|
118
|
-
"exclude_attacker_states",
|
119
|
-
"require_attacker_states",
|
120
|
-
"require_victim_states",
|
121
|
-
"require_regions",
|
122
|
-
"require_constellations",
|
123
|
-
"require_solar_systems",
|
124
|
-
"require_attackers_ship_groups",
|
125
111
|
"require_attackers_ship_types",
|
112
|
+
"require_attackers_ship_groups",
|
113
|
+
"require_attackers_weapon_groups",
|
114
|
+
"require_attackers_weapon_types",
|
126
115
|
"require_victim_ship_groups",
|
127
116
|
"require_victim_ship_types",
|
117
|
+
]
|
118
|
+
filter_horizontal = (
|
119
|
+
"exclude_attacker_states",
|
120
|
+
"require_attacker_states",
|
121
|
+
"require_victim_states",
|
128
122
|
"ping_groups",
|
129
123
|
)
|
130
124
|
fieldsets = (
|
@@ -206,11 +200,13 @@ class TrackerAdmin(admin.ModelAdmin):
|
|
206
200
|
},
|
207
201
|
),
|
208
202
|
(
|
209
|
-
"Ship types",
|
203
|
+
"Ship & Weapon types",
|
210
204
|
{
|
211
205
|
"fields": (
|
212
206
|
"require_attackers_ship_groups",
|
213
207
|
"require_attackers_ship_types",
|
208
|
+
"require_attackers_weapon_groups",
|
209
|
+
"require_attackers_weapon_types",
|
214
210
|
"require_victim_ship_groups",
|
215
211
|
"require_victim_ship_types",
|
216
212
|
),
|
@@ -237,30 +233,13 @@ class TrackerAdmin(admin.ModelAdmin):
|
|
237
233
|
"require_solar_systems",
|
238
234
|
"require_attackers_ship_groups",
|
239
235
|
"require_attackers_ship_types",
|
236
|
+
"require_attackers_weapon_groups",
|
237
|
+
"require_attackers_weapon_types",
|
240
238
|
"require_victim_ship_groups",
|
241
239
|
"require_victim_ship_types",
|
242
240
|
"ping_groups",
|
243
241
|
)
|
244
242
|
|
245
|
-
def change_view(
|
246
|
-
self, request, object_id, form_url="", extra_context=None
|
247
|
-
) -> HttpResponse:
|
248
|
-
extra_context = extra_context or {}
|
249
|
-
tracker = get_object_or_404(Tracker, pk=object_id)
|
250
|
-
is_using_npc = (
|
251
|
-
tracker.require_attackers_ship_types.filter(
|
252
|
-
eve_group__eve_category_id=EveCategoryId.ENTITY
|
253
|
-
).exists()
|
254
|
-
or tracker.require_attackers_ship_groups.filter(
|
255
|
-
eve_category_id=EveCategoryId.ENTITY
|
256
|
-
).exists()
|
257
|
-
)
|
258
|
-
request.session[SESSION_KEY_USES_NPC] = is_using_npc
|
259
|
-
extra_context["is_using_npc"] = is_using_npc
|
260
|
-
return super().change_view(
|
261
|
-
request, object_id, form_url, extra_context=extra_context
|
262
|
-
)
|
263
|
-
|
264
243
|
def _color(self, obj):
|
265
244
|
html = (
|
266
245
|
f'<input type="color" value="{obj.color}" disabled>' if obj.color else "-"
|
@@ -306,6 +285,8 @@ class TrackerAdmin(admin.ModelAdmin):
|
|
306
285
|
("require_min_value", self._add_to_clauses_1),
|
307
286
|
("require_attackers_ship_groups", self._add_to_clauses_2),
|
308
287
|
("require_attackers_ship_types", self._add_to_clauses_2),
|
288
|
+
("require_attackers_weapon_groups", self._add_to_clauses_2),
|
289
|
+
("require_attackers_weapon_types", self._add_to_clauses_2),
|
309
290
|
("require_victim_ship_groups", self._add_to_clauses_2),
|
310
291
|
("require_victim_ship_types", self._add_to_clauses_2),
|
311
292
|
("exclude_npc_kills", self._add_to_clauses_1),
|
@@ -327,21 +308,21 @@ class TrackerAdmin(admin.ModelAdmin):
|
|
327
308
|
def _append_field_to_clauses(self, clauses, field, text):
|
328
309
|
clauses.append(f"{field_nice_display(field)} = {text}")
|
329
310
|
|
330
|
-
@admin.
|
311
|
+
@admin.action(description="Reset color for selected trackers")
|
331
312
|
def reset_color(self, request, queryset):
|
332
313
|
queryset.update(color="")
|
333
314
|
|
334
|
-
@admin.
|
315
|
+
@admin.action(description="Enable selected trackers")
|
335
316
|
def enable_tracker(self, request, queryset):
|
336
317
|
queryset.update(is_enabled=True)
|
337
318
|
self.message_user(request, f"{queryset.count()} trackers enabled.")
|
338
319
|
|
339
|
-
@admin.
|
320
|
+
@admin.action(description="Disable selected trackers")
|
340
321
|
def disable_tracker(self, request, queryset):
|
341
322
|
queryset.update(is_enabled=False)
|
342
323
|
self.message_user(request, f"{queryset.count()} trackers disabled.")
|
343
324
|
|
344
|
-
@admin.
|
325
|
+
@admin.action(description="Run test killmail with selected trackers")
|
345
326
|
def run_test_killmail(self, request, queryset):
|
346
327
|
if "apply" in request.POST:
|
347
328
|
form = TrackerAdminKillmailIdForm(request.POST)
|
@@ -390,91 +371,3 @@ class TrackerAdmin(admin.ModelAdmin):
|
|
390
371
|
"queryset": queryset.order_by("name"),
|
391
372
|
},
|
392
373
|
)
|
393
|
-
|
394
|
-
def formfield_for_manytomany(self, db_field, request, **kwargs):
|
395
|
-
"""overriding this formfield to have sorted lists in the form"""
|
396
|
-
show_npc_types = request.session.get(
|
397
|
-
SESSION_KEY_USES_NPC, False
|
398
|
-
) or request.session.get(SESSION_KEY_TOOGLE_NPC, False)
|
399
|
-
if db_field.name in {
|
400
|
-
"exclude_attacker_alliances",
|
401
|
-
"require_attacker_alliances",
|
402
|
-
"require_victim_alliances",
|
403
|
-
"exclude_victim_alliances",
|
404
|
-
}:
|
405
|
-
kwargs["queryset"] = EveAllianceInfo.objects.order_by(
|
406
|
-
Lower("alliance_name")
|
407
|
-
)
|
408
|
-
elif db_field.name in {
|
409
|
-
"exclude_attacker_corporations",
|
410
|
-
"require_attacker_corporations",
|
411
|
-
"require_victim_corporations",
|
412
|
-
"exclude_victim_corporations",
|
413
|
-
}:
|
414
|
-
kwargs["queryset"] = EveCorporationInfo.objects.order_by(
|
415
|
-
Lower("corporation_name")
|
416
|
-
)
|
417
|
-
elif db_field.name == "require_attackers_ship_groups":
|
418
|
-
qs = EveGroup.objects.filter(
|
419
|
-
eve_category_id__in=[
|
420
|
-
EveCategoryId.STRUCTURE,
|
421
|
-
EveCategoryId.SHIP,
|
422
|
-
EveCategoryId.FIGHTER,
|
423
|
-
],
|
424
|
-
published=True,
|
425
|
-
)
|
426
|
-
if show_npc_types:
|
427
|
-
qs = (
|
428
|
-
qs
|
429
|
-
| EveGroup.objects.filter(
|
430
|
-
eve_category_id=EveCategoryId.ENTITY
|
431
|
-
).filter(eve_types__mass__gt=1, eve_types__volume__gt=1)
|
432
|
-
).distinct()
|
433
|
-
kwargs["queryset"] = qs.order_by(Lower("name"))
|
434
|
-
elif db_field.name == "require_victim_ship_groups":
|
435
|
-
kwargs["queryset"] = EveGroup.objects.filter(
|
436
|
-
(
|
437
|
-
Q(
|
438
|
-
eve_category_id__in=[
|
439
|
-
EveCategoryId.STRUCTURE,
|
440
|
-
EveCategoryId.SHIP,
|
441
|
-
EveCategoryId.FIGHTER,
|
442
|
-
]
|
443
|
-
)
|
444
|
-
& Q(published=True)
|
445
|
-
)
|
446
|
-
| (Q(id=EveGroupId.MINING_DRONE) & Q(published=True))
|
447
|
-
| Q(id=EveGroupId.ORBITAL_INFRASTRUCTURE)
|
448
|
-
).order_by(Lower("name"))
|
449
|
-
elif db_field.name == "require_attackers_ship_types":
|
450
|
-
qs = EveTypePlus.objects.filter(
|
451
|
-
eve_group__eve_category_id__in=[
|
452
|
-
EveCategoryId.STRUCTURE,
|
453
|
-
EveCategoryId.SHIP,
|
454
|
-
EveCategoryId.FIGHTER,
|
455
|
-
],
|
456
|
-
published=True,
|
457
|
-
)
|
458
|
-
if show_npc_types:
|
459
|
-
qs = qs | EveTypePlus.objects.filter(
|
460
|
-
eve_group__eve_category_id=EveCategoryId.ENTITY,
|
461
|
-
mass__gt=1,
|
462
|
-
volume__gt=1,
|
463
|
-
)
|
464
|
-
kwargs["queryset"] = qs.order_by(Lower("name"))
|
465
|
-
elif db_field.name == "require_victim_ship_types":
|
466
|
-
kwargs["queryset"] = EveTypePlus.objects.filter(
|
467
|
-
(
|
468
|
-
Q(
|
469
|
-
eve_group__eve_category_id__in=[
|
470
|
-
EveCategoryId.STRUCTURE,
|
471
|
-
EveCategoryId.SHIP,
|
472
|
-
EveCategoryId.FIGHTER,
|
473
|
-
]
|
474
|
-
)
|
475
|
-
& Q(published=True)
|
476
|
-
)
|
477
|
-
| (Q(eve_group_id=EveGroupId.MINING_DRONE) & Q(published=True))
|
478
|
-
| Q(eve_group_id=EveGroupId.ORBITAL_INFRASTRUCTURE)
|
479
|
-
).order_by(Lower("name"))
|
480
|
-
return super().formfield_for_manytomany(db_field, request, **kwargs)
|
@@ -0,0 +1,86 @@
|
|
1
|
+
"""Global constants for killtracker."""
|
2
|
+
|
3
|
+
from enum import IntEnum
|
4
|
+
from typing import Set
|
5
|
+
|
6
|
+
|
7
|
+
class EveCategoryId(IntEnum):
|
8
|
+
"""An Eve category ID."""
|
9
|
+
|
10
|
+
DEPLOYABLE = 22
|
11
|
+
ENTITY = 11
|
12
|
+
FIGHTER = 87
|
13
|
+
MODULE = 7
|
14
|
+
SHIP = 6
|
15
|
+
STRUCTURE = 65
|
16
|
+
|
17
|
+
|
18
|
+
class EveGroupId(IntEnum):
|
19
|
+
"""An Eve group ID."""
|
20
|
+
|
21
|
+
FRIGATE = 25
|
22
|
+
MINING_DRONE = 101
|
23
|
+
ORBITAL_INFRASTRUCTURE = 1025
|
24
|
+
PROJECTILE_WEAPON = 55
|
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
|
+
}
|
@@ -181,6 +181,10 @@ class Killmail(_KillmailBase):
|
|
181
181
|
"""Returns ship type IDs of all attackers with duplicates."""
|
182
182
|
return [obj.ship_type_id for obj in self.attackers if obj.ship_type_id]
|
183
183
|
|
184
|
+
def attackers_weapon_type_ids(self) -> List[int]:
|
185
|
+
"""Returns weapon type IDs of all attackers with duplicates."""
|
186
|
+
return [obj.weapon_type_id for obj in self.attackers if obj.weapon_type_id]
|
187
|
+
|
184
188
|
def entity_ids(self) -> Set[int]:
|
185
189
|
"""Return distinct IDs of all entities (excluding None)."""
|
186
190
|
ids = {
|
@@ -19,6 +19,8 @@ class Command(BaseCommand):
|
|
19
19
|
"eveuniverse_load_types",
|
20
20
|
__title__,
|
21
21
|
"--category_id",
|
22
|
+
str(EveCategoryId.DEPLOYABLE.value),
|
23
|
+
"--category_id",
|
22
24
|
str(EveCategoryId.ENTITY.value),
|
23
25
|
"--category_id",
|
24
26
|
str(EveCategoryId.SHIP.value),
|
@@ -26,6 +28,8 @@ class Command(BaseCommand):
|
|
26
28
|
str(EveCategoryId.STRUCTURE.value),
|
27
29
|
"--category_id",
|
28
30
|
str(EveCategoryId.FIGHTER.value),
|
31
|
+
"--category_id_with_dogma",
|
32
|
+
str(EveCategoryId.MODULE.value),
|
29
33
|
"--group_id",
|
30
34
|
str(EveGroupId.ORBITAL_INFRASTRUCTURE.value),
|
31
35
|
"--group_id",
|
@@ -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,35 @@
|
|
1
|
+
# Generated by Django 4.0.10 on 2023-09-11 12:22
|
2
|
+
|
3
|
+
from django.db import migrations, models
|
4
|
+
|
5
|
+
|
6
|
+
class Migration(migrations.Migration):
|
7
|
+
dependencies = [
|
8
|
+
("eveuniverse", "0010_alter_eveindustryactivityduration_eve_type_and_more"),
|
9
|
+
("killtracker", "0001_initial_new"),
|
10
|
+
]
|
11
|
+
|
12
|
+
operations = [
|
13
|
+
migrations.AddField(
|
14
|
+
model_name="tracker",
|
15
|
+
name="require_attackers_weapon_groups",
|
16
|
+
field=models.ManyToManyField(
|
17
|
+
blank=True,
|
18
|
+
default=None,
|
19
|
+
help_text="Only include killmails where at least one attacker is using one of these weapon groups. ",
|
20
|
+
related_name="+",
|
21
|
+
to="eveuniverse.evegroup",
|
22
|
+
),
|
23
|
+
),
|
24
|
+
migrations.AddField(
|
25
|
+
model_name="tracker",
|
26
|
+
name="require_attackers_weapon_types",
|
27
|
+
field=models.ManyToManyField(
|
28
|
+
blank=True,
|
29
|
+
default=None,
|
30
|
+
help_text="Only include killmails where at least one attacker is using one of these weapon types. ",
|
31
|
+
related_name="+",
|
32
|
+
to="eveuniverse.evetype",
|
33
|
+
),
|
34
|
+
),
|
35
|
+
]
|
@@ -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
|
+
]
|