aa-fleetfinder 2.3.4__tar.gz → 2.5.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.

Potentially problematic release.


This version of aa-fleetfinder might be problematic. Click here for more details.

Files changed (85) hide show
  1. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/PKG-INFO +2 -1
  2. aa_fleetfinder-2.5.0/fleetfinder/__init__.py +17 -0
  3. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/locale/cs_CZ/LC_MESSAGES/django.po +1 -1
  4. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/locale/de/LC_MESSAGES/django.po +1 -1
  5. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/locale/django.pot +2 -2
  6. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/locale/es/LC_MESSAGES/django.po +1 -1
  7. aa_fleetfinder-2.5.0/fleetfinder/locale/fr_FR/LC_MESSAGES/django.mo +0 -0
  8. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/locale/fr_FR/LC_MESSAGES/django.po +7 -7
  9. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/locale/it_IT/LC_MESSAGES/django.po +1 -1
  10. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/locale/ja/LC_MESSAGES/django.po +1 -1
  11. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/locale/ko_KR/LC_MESSAGES/django.po +1 -1
  12. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/locale/nl_NL/LC_MESSAGES/django.po +1 -1
  13. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/locale/pl_PL/LC_MESSAGES/django.po +1 -1
  14. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/locale/ru/LC_MESSAGES/django.po +1 -1
  15. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/locale/sk/LC_MESSAGES/django.po +1 -1
  16. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/locale/uk/LC_MESSAGES/django.po +1 -1
  17. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/locale/zh_Hans/LC_MESSAGES/django.po +1 -1
  18. aa_fleetfinder-2.5.0/fleetfinder/providers.py +14 -0
  19. aa_fleetfinder-2.5.0/fleetfinder/templates/fleetfinder/bundles/css/fleetfinder-css.html +3 -0
  20. aa_fleetfinder-2.5.0/fleetfinder/templates/fleetfinder/bundles/css/slim-select-css.html +3 -0
  21. aa_fleetfinder-2.5.0/fleetfinder/templates/fleetfinder/bundles/js/slim-select-js.html +3 -0
  22. aa_fleetfinder-2.5.0/fleetfinder/templatetags/fleetfinder.py +33 -0
  23. aa_fleetfinder-2.5.0/fleetfinder/tests/test_templatetags.py +67 -0
  24. aa_fleetfinder-2.5.0/fleetfinder/tests/test_user_agent.py +40 -0
  25. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/pyproject.toml +1 -0
  26. aa_fleetfinder-2.3.4/fleetfinder/__init__.py +0 -10
  27. aa_fleetfinder-2.3.4/fleetfinder/constants.py +0 -22
  28. aa_fleetfinder-2.3.4/fleetfinder/helper/static_files.py +0 -42
  29. aa_fleetfinder-2.3.4/fleetfinder/locale/fr_FR/LC_MESSAGES/django.mo +0 -0
  30. aa_fleetfinder-2.3.4/fleetfinder/migrations/__init__.py +0 -0
  31. aa_fleetfinder-2.3.4/fleetfinder/providers.py +0 -12
  32. aa_fleetfinder-2.3.4/fleetfinder/templates/fleetfinder/bundles/css/fleetfinder-css.html +0 -3
  33. aa_fleetfinder-2.3.4/fleetfinder/templates/fleetfinder/bundles/css/slim-select-css.html +0 -3
  34. aa_fleetfinder-2.3.4/fleetfinder/templates/fleetfinder/bundles/js/slim-select-js.html +0 -3
  35. aa_fleetfinder-2.3.4/fleetfinder/templatetags/fleetfinder.py +0 -102
  36. aa_fleetfinder-2.3.4/fleetfinder/tests/test_templatetags.py +0 -154
  37. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/.gitignore +0 -0
  38. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/LICENSE +0 -0
  39. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/README.md +0 -0
  40. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/app_settings.py +0 -0
  41. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/apps.py +0 -0
  42. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/auth_hooks.py +0 -0
  43. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/locale/cs_CZ/LC_MESSAGES/django.mo +0 -0
  44. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/locale/de/LC_MESSAGES/django.mo +0 -0
  45. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/locale/es/LC_MESSAGES/django.mo +0 -0
  46. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/locale/it_IT/LC_MESSAGES/django.mo +0 -0
  47. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/locale/ja/LC_MESSAGES/django.mo +0 -0
  48. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/locale/ko_KR/LC_MESSAGES/django.mo +0 -0
  49. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/locale/nl_NL/LC_MESSAGES/django.mo +0 -0
  50. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/locale/pl_PL/LC_MESSAGES/django.mo +0 -0
  51. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/locale/ru/LC_MESSAGES/django.mo +0 -0
  52. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/locale/sk/LC_MESSAGES/django.mo +0 -0
  53. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/locale/uk/LC_MESSAGES/django.mo +0 -0
  54. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  55. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/migrations/0001_initial.py +0 -0
  56. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/migrations/0002_esi_error_handling_and_verbose_names.py +0 -0
  57. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/migrations/0003_alter_fleet_fleet_commander_alter_fleet_groups_and_more.py +0 -0
  58. {aa_fleetfinder-2.3.4/fleetfinder/helper → aa_fleetfinder-2.5.0/fleetfinder/migrations}/__init__.py +0 -0
  59. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/models.py +0 -0
  60. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/static/fleetfinder/css/fleetfinder.css +0 -0
  61. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/static/fleetfinder/css/fleetfinder.min.css +0 -0
  62. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/static/fleetfinder/css/fleetfinder.min.css.map +0 -0
  63. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/static/fleetfinder/libs/slim-select/2.6.0/css/slimselect.css +0 -0
  64. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/static/fleetfinder/libs/slim-select/2.6.0/css/slimselect.min.css +0 -0
  65. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/static/fleetfinder/libs/slim-select/2.6.0/css/slimselect.min.css.map +0 -0
  66. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/static/fleetfinder/libs/slim-select/2.6.0/js/slimselect.min.js +0 -0
  67. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/tasks.py +0 -0
  68. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/templates/fleetfinder/base.html +0 -0
  69. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/templates/fleetfinder/create-fleet.html +0 -0
  70. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/templates/fleetfinder/dashboard.html +0 -0
  71. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/templates/fleetfinder/edit-fleet.html +0 -0
  72. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/templates/fleetfinder/fleet-details.html +0 -0
  73. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/templates/fleetfinder/join-fleet.html +0 -0
  74. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/templates/fleetfinder/partials/body/form-fleet-details.html +0 -0
  75. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/templates/fleetfinder/partials/footer/app-translation-footer.html +0 -0
  76. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/templates/fleetfinder/partials/header/header-nav-left.html +0 -0
  77. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/templates/fleetfinder/partials/header/header-nav-right.html +0 -0
  78. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/templatetags/__init__.py +0 -0
  79. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/tests/__init__.py +0 -0
  80. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/tests/test_access.py +0 -0
  81. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/tests/test_auth_hooks.py +0 -0
  82. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/tests/test_settings.py +0 -0
  83. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/tests/utils.py +0 -0
  84. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/urls.py +0 -0
  85. {aa_fleetfinder-2.3.4 → aa_fleetfinder-2.5.0}/fleetfinder/views.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aa-fleetfinder
