aa-killtracker 0.15.0__tar.gz → 0.17.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 (67) hide show
  1. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/PKG-INFO +6 -5
  2. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/README.md +2 -2
  3. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/__init__.py +2 -2
  4. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/app_settings.py +8 -1
  5. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/apps.py +1 -0
  6. aa_killtracker-0.17.0/killtracker/checks.py +45 -0
  7. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/core/killmails.py +2 -1
  8. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/tasks.py +8 -1
  9. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/tools/generate_conditions_text.py +1 -1
  10. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/pyproject.toml +1 -0
  11. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/LICENSE +0 -0
  12. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/admin.py +0 -0
  13. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/constants.py +0 -0
  14. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/core/__init__.py +0 -0
  15. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/core/discord_messages.py +0 -0
  16. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/exceptions.py +0 -0
  17. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/forms.py +0 -0
  18. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/management/commands/killtracker_load_eve.py +0 -0
  19. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/managers.py +0 -0
  20. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/migrations/0001_initial_new.py +0 -0
  21. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/migrations/0001_squashed_all.py +0 -0
  22. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/migrations/0002_fix_webhook_notes_field.py +0 -0
  23. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/migrations/0002_tracker_require_attackers_weapon_groups_and_more.py +0 -0
  24. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/migrations/0003_add_state_clauses.py +0 -0
  25. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/migrations/0003_optimize_tracker_form.py +0 -0
  26. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/migrations/0004_add_faction_clauses.py +0 -0
  27. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/migrations/0004_django4_update.py +0 -0
  28. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/migrations/0005_add_final_blow_clause_and_more.py +0 -0
  29. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/migrations/0006_evetypeplus.py +0 -0
  30. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/migrations/0007_restructure_killsmails.py +0 -0
  31. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/migrations/0008_copy_data_to_new_structure.py +0 -0
  32. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/migrations/0009_remove_old_models.py +0 -0
  33. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/migrations/__init__.py +0 -0
  34. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/models/__init__.py +0 -0
  35. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/models/killmails.py +0 -0
  36. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/models/trackers.py +0 -0
  37. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/models/webhooks.py +0 -0
  38. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/providers.py +0 -0
  39. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/static/killtracker/killtracker_logo.png +0 -0
  40. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/static/killtracker/zkb_icon.png +0 -0
  41. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/templates/admin/killtracker/tracker/killmail_test.html +0 -0
  42. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/tests/__init__.py +0 -0
  43. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/tests/core/__init__.py +0 -0
  44. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/tests/core/test_discord_messages_1.py +0 -0
  45. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/tests/core/test_discord_messages_2.py +0 -0
  46. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/tests/core/test_killmails.py +0 -0
  47. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/tests/models/__init__.py +0 -0
  48. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/tests/models/test_killmails.py +0 -0
  49. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/tests/models/test_trackers_1.py +0 -0
  50. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/tests/models/test_trackers_2.py +0 -0
  51. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/tests/models/test_webhook.py +0 -0
  52. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/tests/test_admin.py +0 -0
  53. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/tests/test_admin_2.py +0 -0
  54. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/tests/test_exceptions.py +0 -0
  55. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/tests/test_integration.py +0 -0
  56. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/tests/test_tasks.py +0 -0
  57. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/tests/testdata/__init__.py +0 -0
  58. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/tests/testdata/create_eveuniverse.py +0 -0
  59. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/tests/testdata/evealliances.json +0 -0
  60. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/tests/testdata/evecorporations.json +0 -0
  61. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/tests/testdata/eveentities.json +0 -0
  62. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/tests/testdata/eveuniverse.json +0 -0
  63. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/tests/testdata/factories.py +0 -0
  64. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/tests/testdata/helpers.py +0 -0
  65. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/tests/testdata/killmails.json +0 -0
  66. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/tests/testdata/load_eveuniverse.py +0 -0
  67. {aa_killtracker-0.15.0 → aa_killtracker-0.17.0}/killtracker/tools/drop_tables_killtracker.sql +0 -0
@@ -1,7 +1,7 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: aa-killtracker
3
- Version: 0.15.0
4
- Summary: "An app for running killmail trackers with Alliance Auth and Discord.
3
+ Version: 0.17.0
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
7
7
  Description-Content-Type: text/markdown
