aa-killtracker 0.12.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.
Files changed (73) hide show
  1. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/PKG-INFO +1 -1
  2. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/__init__.py +1 -1
  3. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/admin.py +18 -160
  4. aa_killtracker-0.12.1/killtracker/constants.py +86 -0
  5. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/managers.py +0 -7
  6. aa_killtracker-0.12.1/killtracker/migrations/0003_optimize_tracker_form.py +90 -0
  7. aa_killtracker-0.12.1/killtracker/models/__init__.py +5 -0
  8. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/models/trackers.py +65 -232
  9. aa_killtracker-0.12.1/killtracker/models/webhooks.py +242 -0
  10. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/tests/models/test_trackers_1.py +9 -9
  11. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/tests/models/test_trackers_2.py +0 -144
  12. aa_killtracker-0.12.1/killtracker/tests/models/test_webhook.py +150 -0
  13. aa_killtracker-0.12.1/killtracker/tests/test_admin.py +163 -0
  14. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/tests/test_integration.py +1 -1
  15. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/tests/test_tasks.py +1 -1
  16. aa_killtracker-0.12.0/killtracker/auth_hooks.py +0 -9
  17. aa_killtracker-0.12.0/killtracker/constants.py +0 -33
  18. aa_killtracker-0.12.0/killtracker/models/__init__.py +0 -4
  19. aa_killtracker-0.12.0/killtracker/templates/admin/killtracker/tracker/change_form.html +0 -16
  20. aa_killtracker-0.12.0/killtracker/templates/admin/killtracker/tracker/toogle_npc_button.html +0 -23
  21. aa_killtracker-0.12.0/killtracker/tests/test_admin.py +0 -302
  22. aa_killtracker-0.12.0/killtracker/urls.py +0 -20
  23. aa_killtracker-0.12.0/killtracker/views.py +0 -27
  24. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/LICENSE +0 -0
  25. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/README.md +0 -0
  26. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/app_settings.py +0 -0
  27. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/apps.py +0 -0
  28. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/core/__init__.py +0 -0
  29. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/core/discord_messages.py +0 -0
  30. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/core/killmails.py +0 -0
  31. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/exceptions.py +0 -0
  32. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/forms.py +0 -0
  33. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/management/commands/killtracker_load_eve.py +0 -0
  34. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/migrations/0001_initial_new.py +0 -0
  35. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/migrations/0001_squashed_all.py +0 -0
  36. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/migrations/0002_fix_webhook_notes_field.py +0 -0
  37. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/migrations/0002_tracker_require_attackers_weapon_groups_and_more.py +0 -0
  38. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/migrations/0003_add_state_clauses.py +0 -0
  39. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/migrations/0004_django4_update.py +0 -0
  40. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/migrations/0005_add_final_blow_clause_and_more.py +0 -0
  41. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/migrations/0006_evetypeplus.py +0 -0
  42. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/migrations/0007_restructure_killsmails.py +0 -0
  43. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/migrations/0008_copy_data_to_new_structure.py +0 -0
  44. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/migrations/0009_remove_old_models.py +0 -0
  45. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/migrations/__init__.py +0 -0
  46. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/models/killmails.py +0 -0
  47. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/providers.py +0 -0
  48. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/static/killtracker/killtracker_logo.png +0 -0
  49. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/static/killtracker/zkb_icon.png +0 -0
  50. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/tasks.py +0 -0
  51. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/templates/admin/killtracker/tracker/killmail_test.html +0 -0
  52. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/tests/__init__.py +0 -0
  53. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/tests/core/__init__.py +0 -0
  54. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/tests/core/test_discord_messages_1.py +0 -0
  55. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/tests/core/test_discord_messages_2.py +0 -0
  56. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/tests/core/test_killmails.py +0 -0
  57. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/tests/models/__init__.py +0 -0
  58. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/tests/models/test_killmails.py +0 -0
  59. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/tests/test_admin_2.py +0 -0
  60. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/tests/test_exceptions.py +0 -0
  61. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/tests/testdata/__init__.py +0 -0
  62. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/tests/testdata/create_eveuniverse.py +0 -0
  63. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/tests/testdata/evealliances.json +0 -0
  64. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/tests/testdata/evecorporations.json +0 -0
  65. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/tests/testdata/eveentities.json +0 -0
  66. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/tests/testdata/eveuniverse.json +0 -0
  67. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/tests/testdata/factories.py +0 -0
  68. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/tests/testdata/helpers.py +0 -0
  69. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/tests/testdata/killmails.json +0 -0
  70. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/tests/testdata/load_eveuniverse.py +0 -0
  71. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/tools/drop_tables_killtracker.sql +0 -0
  72. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/killtracker/tools/generate_conditions_text.py +0 -0
  73. {aa_killtracker-0.12.0 → aa_killtracker-0.12.1}/pyproject.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: aa-killtracker
3
- Version: 0.12.0
3
+ Version: 0.12.1
4
4
  Summary: "An app for running killmail trackers with Alliance Auth and Discord.
5
5
  Author-email: Erik Kalkoken <kalkoken87@gmail.com>
6
6
  Requires-Python: >=3.8
@@ -3,7 +3,7 @@
3
3
  # pylint: disable = invalid-name
4
4
  default_app_config = "killtracker.apps.KillmailsConfig"
5
5
 
6
- __version__ = "0.12.0"
6
+ __version__ = "0.12.1"
7
7
  __title__ = "Killtracker"
8
8
 
9
9
  APP_NAME = "aa-killtracker"
@@ -4,27 +4,16 @@
4
4
 
5
5
 
6
6
  from django.contrib import admin
7
- from django.db.models import Q
8
- from django.db.models.functions import Lower
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, EveTypePlus, Tracker, Webhook
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 = ["origin_solar_system"]
110
- filter_horizontal = (
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.display(description="Reset color for selected trackers")
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.display(description="Enable selected trackers")
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.display(description="Disable selected trackers")
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.display(description="Run test killmail with selected trackers")
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)
@@ -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
+ }
@@ -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
+ ]
@@ -0,0 +1,5 @@
1
+ from .killmails import EveKillmail, EveKillmailAttacker
2
+ from .trackers import Tracker
3
+ from .webhooks import Webhook
4
+
5
+ __all__ = ["EveKillmail", "EveKillmailAttacker", "Tracker", "Webhook"]