3
- Version: 2.3.4
3
+ Version: 2.5.0
4
4
  Summary: Fleet finder plugin for Alliance Auth
5
5
  Project-URL: Changelog, https://github.com/ppfeufer/aa-fleetfinder/blob/master/CHANGELOG.md
6
6
  Project-URL: Documentation, https://github.com/ppfeufer/aa-fleetfinder/blob/master/README.md
@@ -702,6 +702,7 @@ Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
702
702
  Requires-Python: >=3.10
703
703
  Requires-Dist: allianceauth-app-utils>=1.14.2
704
704
  Requires-Dist: allianceauth<5,>=4.6
705
+ Requires-Dist: django-esi>=7.0.1
705
706
  Provides-Extra: tests-allianceauth-latest
706
707
  Requires-Dist: coverage; extra == 'tests-allianceauth-latest'
707
708
  Requires-Dist: django-webtest; extra == 'tests-allianceauth-latest'
@@ -0,0 +1,17 @@
1
+ """
2
+ Initialize the app
3
+ """
4
+
5
+ # Django
6
+ from django.utils.translation import gettext_lazy as _
7
+
8
+ __version__ = "2.5.0"
9
+ __title__ = _("Fleet Finder")
10
+ __verbose_name__ = "Fleet Finder for Alliance Auth"
11
+
12
+ __package_name__ = "aa-fleetfinder"
13
+ __app_name__ = "fleetfinder"
14
+ __app_name_verbose__ = "AA Fleet Finder"
15
+ __app_name_useragent__ = "AA-Fleet-Finder"
16
+
17
+ __github_url__ = f"https://github.com/ppfeufer/{__package_name__}"
@@ -6,7 +6,7 @@ msgid ""
6
6
  msgstr ""
7
7
  "Project-Id-Version: AA Fleet Finder 2.2.1\n"
8
8
  "Report-Msgid-Bugs-To: https://github.com/ppfeufer/aa-fleetfinder/issues\n"
9
- "POT-Creation-Date: 2025-05-05 21:13+0200\n"
9
+ "POT-Creation-Date: 2025-06-03 10:57+0200\n"
10
10
  "PO-Revision-Date: 2024-07-10 14:26+0000\n"
11
11
  "Last-Translator: Dadas Aideron <dadas.aideron@gmail.com>\n"
12
12
  "Language-Team: Czech <https://weblate.ppfeufer.de/projects/alliance-auth-apps/aa-fleetfinder/cs/>\n"
@@ -6,7 +6,7 @@ msgid ""
6
6
  msgstr ""
7
7
  "Project-Id-Version: AA Fleet Finder 2.2.1\n"