@@ -19,6 +19,7 @@ Classifier: Programming Language :: Python :: 3.10
19
19
  Classifier: Programming Language :: Python :: 3.11
20
20
  Classifier: Topic :: Internet :: WWW/HTTP
21
21
  Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
22
+ License-File: LICENSE
22
23
  Requires-Dist: allianceauth-app-utils>=1.19.0
23
24
  Requires-Dist: allianceauth>=3
24
25
  Requires-Dist: dacite
@@ -116,7 +117,7 @@ Add below lines to your settings file:
116
117
  # aa-killtracker
117
118
  CELERYBEAT_SCHEDULE['killtracker_run_killtracker'] = {
118
119
  'task': 'killtracker.tasks.run_killtracker',
119
- 'schedule': crontab(minute='*/1'),
120
+ 'schedule': 60,
120
121
  }
121
122
  KILLTRACKER_QUEUE_ID = "" # Put your unique queue ID here
122
123
  ```
@@ -241,7 +242,7 @@ Note that all settings are optional and the app will use the documented default
241
242
  Name | Description | Default
242
243
  -- | -- | --
243
244
  `KILLTRACKER_KILLMAIL_MAX_AGE_FOR_TRACKER`| Ignore killmails that are older than the given number in minutes. Sometimes killmails appear belated on ZKB, this feature ensures they don't create new alerts | `60`
244
- `KILLTRACKER_MAX_KILLMAILS_PER_RUN`| Maximum number of killmails retrieved from ZKB by task run. This value should be set such that the task that fetches new killmails from ZKB every minute will reliable finish within one minute. To test this run a "Catch all" tracker and see how many killmails your system is capable of processing. Note that you can get that information from the worker's log file. It will look something like this: `Total killmails received from ZKB in 49 secs: 251` | `250`
245
+ `KILLTRACKER_MAX_KILLMAILS_PER_RUN`| Maximum number of killmails retrieved from ZKB by task run. This value should be set such that the task that fetches new killmails from ZKB every minute will reliable finish within one minute. To test this run a "Catch all" tracker and see how many killmails your system is capable of processing. Note that you can get that information from the worker's log file. It will look something like this: `Total killmails received from ZKB in 49 secs: 100` | `100`
245
246
  `KILLTRACKER_PURGE_KILLMAILS_AFTER_DAYS`| Killmails older than set number of days will be purged from the database. If you want to keep all killmails set this to 0. Note that this setting is only relevant if you have storing killmails enabled. | `30`
246
247
  `KILLTRACKER_QUEUE_ID`| Unique ID used to identify this server when fetching killmails from zKillboard. This setting is mandatory. | ``
247
248
  `KILLTRACKER_STORING_KILLMAILS_ENABLED`| If set to true Killtracker will automatically store all received killmails in the local database. This can be useful if you want to run analytics on killmails etc. However, please note that Killtracker itself currently does not use stored killmails in any way. | `False`
@@ -87,7 +87,7 @@ Add below lines to your settings file:
87
87
  # aa-killtracker
88
88
  CELERYBEAT_SCHEDULE['killtracker_run_killtracker'] = {
89
89
  'task': 'killtracker.tasks.run_killtracker',
90
- 'schedule': crontab(minute='*/1'),
90
+ 'schedule': 60,
91
91
  }
92
92
  KILLTRACKER_QUEUE_ID = "" # Put your unique queue ID here
93
93
  ```
@@ -212,7 +212,7 @@ Note that all settings are optional and the app will use the documented default
212
212
  Name | Description | Default
213
213
  -- | -- | --
214
214
  `KILLTRACKER_KILLMAIL_MAX_AGE_FOR_TRACKER`| Ignore killmails that are older than the given number in minutes. Sometimes killmails appear belated on ZKB, this feature ensures they don't create new alerts | `60`
215
- `KILLTRACKER_MAX_KILLMAILS_PER_RUN`| Maximum number of killmails retrieved from ZKB by task run. This value should be set such that the task that fetches new killmails from ZKB every minute will reliable finish within one minute. To test this run a "Catch all" tracker and see how many killmails your system is capable of processing. Note that you can get that information from the worker's log file. It will look something like this: `Total killmails received from ZKB in 49 secs: 251` | `250`
215
+ `KILLTRACKER_MAX_KILLMAILS_PER_RUN`| Maximum number of killmails retrieved from ZKB by task run. This value should be set such that the task that fetches new killmails from ZKB every minute will reliable finish within one minute. To test this run a "Catch all" tracker and see how many killmails your system is capable of processing. Note that you can get that information from the worker's log file. It will look something like this: `Total killmails received from ZKB in 49 secs: 100` | `100`
216
216
  `KILLTRACKER_PURGE_KILLMAILS_AFTER_DAYS`| Killmails older than set number of days will be purged from the database. If you want to keep all killmails set this to 0. Note that this setting is only relevant if you have storing killmails enabled. | `30`
217
217
  `KILLTRACKER_QUEUE_ID`| Unique ID used to identify this server when fetching killmails from zKillboard. This setting is mandatory. | ``
218
218
  `KILLTRACKER_STORING_KILLMAILS_ENABLED`| If set to true Killtracker will automatically store all received killmails in the local database. This can be useful if you want to run analytics on killmails etc. However, please note that Killtracker itself currently does not use stored killmails in any way. | `False`
@@ -1,9 +1,9 @@
1
- """"An app for running killmail trackers with Alliance Auth and Discord."""
1
+ """An app for running killmail trackers with Alliance Auth and Discord."""
2
2
 
3
3
  # pylint: disable = invalid-name
4
4
  default_app_config = "killtracker.apps.KillmailsConfig"
5
5
 
6
- __version__ = "0.15.0"
6
+ __version__ = "0.17.0"
7
7
  __title__ = "Killtracker"
8
8
 
9
9
  APP_NAME = "aa-killtracker"