8
8
  "Report-Msgid-Bugs-To: https://github.com/ppfeufer/aa-fleetfinder/issues\n"
9
- "POT-Creation-Date: 2025-05-05 21:13+0200\n"
9
+ "POT-Creation-Date: 2025-06-03 10:57+0200\n"
10
10
  "PO-Revision-Date: 2025-04-25 11:24+0000\n"
11
11
  "Last-Translator: Peter Pfeufer <info@ppfeufer.de>\n"
12
12
  "Language-Team: German <https://weblate.ppfeufer.de/projects/alliance-auth-apps/aa-fleetfinder/de/>\n"
@@ -6,9 +6,9 @@
6
6
  #, fuzzy
7
7
  msgid ""
8
8
  msgstr ""
9
- "Project-Id-Version: AA Fleet Finder 2.3.4\n"
9
+ "Project-Id-Version: AA Fleet Finder 2.4.0\n"
10
10
  "Report-Msgid-Bugs-To: https://github.com/ppfeufer/aa-fleetfinder/issues\n"
11
- "POT-Creation-Date: 2025-05-05 21:13+0200\n"
11
+ "POT-Creation-Date: 2025-06-03 10:57+0200\n"
12
12
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
13
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
14
  "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -7,7 +7,7 @@ msgid ""
7
7
  msgstr ""
8
8
  "Project-Id-Version: AA Fleet Finder 2.2.1\n"
9
9
  "Report-Msgid-Bugs-To: https://github.com/ppfeufer/aa-fleetfinder/issues\n"
10
- "POT-Creation-Date: 2025-05-05 21:13+0200\n"
10
+ "POT-Creation-Date: 2025-06-03 10:57+0200\n"
11
11
  "PO-Revision-Date: 2024-12-02 17:40+0000\n"
12
12
  "Last-Translator: Peter Pfeufer <info@ppfeufer.de>\n"
13
13
  "Language-Team: Spanish <https://weblate.ppfeufer.de/projects/alliance-auth-apps/aa-fleetfinder/es/>\n"
@@ -6,13 +6,13 @@
6
6
  # Matthias P <randomusernetcom@gmail.com>, 2024.
7
7
  # Hexo <ghostcig@free.fr>, 2024.
8
8
  # Houbi_Houba <paul.lacape@live.fr>, 2024.
9
- # balbozorre <loic.petiot2002@gmail.com>, 2024.
9
+ # balbozorre <loic.petiot2002@gmail.com>, 2024, 2025.
10
10
  msgid ""
11
11
  msgstr ""
12
12
  "Project-Id-Version: AA Fleet Finder 2.2.1\n"
13
13
  "Report-Msgid-Bugs-To: https://github.com/ppfeufer/aa-fleetfinder/issues\n"
14
- "POT-Creation-Date: 2025-05-05 21:13+0200\n"
15
- "PO-Revision-Date: 2024-12-10 17:15+0000\n"
14
+ "POT-Creation-Date: 2025-06-03 10:57+0200\n"
15
+ "PO-Revision-Date: 2025-05-20 16:24+0000\n"
16
16
  "Last-Translator: balbozorre <loic.petiot2002@gmail.com>\n"
17
17
  "Language-Team: French <https://weblate.ppfeufer.de/projects/alliance-auth-apps/aa-fleetfinder/fr/>\n"
18
18
  "Language: fr_FR\n"
@@ -20,7 +20,7 @@ msgstr ""
20
20
  "Content-Type: text/plain; charset=UTF-8\n"
21
21
  "Content-Transfer-Encoding: 8bit\n"
22
22
  "Plural-Forms: nplurals=2; plural=n > 1;\n"
23
- "X-Generator: Weblate 5.8.4\n"
23
+ "X-Generator: Weblate 5.11.4\n"
24
24
 
25
25
  #: fleetfinder/__init__.py:9 fleetfinder/models.py:24
26
26
  #: fleetfinder/templates/fleetfinder/base.html:6
@@ -74,16 +74,16 @@ msgstr "Date et heure de création"
74
74
  #: fleetfinder/models.py:62
75
75
  #: fleetfinder/templates/fleetfinder/partials/body/form-fleet-details.html:37
76
76
  msgid "Fleet MOTD"
77
- msgstr ""
77
+ msgstr "MOTD de la flotte"
78
78
 
79
79
  #: fleetfinder/models.py:63
80
80
  msgid "Free move"
81
- msgstr ""
81
+ msgstr "Mouvement libre"
82
82
 
83
83
  #: fleetfinder/models.py:69
84
84
  #: fleetfinder/templates/fleetfinder/partials/body/form-fleet-details.html:32
85
85
  msgid "Only selected groups will have access to the fleet. If no groups are selected the fleet will be available to all who have access to this module."
86
- msgstr ""
86
+ msgstr "Seuls les groupes sélectionnés auront accès à la flotte. Si aucun groupe n'est sélectionné, la flotte sera accessible à tous ceux qui ont accès à ce module."
87
87
 
88
88
  #: fleetfinder/models.py:73