@@ -14,7 +14,7 @@ this feature ensures they don't create new alerts.
14
14
  """
15
15
 
16
16
  KILLTRACKER_MAX_KILLMAILS_PER_RUN = clean_setting(
17
- "KILLTRACKER_MAX_KILLMAILS_PER_RUN", 200
17
+ "KILLTRACKER_MAX_KILLMAILS_PER_RUN", 100
18
18
  )
19
19
  """Maximum number of killmails retrieved from ZKB by task run."""
20
20
 
@@ -99,3 +99,10 @@ KILLTRACKER_STORAGE_KILLMAILS_LIFETIME = clean_setting(
99
99
  "KILLTRACKER_STORAGE_KILLMAILS_LIFETIME", 3_600 * 1
100
100
  )
101
101
  """Max lifetime of killmails in temporary storage in seconds."""
102
+
103
+ KILLTRACKER_ZKB_REQUEST_DELAY = clean_setting("KILLTRACKER_ZKB_REQUEST_DELAY", 500)
104
+ """Delay between subsequent calls to ZKB API in milliseconds.
105
+
106
+ This delay ensures the app does not breach the CloudFlare rate limit of currently
107
+ two (2) requests per second per IP address.
108
+ """
@@ -9,6 +9,7 @@ class KillmailsConfig(AppConfig):
9
9
  verbose_name = f"Killtracker v{__version__}"
10
10
 
11
11
  def ready(self) -> None:
12
+ from . import checks # noqa: F401 pylint: disable=unused-import
12
13
  from .core.killmails import Killmail
13
14
 
14
15
  Killmail.reset_lock_key()
@@ -0,0 +1,45 @@
1
+ """Django checks."""
2
+
3
+ import numbers
4
+
5
+ from django.conf import settings
6
+ from django.core.checks import Warning as DjangoWarning
7
+ from django.core.checks import register
8
+
9
+
10
+ @register()
11
+ def killtracker_config_check(app_configs, **kwargs): # pylint: disable=W0613
12
+ """killtracker_config_check is a Django check that verifies that all periodic tasks
13
+ have been configured correctly in settings.
14
+ """
15
+ if not hasattr(settings, "CELERYBEAT_SCHEDULE"):
16
+ return []
17
+
18
+ warnings = []
19
+ for name, obj in settings.CELERYBEAT_SCHEDULE.items():
20
+ _verify_task_config(warnings, name, obj, "killtracker.tasks.run_killtracker")
21
+ return warnings
22
+
23
+
24
+ def _verify_task_config(warnings: list, name: str, obj: dict, task_name: str):
25
+ if obj["task"] != task_name:
26
+ return
27
+
28
+ schedule = obj["schedule"]
29
+ if isinstance(schedule, numbers.Number):
30
+ return
31
+
32
+ warnings.append(
33
+ DjangoWarning(
34
+ (
35
+ "Periodic task has deprecated schedule: "
36
+ f'CELERYBEAT_SCHEDULE["{name}"]'
37
+ ),
38
+ hint=(
39
+ 'The value for "schedule" must be a positive number, '
40
+ "not e.g. a cron definition. "
41
+ f"Current value is: {schedule}"
42
+ ),
43
+ id="killtracker.W001",
44
+ )
45
+ )
@@ -38,7 +38,7 @@ from killtracker.providers import esi
38
38
 
39
39
  logger = LoggerAddTag(get_extension_logger(__name__), __title__)
40
40
 
41
- ZKB_REDISQ_URL = "https://redisq.zkillboard.com/listen.php"
41
+ ZKB_REDISQ_URL = "https://zkillredisq.stream/listen.php"
42
42
  ZKB_API_URL = "https://zkillboard.com/api/"
43
43
  ZKB_KILLMAIL_BASEURL = "https://zkillboard.com/kill/"
44
44
  REQUESTS_TIMEOUT = (5, 30)
@@ -97,6 +97,7 @@ class KillmailAttacker(_KillmailCharacter):
97
97
  @dataclass
98
98
  class KillmailPosition(_KillmailBase):
99
99
  "A position for a killmail."
100
+
100
101
  x: Optional[float] = None
101
102
  y: Optional[float] = None
102
103
  z: Optional[float] = None
@@ -1,8 +1,11 @@
1
1
  """Tasks for killtracker."""
2
2
 
3
+ from datetime import timedelta
4
+
3
5
  from celery import chain, shared_task
4
6
 
5
7
  from django.db import IntegrityError
8
+ from django.utils.timezone import now
6
9
  from eveuniverse.core.esitools import is_esi_online
7
10
  from eveuniverse.tasks import update_unresolved_eve_entities
8
11
 
@@ -22,6 +25,7 @@ from .app_settings import (
22
25
  KILLTRACKER_STORING_KILLMAILS_ENABLED,
23
26
  KILLTRACKER_TASK_OBJECTS_CACHE_TIMEOUT,
24
27
  KILLTRACKER_TASKS_TIMEOUT,
28
+ KILLTRACKER_ZKB_REQUEST_DELAY,
25
29
  )
26
30
  from .core.killmails import Killmail
27
31
  from .exceptions import WebhookTooManyRequests
@@ -69,7 +73,10 @@ def run_killtracker(runs: int = 0) -> None:
69
73
 
70
74
  total_killmails = runs + (1 if killmail else 0)
71
75
  if killmail and total_killmails < KILLTRACKER_MAX_KILLMAILS_PER_RUN:
72
- run_killtracker.delay(runs=runs + 1)
76
+ run_killtracker.apply_async(
77
+ kwargs={"runs": runs + 1},
78
+ eta=now() + timedelta(milliseconds=KILLTRACKER_ZKB_REQUEST_DELAY),
79
+ )
73
80
  else:
74
81
  if (
75
82
  KILLTRACKER_STORING_KILLMAILS_ENABLED
@@ -1,5 +1,5 @@
1
1
  # flake8: noqa
2
- """ this generated the list of current tracker conditions for the documentation"""
2
+ """this generated the list of current tracker conditions for the documentation"""
3
3
 
4
4
  # init and setup django project
5
5
  import inspect
@@ -74,4 +74,5 @@ disable = [
74
74
  "import-outside-toplevel",
75
75
  "imported-auth-user",
76
76
  "too-many-instance-attributes",
77
+ "too-many-positional-arguments",
77
78
  ]
File without changes