89
89
  msgid "Group restrictions"
@@ -7,7 +7,7 @@ msgid ""
7
7
  msgstr ""
8
8
  "Project-Id-Version: AA Fleet Finder 2.2.1\n"
9
9
  "Report-Msgid-Bugs-To: https://github.com/ppfeufer/aa-fleetfinder/issues\n"
10
- "POT-Creation-Date: 2025-05-05 21:13+0200\n"
10
+ "POT-Creation-Date: 2025-06-03 10:57+0200\n"
11
11
  "PO-Revision-Date: 2024-12-22 21:15+0000\n"
12
12
  "Last-Translator: Peter Pfeufer <info@ppfeufer.de>\n"
13
13
  "Language-Team: Italian <https://weblate.ppfeufer.de/projects/alliance-auth-apps/aa-fleetfinder/it/>\n"
@@ -8,7 +8,7 @@ msgid ""
8
8
  msgstr ""
9
9
  "Project-Id-Version: AA Fleet Finder 2.2.1\n"
10
10
  "Report-Msgid-Bugs-To: https://github.com/ppfeufer/aa-fleetfinder/issues\n"
11
- "POT-Creation-Date: 2025-05-05 21:13+0200\n"
11
+ "POT-Creation-Date: 2025-06-03 10:57+0200\n"
12
12
  "PO-Revision-Date: 2024-08-06 11:28+0000\n"
13
13
  "Last-Translator: Peter Pfeufer <info@ppfeufer.de>\n"
14
14
  "Language-Team: Japanese <https://weblate.ppfeufer.de/projects/alliance-auth-apps/aa-fleetfinder/ja/>\n"
@@ -9,7 +9,7 @@ msgid ""
9
9
  msgstr ""
10
10
  "Project-Id-Version: AA Fleet Finder 2.2.1\n"
11
11
  "Report-Msgid-Bugs-To: https://github.com/ppfeufer/aa-fleetfinder/issues\n"
12
- "POT-Creation-Date: 2025-05-05 21:13+0200\n"
12
+ "POT-Creation-Date: 2025-06-03 10:57+0200\n"
13
13
  "PO-Revision-Date: 2025-04-28 07:24+0000\n"
14
14
  "Last-Translator: SiO4 <hohoit0078@gmail.com>\n"
15
15
  "Language-Team: Korean <https://weblate.ppfeufer.de/projects/alliance-auth-apps/aa-fleetfinder/ko/>\n"
@@ -7,7 +7,7 @@ msgid ""
7
7
  msgstr ""
8
8
  "Project-Id-Version: AA Fleet Finder 2.2.1\n"
9
9
  "Report-Msgid-Bugs-To: https://github.com/ppfeufer/aa-fleetfinder/issues\n"
10
- "POT-Creation-Date: 2025-05-05 21:13+0200\n"
10
+ "POT-Creation-Date: 2025-06-03 10:57+0200\n"
11
11
  "PO-Revision-Date: 2024-05-10 14:03+0000\n"
12
12
  "Last-Translator: Anonymous <noreply@weblate.org>\n"
13
13
  "Language-Team: Dutch <https://weblate.ppfeufer.de/projects/alliance-auth-apps/aa-fleetfinder/nl/>\n"
@@ -6,7 +6,7 @@ msgid ""
6
6
  msgstr ""
7
7
  "Project-Id-Version: AA Fleet Finder 2.2.1\n"
8
8
  "Report-Msgid-Bugs-To: https://github.com/ppfeufer/aa-fleetfinder/issues\n"
9
- "POT-Creation-Date: 2025-05-05 21:13+0200\n"
9
+ "POT-Creation-Date: 2025-06-03 10:57+0200\n"
10
10
  "PO-Revision-Date: 2024-05-10 14:03+0000\n"
11
11
  "Last-Translator: Peter Pfeufer <info@ppfeufer.de>\n"
12
12
  "Language-Team: Polish <https://weblate.ppfeufer.de/projects/alliance-auth-apps/aa-fleetfinder/pl/>\n"
@@ -9,7 +9,7 @@ msgid ""
9
9
  msgstr ""
10
10
  "Project-Id-Version: AA Fleet Finder 2.2.1\n"
11
11
  "Report-Msgid-Bugs-To: https://github.com/ppfeufer/aa-fleetfinder/issues\n"
12
- "POT-Creation-Date: 2025-05-05 21:13+0200\n"
12
+ "POT-Creation-Date: 2025-06-03 10:57+0200\n"
13
13
  "PO-Revision-Date: 2024-06-06 14:27+0000\n"
14
14
  "Last-Translator: Roycce_ <malyasov.roma@mail.ru>\n"
15
15
  "Language-Team: Russian <https://weblate.ppfeufer.de/projects/alliance-auth-apps/aa-fleetfinder/ru/>\n"
@@ -7,7 +7,7 @@ msgid ""
7
7
  msgstr ""
8
8
  "Project-Id-Version: AA Fleet Finder 2.2.1\n"
9
9
  "Report-Msgid-Bugs-To: https://github.com/ppfeufer/aa-fleetfinder/issues\n"
10
- "POT-Creation-Date: 2025-05-05 21:13+0200\n"
10
+ "POT-Creation-Date: 2025-06-03 10:57+0200\n"
11
11
  "PO-Revision-Date: 2024-05-10 14:03+0000\n"
12
12
  "Last-Translator: Anonymous <noreply@weblate.org>\n"
13
13
  "Language-Team: Slovak <https://weblate.ppfeufer.de/projects/alliance-auth-apps/aa-fleetfinder/sk/>\n"
@@ -10,7 +10,7 @@ msgid ""
10
10
  msgstr ""
11
11
  "Project-Id-Version: AA Fleet Finder 2.2.1\n"
12
12
  "Report-Msgid-Bugs-To: https://github.com/ppfeufer/aa-fleetfinder/issues\n"
13
- "POT-Creation-Date: 2025-05-05 21:13+0200\n"
13
+ "POT-Creation-Date: 2025-06-03 10:57+0200\n"
14
14
  "PO-Revision-Date: 2025-04-10 07:05+0000\n"
15
15
  "Last-Translator: s0k0l -_- <salarysalo@gmail.com>\n"
16
16
  "Language-Team: Ukrainian <https://weblate.ppfeufer.de/projects/alliance-auth-apps/aa-fleetfinder/uk/>\n"
@@ -9,7 +9,7 @@ msgid ""
9
9
  msgstr ""
10
10
  "Project-Id-Version: AA Fleet Finder 2.2.1\n"
11
11
  "Report-Msgid-Bugs-To: https://github.com/ppfeufer/aa-fleetfinder/issues\n"
12
- "POT-Creation-Date: 2025-05-05 21:13+0200\n"
12
+ "POT-Creation-Date: 2025-06-03 10:57+0200\n"
13
13
  "PO-Revision-Date: 2024-06-06 14:27+0000\n"
14
14
  "Last-Translator: Peter Pfeufer <info@ppfeufer.de>\n"
15
15
  "Language-Team: Chinese (Simplified) <https://weblate.ppfeufer.de/projects/alliance-auth-apps/aa-fleetfinder/zh_Hans/>\n"
@@ -0,0 +1,14 @@
1
+ """
2
+ Providers
3
+ """
4
+
5
+ # Alliance Auth
6
+ from esi.clients import EsiClientProvider
7
+
8
+ # AA Fleet Finder
9
+ from fleetfinder import __app_name_useragent__, __github_url__, __version__
10
+
11
+ # ESI client
12
+ esi = EsiClientProvider(
13
+ ua_appname=__app_name_useragent__, ua_version=__version__, ua_url=__github_url__
14
+ )
@@ -0,0 +1,3 @@
1
+ {% load sri %}
2
+
3
+ {% sri_static "fleetfinder/css/fleetfinder.min.css" %}
@@ -0,0 +1,3 @@
1
+ {% load sri %}
2
+
3
+ {% sri_static "fleetfinder/libs/slim-select/2.6.0/css/slimselect.min.css" %}
@@ -0,0 +1,3 @@
1
+ {% load sri %}
2
+
3
+ {% sri_static "fleetfinder/libs/slim-select/2.6.0/js/slimselect.min.js" %}
@@ -0,0 +1,33 @@
1
+ """
2
+ Versioned static URLs to break browser caches when changing the app version
3
+ """
4
+
5
+ # Django
6
+ from django.template.defaulttags import register
7
+
8
+ # Alliance Auth
9
+ from allianceauth.services.hooks import get_extension_logger
10
+
11
+ # Alliance Auth (External Libs)
12
+ from app_utils.logging import LoggerAddTag
13
+
14
+ # AA Fleet Finder
15
+ from fleetfinder import __title__
16
+
17
+ logger = LoggerAddTag(my_logger=get_extension_logger(__name__), prefix=__title__)
18
+
19
+
20
+ @register.filter
21
+ def get_item(dictionary: dict | None, key: str) -> str | None:
22
+ """
23
+ Little helper: get a key from a dictionary
24
+
25
+ :param dictionary:
26
+ :param key:
27
+ :return:
28
+ """
29
+
30
+ if dictionary is None:
31
+ return None
32
+
33
+ return dictionary.get(key, None)
@@ -0,0 +1,67 @@
1
+ """
2
+ Test the apps' template tags
3
+ """
4
+
5
+ # Django
6
+ from django.test import TestCase
7
+
8
+ # AA Fleet Finder
9
+ from fleetfinder.templatetags.fleetfinder import get_item
10
+
11
+
12
+ class TestGetItem(TestCase):
13
+ """
14
+ Test the `get_item` template tag
15
+ """
16
+
17
+ def test_returns_value_for_existing_key(self):
18
+ """
19
+ Test should return the value for an existing key
20
+
21
+ :return:
22
+ :rtype:
23
+ """
24
+
25
+ dictionary = {"key1": "value1", "key2": "value2"}
26
+ result = get_item(dictionary, "key1")
27
+
28
+ self.assertEqual(result, "value1")
29
+
30
+ def test_returns_none_for_non_existing_key(self):
31
+ """
32
+ Test should return None for a non-existing key
33
+
34
+ :return:
35
+ :rtype:
36
+ """
37
+
38
+ dictionary = {"key1": "value1", "key2": "value2"}
39
+ result = get_item(dictionary, "key3")
40
+
41
+ self.assertIsNone(result)
42
+
43
+ def test_returns_none_for_empty_dictionary(self):
44
+ """
45
+ Test should return None for an empty dictionary
46
+
47
+ :return:
48
+ :rtype:
49
+ """
50
+
51
+ dictionary = {}
52
+ result = get_item(dictionary, "key1")
53
+
54
+ self.assertIsNone(result)
55
+
56
+ def test_returns_none_for_none_dictionary(self):
57
+ """
58
+ Test should return None for a None dictionary
59
+
60
+ :return:
61
+ :rtype:
62
+ """
63
+
64
+ dictionary = None
65
+ result = get_item(dictionary, "key1")
66
+
67
+ self.assertIsNone(result)
@@ -0,0 +1,40 @@
1
+ """
2
+ Test user agent header for ESI requests
3
+ """
4
+
5
+ # Django
6
+ from django.conf import settings
7
+ from django.test import TestCase
8
+
9
+ # Alliance Auth
10
+ from esi import __url__ as esi_url
11
+ from esi import __version__ as esi_version
12
+
13
+ # AA Fleet Finder
14
+ from fleetfinder import __app_name_useragent__, __github_url__, __version__
15
+ from fleetfinder.providers import esi
16
+
17
+
18
+ class TestUserAgent(TestCase):
19
+ """
20
+ Test the user agent header for ESI requests
21
+ """
22
+
23
+ def test_user_agent_header(self):
24
+ """
25
+ Test that the user agent header is set correctly for ESI requests.
26
+
27
+ :return:
28
+ :rtype:
29
+ """
30
+
31
+ operation = esi.client.Universe.get_universe_factions()
32
+
33
+ self.assertEqual(
34
+ operation.future.request.headers["User-Agent"],
35
+ (
36
+ f"{__app_name_useragent__}/{__version__} "
37
+ f"({settings.ESI_USER_CONTACT_EMAIL}; +{__github_url__}) "
38
+ f"Django-ESI/{esi_version} (+{esi_url})"
39
+ ),
40
+ )
@@ -40,6 +40,7 @@ dynamic = [
40
40
  dependencies = [
41
41
  "allianceauth>=4.6,<5",
42
42
  "allianceauth-app-utils>=1.14.2",
43
+ "django-esi>=7.0.1",
43
44
  ]
44
45
  optional-dependencies.tests-allianceauth-latest = [
45
46
  "coverage",
@@ -1,10 +0,0 @@
1
- """
2
- Initialize the app
3
- """
4
-
5
- # Django
6
- from django.utils.translation import gettext_lazy as _
7
-
8
- __version__ = "2.3.4"
9
- __title__ = _("Fleet Finder")
10
- __verbose_name__ = "Fleet Finder for Alliance Auth"
@@ -1,22 +0,0 @@
1
- """
2
- Constants used in this app
3
- """
4
-
5
- # Standard Library
6
- import os
7
-
8
- # Alliance Auth
9
- from esi import __version__ as esi_version
10
-
11
- # AA Fleet Finder
12
- from fleetfinder import __version__
13
-
14
- APP_NAME = "aa-fleetfinder"
15
- APP_NAME_VERBOSE = "AA Fleet Finder"
16
- APP_NAME_VERBOSE_USERAGENT = "AA-Fleet-Finder"
17
- PACKAGE_NAME = "fleetfinder"
18
- GITHUB_URL = f"https://github.com/ppfeufer/{APP_NAME}"
19
- USER_AGENT = f"{APP_NAME_VERBOSE_USERAGENT}/{__version__} (+{GITHUB_URL}) Django-ESI/{esi_version}"
20
-
21
- APP_BASE_DIR = os.path.join(os.path.dirname(__file__))
22
- APP_STATIC_DIR = os.path.join(APP_BASE_DIR, "static", PACKAGE_NAME)
@@ -1,42 +0,0 @@
1
- """
2
- Helper functions for static integrity calculations
3
- """
4
-
5
- # Standard Library
6
- import os
7
- from pathlib import Path
8
-
9
- # Third Party
10
- from sri import Algorithm, calculate_integrity
11
-
12
- # Alliance Auth
13
- from allianceauth.services.hooks import get_extension_logger
14
-
15
- # Alliance Auth (External Libs)
16
- from app_utils.logging import LoggerAddTag
17
-
18
- # AA Fleet Finder
19
- from fleetfinder import __title__
20
- from fleetfinder.constants import APP_STATIC_DIR
21
-
22
- logger = LoggerAddTag(my_logger=get_extension_logger(__name__), prefix=__title__)
23
-
24
-
25
- def calculate_integrity_hash(relative_file_path: str) -> str:
26
- """
27
- Calculates the integrity hash for a given static file
28
-
29
- :param self:
30
- :type self:
31
- :param relative_file_path: The file path relative to the `{APP_NAME}/{PACKAGE_NAME}/static/{PACKAGE_NAME}` folder
32
- :type relative_file_path: str
33
- :return: The integrity hash
34
- :rtype: str
35
- """
36
-
37
- file_path = os.path.join(APP_STATIC_DIR, relative_file_path)
38
- integrity_hash = calculate_integrity(
39
- path=Path(file_path), algorithm=Algorithm.SHA512
40
- )
41
-
42
- return integrity_hash
File without changes
@@ -1,12 +0,0 @@
1
- """
2
- Providers
3
- """
4
-
5
- # Alliance Auth
6
- from esi.clients import EsiClientProvider
7
-
8
- # AA Fleet Finder
9
- from fleetfinder.constants import USER_AGENT
10
-
11
- # ESI client
12
- esi = EsiClientProvider(app_info_text=USER_AGENT)
@@ -1,3 +0,0 @@
1
- {% load fleetfinder %}
2
-
3
- {% fleetfinder_static "css/fleetfinder.min.css" %}
@@ -1,3 +0,0 @@
1
- {% load fleetfinder %}
2
-
3
- {% fleetfinder_static "libs/slim-select/2.6.0/css/slimselect.min.css" %}
@@ -1,3 +0,0 @@
1
- {% load fleetfinder %}
2
-
3
- {% fleetfinder_static "libs/slim-select/2.6.0/js/slimselect.min.js" %}
@@ -1,102 +0,0 @@
1
- """
2
- Versioned static URLs to break browser caches when changing the app version
3
- """
4
-
5
- # Standard Library
6
- import os
7
-
8
- # Django
9
- from django.template.defaulttags import register
10
- from django.templatetags.static import static
11
- from django.utils.safestring import mark_safe
12
-
13
- # Alliance Auth
14
- from allianceauth.services.hooks import get_extension_logger
15
-
16
- # Alliance Auth (External Libs)
17
- from app_utils.logging import LoggerAddTag
18
-
19
- # AA Fleet Finder
20
- from fleetfinder import __title__, __version__
21
- from fleetfinder.app_settings import debug_enabled
22
- from fleetfinder.constants import PACKAGE_NAME
23
- from fleetfinder.helper.static_files import calculate_integrity_hash
24
-
25
- logger = LoggerAddTag(my_logger=get_extension_logger(__name__), prefix=__title__)
26
-
27
-
28
- @register.simple_tag
29
- def fleetfinder_static(relative_file_path: str, script_type: str = None) -> str | None:
30
- """
31
- Versioned static URL
32
-
33
- :param relative_file_path: The file path relative to the `{APP_NAME}/{PACKAGE_NAME}/static/{PACKAGE_NAME}` folder
34
- :type relative_file_path: str
35
- :param script_type: The script type
36
- :type script_type: str
37
- :return: Versioned static URL
38
- :rtype: str
39
- """
40
-
41
- logger.debug(f"Getting versioned static URL for: {relative_file_path}")
42
-
43
- file_type = os.path.splitext(relative_file_path)[1][1:]
44
-
45
- logger.debug(f"File extension: {file_type}")
46
-
47
- # Only support CSS and JS files
48
- if file_type not in ["css", "js"]:
49
- raise ValueError(f"Unsupported file type: {file_type}")
50
-
51
- static_file_path = os.path.join(PACKAGE_NAME, relative_file_path)
52
- static_url = static(static_file_path)
53
-
54
- # Integrity hash calculation only for non-debug mode
55
- sri_string = (
56
- f' integrity="{calculate_integrity_hash(relative_file_path)}" crossorigin="anonymous"'
57
- if not debug_enabled()
58
- else ""
59
- )
60
-
61
- # Versioned URL for CSS and JS files
62
- # Add version query parameter to break browser caches when changing the app version
63
- # Do not add version query parameter for libs as they are already versioned through their file path
64
- versioned_url = (
65
- static_url
66
- if relative_file_path.startswith("libs/")
67
- else static_url + "?v=" + __version__
68
- )
69
-
70
- return_value = None
71
-
72
- # Return the versioned URL with integrity hash for CSS
73
- if file_type == "css":
74
- return_value = mark_safe(
75
- f'<link rel="stylesheet" href="{versioned_url}"{sri_string}>'
76
- )
77
-
78
- # Return the versioned URL with integrity hash for JS files
79
- if file_type == "js":
80
- js_type = f' type="{script_type}"' if script_type else ""
81
-
82
- return_value = mark_safe(
83
- f'<script{js_type} src="{versioned_url}"{sri_string}></script>'
84
- )
85
-
86
- return return_value
87
-
88
-
89
- @register.filter
90
- def get_item(dictionary: dict | None, key: str) -> str | None:
91
- """
92
- Little helper: get a key from a dictionary
93
-
94
- :param dictionary:
95
- :param key:
96
- :return:
97
- """
98
-
99
- if dictionary is None:
100
- return None
101
-
102
- return dictionary.get(key, None)
@@ -1,154 +0,0 @@
1
- """
2
- Test the apps' template tags
3
- """
4
-
5
- # Django
6
- from django.template import Context, Template
7
- from django.test import TestCase, override_settings
8
-
9
- # AA Fleet Finder
10
- from fleetfinder import __version__
11
- from fleetfinder.constants import PACKAGE_NAME
12
- from fleetfinder.helper.static_files import calculate_integrity_hash
13
- from fleetfinder.templatetags.fleetfinder import get_item
14
-
15
-
16
- class TestVersionedStatic(TestCase):
17
- """
18
- Test the `fleetfinder_static` template tag
19
- """
20
-
21
- @override_settings(DEBUG=False)
22
- def test_versioned_static(self):
23
- """
24
- Test should return the versioned static
25
-
26
- :return:
27
- :rtype:
28
- """
29
-
30
- context = Context(dict_={"version": __version__})
31
- template_to_render = Template(
32
- template_string=(
33
- "{% load fleetfinder %}"
34
- "{% fleetfinder_static 'css/fleetfinder.min.css' %}"
35
- )
36
- )
37
-
38
- rendered_template = template_to_render.render(context=context)
39
-
40
- expected_static_css_src = (
41
- f'/static/{PACKAGE_NAME}/css/fleetfinder.min.css?v={context["version"]}'
42
- )
43
- expected_static_css_src_integrity = calculate_integrity_hash(
44
- "css/fleetfinder.min.css"
45
- )
46
-
47
- self.assertIn(member=expected_static_css_src, container=rendered_template)
48
- self.assertIn(
49
- member=expected_static_css_src_integrity, container=rendered_template
50
- )
51
-
52
- @override_settings(DEBUG=True)
53
- def test_versioned_static_with_debug_enabled(self) -> None:
54
- """
55
- Test versioned static template tag with DEBUG enabled
56
-
57
- :return:
58
- :rtype:
59
- """
60
-
61
- context = Context({"version": __version__})
62
- template_to_render = Template(
63
- template_string=(
64
- "{% load fleetfinder %}"
65
- "{% fleetfinder_static 'css/fleetfinder.min.css' %}"
66
- )
67
- )
68
-
69
- rendered_template = template_to_render.render(context=context)
70
-
71
- expected_static_css_src = (
72
- f'/static/{PACKAGE_NAME}/css/fleetfinder.min.css?v={context["version"]}'
73
- )
74
-
75
- self.assertIn(member=expected_static_css_src, container=rendered_template)
76
- self.assertNotIn(member="integrity=", container=rendered_template)
77
-
78
- @override_settings(DEBUG=False)
79
- def test_invalid_file_type(self) -> None:
80
- """
81
- Test should raise a ValueError for an invalid file type
82
-
83
- :return:
84
- :rtype:
85
- """
86
-
87
- context = Context({"version": __version__})
88
- template_to_render = Template(
89
- template_string=(
90
- "{% load fleetfinder %}"
91
- "{% fleetfinder_static 'invalid/invalid.txt' %}"
92
- )
93
- )
94
-
95
- with self.assertRaises(ValueError):
96
- template_to_render.render(context=context)
97
-
98
-
99
- class TestGetItem(TestCase):
100
- """
101
- Test the `get_item` template tag
102
- """
103
-
104
- def test_returns_value_for_existing_key(self):
105
- """
106
- Test should return the value for an existing key
107
-
108
- :return:
109
- :rtype:
110
- """
111
-
112
- dictionary = {"key1": "value1", "key2": "value2"}
113
- result = get_item(dictionary, "key1")
114
-
115
- self.assertEqual(result, "value1")
116
-
117
- def test_returns_none_for_non_existing_key(self):
118
- """
119
- Test should return None for a non-existing key
120
-
121
- :return:
122
- :rtype:
123
- """
124
-
125
- dictionary = {"key1": "value1", "key2": "value2"}
126
- result = get_item(dictionary, "key3")
127
-
128
- self.assertIsNone(result)
129
-
130
- def test_returns_none_for_empty_dictionary(self):
131
- """
132
- Test should return None for an empty dictionary
133
-
134
- :return:
135
- :rtype:
136
- """
137
-
138
- dictionary = {}
139
- result = get_item(dictionary, "key1")
140
-
141
- self.assertIsNone(result)
142
-
143
- def test_returns_none_for_none_dictionary(self):
144
- """
145
- Test should return None for a None dictionary
146
-
147
- :return:
148
- :rtype:
149
- """
150
-
151
- dictionary = None
152
- result = get_item(dictionary, "key1")
153
-
154
- self.assertIsNone(result)
File without changes
File without changes