aa-fleetfinder 2.6.1__py3-none-any.whl → 2.7.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (46) hide show
  1. {aa_fleetfinder-2.6.1.dist-info → aa_fleetfinder-2.7.1.dist-info}/METADATA +1 -1
  2. aa_fleetfinder-2.7.1.dist-info/RECORD +86 -0
  3. fleetfinder/__init__.py +1 -1
  4. fleetfinder/locale/cs_CZ/LC_MESSAGES/django.po +101 -27
  5. fleetfinder/locale/de/LC_MESSAGES/django.mo +0 -0
  6. fleetfinder/locale/de/LC_MESSAGES/django.po +106 -29
  7. fleetfinder/locale/django.pot +103 -28
  8. fleetfinder/locale/es/LC_MESSAGES/django.po +112 -27
  9. fleetfinder/locale/fr_FR/LC_MESSAGES/django.po +105 -27
  10. fleetfinder/locale/it_IT/LC_MESSAGES/django.po +98 -27
  11. fleetfinder/locale/ja/LC_MESSAGES/django.po +102 -27
  12. fleetfinder/locale/ko_KR/LC_MESSAGES/django.po +112 -27
  13. fleetfinder/locale/nl_NL/LC_MESSAGES/django.po +98 -27
  14. fleetfinder/locale/pl_PL/LC_MESSAGES/django.po +100 -27
  15. fleetfinder/locale/ru/LC_MESSAGES/django.mo +0 -0
  16. fleetfinder/locale/ru/LC_MESSAGES/django.po +116 -31
  17. fleetfinder/locale/sk/LC_MESSAGES/django.po +98 -27
  18. fleetfinder/locale/uk/LC_MESSAGES/django.mo +0 -0
  19. fleetfinder/locale/uk/LC_MESSAGES/django.po +116 -31
  20. fleetfinder/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  21. fleetfinder/locale/zh_Hans/LC_MESSAGES/django.po +116 -31
  22. fleetfinder/static/fleetfinder/css/fleetfinder.css +21 -0
  23. fleetfinder/static/fleetfinder/css/fleetfinder.min.css +1 -1
  24. fleetfinder/static/fleetfinder/css/fleetfinder.min.css.map +1 -1
  25. fleetfinder/static/fleetfinder/js/fleetfinder-dashboard.js +86 -0
  26. fleetfinder/static/fleetfinder/js/fleetfinder-dashboard.min.js +2 -0
  27. fleetfinder/static/fleetfinder/js/fleetfinder-dashboard.min.js.map +1 -0
  28. fleetfinder/static/fleetfinder/js/fleetfinder-fleet-details.js +154 -0
  29. fleetfinder/static/fleetfinder/js/fleetfinder-fleet-details.min.js +2 -0
  30. fleetfinder/static/fleetfinder/js/fleetfinder-fleet-details.min.js.map +1 -0
  31. fleetfinder/static/fleetfinder/js/fleetfinder.js +23 -0
  32. fleetfinder/static/fleetfinder/js/fleetfinder.min.js +2 -0
  33. fleetfinder/static/fleetfinder/js/fleetfinder.min.js.map +1 -0
  34. fleetfinder/tasks.py +32 -8
  35. fleetfinder/templates/fleetfinder/base.html +11 -0
  36. fleetfinder/templates/fleetfinder/bundles/js/fleetfinder-js.html +9 -0
  37. fleetfinder/templates/fleetfinder/dashboard.html +9 -109
  38. fleetfinder/templates/fleetfinder/fleet-details.html +28 -65
  39. fleetfinder/templates/fleetfinder/join-fleet.html +11 -1
  40. fleetfinder/templates/fleetfinder/modals/kick-fleet-member.html +46 -0
  41. fleetfinder/tests/test_views.py +130 -10
  42. fleetfinder/urls.py +5 -0
  43. fleetfinder/views.py +173 -45
  44. aa_fleetfinder-2.6.1.dist-info/RECORD +0 -75
  45. {aa_fleetfinder-2.6.1.dist-info → aa_fleetfinder-2.7.1.dist-info}/WHEEL +0 -0
  46. {aa_fleetfinder-2.6.1.dist-info → aa_fleetfinder-2.7.1.dist-info}/licenses/LICENSE +0 -0
fleetfinder/views.py CHANGED
@@ -2,17 +2,22 @@
2
2
  Views
3
3
  """
4
4
 
5
+ # Standard Library
6
+ import json
7
+
5
8
  # Third Party
6
9
  from bravado.exception import HTTPNotFound
7
10
 
8
11
  # Django
9
12
  from django.contrib import messages
10
13
  from django.contrib.auth.decorators import login_required, permission_required
14
+ from django.core.handlers.wsgi import WSGIRequest
11
15
  from django.db.models import Q
12
16
  from django.http import JsonResponse
13
17
  from django.shortcuts import redirect, render
14
18
  from django.urls import reverse
15
19
  from django.utils import timezone
20
+ from django.utils.functional import Promise
16
21
  from django.utils.safestring import mark_safe
17
22
  from django.utils.translation import gettext_lazy as _
18
23
 
@@ -101,6 +106,54 @@ def ajax_dashboard(request) -> JsonResponse: # pylint: disable=too-many-locals
101
106
  :return:
102
107
  """
103
108
 
109
+ def _create_button_style_link(
110
+ url: str, fa_icon_class: str, btn_title: str | Promise, btn_modifier_class: str
111
+ ) -> str:
112
+ """
113
+ Helper function to create a button HTML string
114
+ This function generates an HTML anchor tag styled as a button with an icon.
115
+
116
+ :param url: The URL the button should link to
117
+ :type url: str
118
+ :param fa_icon_class: The Font Awesome class for the icon to be displayed
119
+ :type fa_icon_class: str
120
+ :param btn_title: The title attribute for the button, typically a translation string
121
+ :type btn_title: str | Promise
122
+ :param btn_modifier_class: The Bootstrap modifier class for the button styling
123
+ :type btn_modifier_class: str
124
+ :return: An HTML string representing the button
125
+ :rtype: str
126
+ """
127
+
128
+ return (
129
+ f'<a href="{url}" class="btn btn-sm {btn_modifier_class} ms-1" '
130
+ f'data-bs-tooltip="aa-fleetfinder" title="{btn_title}">'
131
+ f'<i class="{fa_icon_class}"></i></a>'
132
+ )
133
+
134
+ def _get_fleet_commander_information(fleet: Fleet) -> tuple[str, str]:
135
+ """
136
+ Helper function to get the fleet commander's HTML representation
137
+ This function retrieves the fleet commander's name and portrait URL,
138
+ and returns an HTML string with the portrait image and name.
139
+
140
+ :param fleet: The Fleet object containing the fleet commander's information
141
+ :type fleet: Fleet
142
+ :return: A tuple containing the HTML string for the fleet commander and the name for sorting
143
+ :rtype: tuple[str, str]
144
+ """
145
+
146
+ commander_name = fleet.fleet_commander.character_name
147
+ portrait_url = character_portrait_url(
148
+ character_id=fleet.fleet_commander.character_id, size=32
149
+ )
150
+ portrait_img = (
151
+ '<img class="rounded eve-character-portrait" '
152
+ f'src="{portrait_url}" alt="{commander_name}" loading="lazy">'
153
+ )
154
+
155
+ return portrait_img + commander_name, commander_name
156
+
104
157
  data = []
105
158
  groups = request.user.groups.all()
106
159
  user_characters = get_all_characters_from_user(user=request.user)
@@ -114,47 +167,39 @@ def ajax_dashboard(request) -> JsonResponse: # pylint: disable=too-many-locals
114
167
  .order_by("name")
115
168
  )
116
169
 
117
- for fleet in fleets:
118
- fleet_commander_name = fleet.fleet_commander.character_name
119
- fleet_commander_portrait_url = character_portrait_url(
120
- character_id=fleet.fleet_commander.character_id, size=32
121
- )
122
- fleet_commander_portrait = (
123
- '<img class="rounded eve-character-portrait" '
124
- f'src="{fleet_commander_portrait_url}" '
125
- f'alt="{fleet_commander_name}" loading="lazy">'
126
- )
127
- fleet_commander_html = fleet_commander_portrait + fleet_commander_name
170
+ can_manage_fleets = request.user.has_perm("fleetfinder.manage_fleets")
128
171
 
129
- button_join_url = reverse(
130
- viewname="fleetfinder:join_fleet", args=[fleet.fleet_id]
131
- )
132
- button_join_text = _("Join fleet")
133
- button_join = (
134
- f'<a href="{button_join_url}" '
135
- f'class="btn btn-sm btn-primary">{button_join_text}</a>'
172
+ for fleet in fleets:
173
+ fleet_commander_html, fleet_commander_name = _get_fleet_commander_information(
174
+ fleet
136
175
  )
137
176
 
138
- button_details = ""
139
- button_edit = ""
140
-
141
- if request.user.has_perm(perm="fleetfinder.manage_fleets"):
142
- button_details_url = reverse(
143
- viewname="fleetfinder:fleet_details", args=[fleet.fleet_id]
144
- )
145
- button_details_text = _("View fleet details")
146
- button_details = (
147
- f'<a href="{button_details_url}" '
148
- f'class="btn btn-sm btn-primary">{button_details_text}</a>'
149
- )
150
-
151
- button_edit_url = reverse(
152
- viewname="fleetfinder:edit_fleet", args=[fleet.fleet_id]
177
+ # Create buttons
178
+ buttons = [
179
+ _create_button_style_link(
180
+ reverse("fleetfinder:join_fleet", args=[fleet.fleet_id]),
181
+ "fa-solid fa-right-to-bracket",
182
+ _("Join fleet"),
183
+ "btn-success",
153
184
  )
154
- button_edit_text = _("Edit fleet advert")
155
- button_edit = (
156
- f'<a href="{button_edit_url}" '
157
- f'class="btn btn-sm btn-primary">{button_edit_text}</a>'
185
+ ]
186
+
187
+ if can_manage_fleets:
188
+ buttons.extend(
189
+ [
190
+ _create_button_style_link(
191
+ reverse("fleetfinder:fleet_details", args=[fleet.fleet_id]),
192
+ "fa-solid fa-eye",
193
+ _("View fleet details"),
194
+ "btn-info",
195
+ ),
196
+ _create_button_style_link(
197
+ reverse("fleetfinder:edit_fleet", args=[fleet.fleet_id]),
198
+ "fa-solid fa-pen-to-square",
199
+ _("Edit fleet advert"),
200
+ "btn-warning",
201
+ ),
202
+ ]
158
203
  )
159
204
 
160
205
  data.append(
@@ -165,9 +210,7 @@ def ajax_dashboard(request) -> JsonResponse: # pylint: disable=too-many-locals
165
210
  },
166
211
  "fleet_name": fleet.name,
167
212
  "created_at": fleet.created_at,
168
- "join": button_join,
169
- "details": button_details,
170
- "edit": button_edit,
213
+ "actions": "".join(buttons),
171
214
  }
172
215
  )
173
216
 
@@ -419,9 +462,25 @@ def fleet_details(request, fleet_id):
419
462
  :return:
420
463
  """
421
464
 
422
- context = {"fleet_id": fleet_id}
465
+ try:
466
+ fleet = Fleet.objects.get(fleet_id=fleet_id)
467
+ except Fleet.DoesNotExist:
468
+ logger.debug(f"Fleet with ID {fleet_id} does not exist.")
423
469
 
424
- logger.info(msg=f"Fleet {fleet_id} details view called by {request.user}")
470
+ messages.error(
471
+ request,
472
+ mark_safe(
473
+ _(
474
+ "<h4>Error!</h4><p>Fleet does not exist or is no longer available.</p>"
475
+ )
476
+ ),
477
+ )
478
+
479
+ return redirect("fleetfinder:dashboard")
480
+
481
+ context = {"fleet": fleet}
482
+
483
+ logger.info(msg=f"Fleet {fleet.fleet_id} details view called by {request.user}")
425
484
 
426
485
  return render(
427
486
  request=request,
@@ -433,8 +492,7 @@ def fleet_details(request, fleet_id):
433
492
  @login_required()
434
493
  @permission_required(perm="fleetfinder.manage_fleets")
435
494
  def ajax_fleet_details(
436
- request, # pylint: disable=unused-argument
437
- fleet_id,
495
+ request, fleet_id # pylint: disable=unused-argument
438
496
  ) -> JsonResponse:
439
497
  """
440
498
  Ajax :: Fleet Details
@@ -443,7 +501,20 @@ def ajax_fleet_details(
443
501
  :param fleet_id:
444
502
  """
445
503
 
446
- fleet = get_fleet_composition(fleet_id)
504
+ try:
505
+ fleet = get_fleet_composition(fleet_id)
506
+ except Fleet.DoesNotExist:
507
+ logger.debug(f"Fleet with ID {fleet_id} does not exist.")
508
+
509
+ return JsonResponse(
510
+ data={"error": _(f"Fleet with ID {fleet_id} does not exist.")}, safe=False
511
+ )
512
+ except RuntimeError as ex:
513
+ logger.debug(f"Error retrieving fleet composition: {ex}", exc_info=True)
514
+
515
+ return JsonResponse(
516
+ data={"error": _(f"Error retrieving fleet composition: {ex}")}, safe=False
517
+ )
447
518
 
448
519
  data = {
449
520
  "fleet_member": list(fleet.fleet),
@@ -454,3 +525,60 @@ def ajax_fleet_details(
454
525
  }
455
526
 
456
527
  return JsonResponse(data=data, safe=False)
528
+
529
+
530
+ @login_required()
531
+ @permission_required(perm="fleetfinder.manage_fleets")
532
+ def ajax_fleet_kick_member(request: WSGIRequest, fleet_id: int) -> JsonResponse:
533
+ """
534
+ Ajax :: Kick member from fleet
535
+
536
+ :param request: WSGIRequest object containing the request data
537
+ :type request: WSGIRequest
538
+ :param fleet_id: The ID of the fleet from which to kick a member
539
+ :type fleet_id: int
540
+ :return: JsonResponse indicating success or failure of the operation
541
+ :rtype: JsonResponse
542
+ """
543
+
544
+ if request.method != "POST":
545
+ return JsonResponse(
546
+ data={"success": False, "error": _("Method not allowed")}, status=405
547
+ )
548
+
549
+ try:
550
+ fleet = Fleet.objects.get(fleet_id=fleet_id)
551
+ data = json.loads(request.body)
552
+ member_id = data.get("memberId")
553
+
554
+ if not member_id:
555
+ return JsonResponse(
556
+ data={"success": False, "error": _("Member ID required")}, status=400
557
+ )
558
+
559
+ logger.debug(f"Request data for kicking member: {data}")
560
+
561
+ token = Token.get_token(
562
+ character_id=fleet.fleet_commander.character_id,
563
+ scopes=["esi-fleets.write_fleet.v1"],
564
+ )
565
+
566
+ esi.client.Fleets.delete_fleets_fleet_id_members_member_id(
567
+ fleet_id=fleet_id,
568
+ member_id=member_id,
569
+ token=token.valid_access_token(),
570
+ ).result()
571
+
572
+ return JsonResponse(data={"success": True}, status=200)
573
+ except Fleet.DoesNotExist:
574
+ return JsonResponse(
575
+ data={"success": False, "error": _("Fleet not found")}, status=404
576
+ )
577
+ except (json.JSONDecodeError, ValueError):
578
+ return JsonResponse(
579
+ data={"success": False, "error": _("Invalid request data")}, status=400
580
+ )
581
+ except HTTPNotFound:
582
+ return JsonResponse(
583
+ data={"success": False, "error": _("Member not found in fleet")}, status=404
584
+ )
@@ -1,75 +0,0 @@
1
- fleetfinder/__init__.py,sha256=JOGpcCpLD-GH6uOgcCzYiaay2kV7Ij5QgJW0CjIe_CI,415
2
- fleetfinder/app_settings.py,sha256=XE5oZFg2Vhn5OYQFehoOwjgVgKAvXcyj5NGmrbr3bk8,261
3
- fleetfinder/apps.py,sha256=5t6R6HS_2cK3oCtTomvOM0dagt4sQkbnIWBhxT8dHrw,448
4
- fleetfinder/auth_hooks.py,sha256=_oHqIEfTFDB1lsVAOrEGCc6aLiLpRtjcPw7CdLNSdKw,1234
5
- fleetfinder/models.py,sha256=MEqsa-gRzFlCoU5awPwlLUzJ_2A2sNo9cPtfT-hVCNU,2805
6
- fleetfinder/providers.py,sha256=Je9FZvALV1ARn_34yllhztl5nG3tT7y1ri7utFHwO_o,298
7
- fleetfinder/tasks.py,sha256=iVPqv_LLHVyZ_th7CGgt9K4HqWLiDJ7VbZwTP4hdtG0,9915
8
- fleetfinder/urls.py,sha256=oL6zOnvQaGXFp-mOhsL9C_jU16YSPMAXUBM8s2_m4_U,1128
9
- fleetfinder/views.py,sha256=PdzaKqYB-zFtEHWrxxre9cvgEtkU3O9UQsK6cqpBjfo,13247
10
- fleetfinder/locale/django.pot,sha256=r2Ongkp6aH3AGxGtwBdwhtco7FwpKN_Css5-NQmbRZI,6027
11
- fleetfinder/locale/cs_CZ/LC_MESSAGES/django.mo,sha256=5R9bbNXwdd02SL7SFFIErS-ytrzIyCYPf0VZOtg9KT8,954
12
- fleetfinder/locale/cs_CZ/LC_MESSAGES/django.po,sha256=ZcCMF7Wg79KKAyHl3TQZ-1Xfw1K_Bo1FoiGdSyxImgc,6407
13
- fleetfinder/locale/de/LC_MESSAGES/django.mo,sha256=UVkUJUU9Pzh1WATNNE5RerVTqoQ4zM5JXgMJu7kG2B4,4328
14
- fleetfinder/locale/de/LC_MESSAGES/django.po,sha256=ofWY4mLnXdGIWEYAT587LNoRFRekX1GJ6cbGcU8qpbU,7748
15
- fleetfinder/locale/es/LC_MESSAGES/django.mo,sha256=mcwRf6XMLVJDJ5wAkCOtwV7rqf_BkgZqBUY6p026kaI,3648
16
- fleetfinder/locale/es/LC_MESSAGES/django.po,sha256=tvyjlGxlw3E0ClfvGtz8uBUnCYfYtJnlNjaL0nYlDXE,7819
17
- fleetfinder/locale/fr_FR/LC_MESSAGES/django.mo,sha256=YRnYDqb5xhNh94JmtVjqu2Ge6w0RifUrfYFfj0flgbE,2543
18
- fleetfinder/locale/fr_FR/LC_MESSAGES/django.po,sha256=nD8ZsdA5s2AngZalECTnuSPY6JFyw8QUogHqcDd0IHc,7205
19
- fleetfinder/locale/it_IT/LC_MESSAGES/django.mo,sha256=T8RDYnDQ22o4_xxwcmq3znMN5QKlZbty-mWB7dxdEbI,588
20
- fleetfinder/locale/it_IT/LC_MESSAGES/django.po,sha256=3T0Gx35bxN04bm_zJFmAN4Cum3tIHxwGEMBefjxahms,6231
21
- fleetfinder/locale/ja/LC_MESSAGES/django.mo,sha256=5mlXpXBHCUM4QNz2hzagZSgJeR-QJIzEEBPxXzGN64I,1579
22
- fleetfinder/locale/ja/LC_MESSAGES/django.po,sha256=tMpDfTgXfVjA1Zlm_afLaBlKdDQ-YrLewqt5OS1rp5E,6695
23
- fleetfinder/locale/ko_KR/LC_MESSAGES/django.mo,sha256=9cfJWD33X_4WYSaFyGZIMzBtUgbmpU0-rkU5vdVRiTI,3272
24
- fleetfinder/locale/ko_KR/LC_MESSAGES/django.po,sha256=O9pQ2nG5Z7-RlcqBXmtgw8TedLt4KCE4JxROMDfb3c4,8144
25
- fleetfinder/locale/nl_NL/LC_MESSAGES/django.mo,sha256=hY0OE4OeTR2OJEImNcsL8tWjBqe0rJYToAlRXZ44ngA,480
26
- fleetfinder/locale/nl_NL/LC_MESSAGES/django.po,sha256=AneS1YGgS8ZmwAreBqpGDlS3b8cJYCfchfG3sarvRxA,6149
27
- fleetfinder/locale/pl_PL/LC_MESSAGES/django.mo,sha256=Tn664mvAzrylWiO5ferY3XeQuZTRuND77MPmgAZSvZs,1008
28
- fleetfinder/locale/pl_PL/LC_MESSAGES/django.po,sha256=kR2ZzURcaOYNZ_ZMO6i1G3mu3nVjlsCpk2qR3PyvB7A,6439
29
- fleetfinder/locale/ru/LC_MESSAGES/django.mo,sha256=nphsjOteZ0-rwwH52Jovk4Jy1ouz-9Wo-7WC6_Bmc_k,4716
30
- fleetfinder/locale/ru/LC_MESSAGES/django.po,sha256=jIJFmtU-8ZvF5rDEZLYeR_zOf6YhtnbhjJfYvCgIl4E,8765
31
- fleetfinder/locale/sk/LC_MESSAGES/django.mo,sha256=ydYhRqhAuhtbbNwWz_TkLnphHfGgKDcKugeyLxmpZWk,559
32
- fleetfinder/locale/sk/LC_MESSAGES/django.po,sha256=yQ1aIRfm6J8i4adgeYUQvx7gMO56E0G8vYITh3B_CLQ,6224
33
- fleetfinder/locale/uk/LC_MESSAGES/django.mo,sha256=NfWLKGzF2U1WHI_R5OjskcPta-uVhTE6sDwCyi3pSyc,4697
34
- fleetfinder/locale/uk/LC_MESSAGES/django.po,sha256=BV0LM1BrzaPq5FDhdnAs2BaeR2KAInGSaK0yLH4ZcBI,8844
35
- fleetfinder/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=3tiyQVoDtsbjyYPetn2m9kG5lBB0c_7HyZhzhENsbWs,3624
36
- fleetfinder/locale/zh_Hans/LC_MESSAGES/django.po,sha256=mr-3VOcDuBfDbZU1QPgqA6DXzcWQrI9DU9b2YF0PGCU,7603
37
- fleetfinder/migrations/0001_initial.py,sha256=4Jsjh77PXS87OHBHam8KOFSTaRvlS-qpPmD5vNnVagI,2445
38
- fleetfinder/migrations/0002_esi_error_handling_and_verbose_names.py,sha256=CqOqsJDz-GFj3E6DwShKf0fUIgEKhd4NMJIfu21eEJ0,3229
39
- fleetfinder/migrations/0003_alter_fleet_fleet_commander_alter_fleet_groups_and_more.py,sha256=RbjYRrPVTq-adUQPbXpXVRAT2VmOW0wEdacWhxlggX4,1606
40
- fleetfinder/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
- fleetfinder/static/fleetfinder/css/fleetfinder.css,sha256=vEH1tqeXdaxBXdcIoumkkeKO0yiDx4QCV1b6ABTIq9s,220
42
- fleetfinder/static/fleetfinder/css/fleetfinder.min.css,sha256=LCv69fVoF30tzjHWh-5n6zjzxntbLr72pGZBMvfef9Y,214
43
- fleetfinder/static/fleetfinder/css/fleetfinder.min.css.map,sha256=aJugfXCEpodHUPdC4pC1kqgHjpowmYKZ-S2eEuUpBE4,391
44
- fleetfinder/static/fleetfinder/libs/slim-select/2.6.0/css/slimselect.css,sha256=zTRZNeH78b45F2ziMIyO0CTeDBkD6bOoyDLJpl3RvIg,11846
45
- fleetfinder/static/fleetfinder/libs/slim-select/2.6.0/css/slimselect.min.css,sha256=GYCm-lR2rkNgRBBlPnK6B6q5DAve2IGBCCcJg-7Zpy0,9397
46
- fleetfinder/static/fleetfinder/libs/slim-select/2.6.0/css/slimselect.min.css.map,sha256=_6vjeCQxnhz-ZLaVJ3-0a3x7xY2N82z45xLZyRPuoUw,14992
47
- fleetfinder/static/fleetfinder/libs/slim-select/2.6.0/js/slimselect.min.js,sha256=SbN31KIE-T0-x8Th6Ui6QWM7c8lsGb3_q-RzUd9Ga9I,36199
48
- fleetfinder/templates/fleetfinder/base.html,sha256=jtUSpk3VABhqp0xJKdDKKgpHa4Iwl1T9nQFenV7yDds,834
49
- fleetfinder/templates/fleetfinder/create-fleet.html,sha256=zkVw_qLFw5BvrlrayUKmZB19v5PkGVqVt7rVEl-rKzc,1196
50
- fleetfinder/templates/fleetfinder/dashboard.html,sha256=-65xAKhKpJNnBSsfBr7QuHfzNxuwqwgltKvxV5s2X8Y,5753
51
- fleetfinder/templates/fleetfinder/edit-fleet.html,sha256=XahECF3ZJKTiAr8oNp7bqbIHjACpfxi1_mIhXP1XIvY,1206
52
- fleetfinder/templates/fleetfinder/fleet-details.html,sha256=-jPoaInabNpCQiBPFoTBCUtS38drBc09-F12_ugqb14,4795
53
- fleetfinder/templates/fleetfinder/join-fleet.html,sha256=mn_B8o5MUlG4UYvFajoGaGmtTbQDJiYIZa-LsSmer50,2000
54
- fleetfinder/templates/fleetfinder/bundles/css/fleetfinder-css.html,sha256=qwygOlxlL_346BHPBNU8KZhNFdJKmOXx81zSsDIKbjk,71
55
- fleetfinder/templates/fleetfinder/bundles/css/slim-select-css.html,sha256=i_aZCBfN7XVHEcXycjQDvmt1kVYwDw_5QobTW1jYcwA,93
56
- fleetfinder/templates/fleetfinder/bundles/js/slim-select-js.html,sha256=1IAeWgMkHrbVbhwSBOekt7NfFc8y4LvKh2OqXQmu940,91
57
- fleetfinder/templates/fleetfinder/partials/body/form-fleet-details.html,sha256=o5HUU2YvcgDE8OTz1xU_hIRPeU3o23vGMog7RW-6Fd4,2183
58
- fleetfinder/templates/fleetfinder/partials/footer/app-translation-footer.html,sha256=nDZPOnsQLBN9meAhxnhd0ynUQIVi3YPzhi47n89zcIg,422
59
- fleetfinder/templates/fleetfinder/partials/header/header-nav-left.html,sha256=l9GUryGNYZjfej_SKa_wg2aQZE5ybPBFz21dgGixcwk,287
60
- fleetfinder/templates/fleetfinder/partials/header/header-nav-right.html,sha256=o8njJMpjCG0W9O_fP-NNOM1Mi1gUl7fARV1XTXrJXCI,575
61
- fleetfinder/templatetags/__init__.py,sha256=sP2D1ovt2gGAPLcGQkByRgXYhvUJ6C52mZMlLIALQ8s,37
62
- fleetfinder/templatetags/fleetfinder.py,sha256=I_pLRgCPS6MYdzvsLZL0quNTor_BNz_2125DnpvqbFE,717
63
- fleetfinder/tests/__init__.py,sha256=NLuMBNDHYOXDmPgpyG-g_kDaATVQWv1iC-dJ8BA1kZc,29
64
- fleetfinder/tests/test_access.py,sha256=rQAfeEre2CmCszFTLV_53HK7m5Odq7ZqACJ3kcedgjk,1691
65
- fleetfinder/tests/test_auth_hooks.py,sha256=XEB0LJmxxJCDlYhxKzcRiEHYrn1k_NkShrDGV_bcweg,2174
66
- fleetfinder/tests/test_settings.py,sha256=CuarOzsrkoMx7dmqolsnhnuhis7N10GaOULo6KYIl7k,710
67
- fleetfinder/tests/test_tasks.py,sha256=b8f0tJ5pouhKdHXoyK4uPCGmqHVvsJOyvrkiJE6cznc,3986
68
- fleetfinder/tests/test_templatetags.py,sha256=lIe1X0TCuFwWcgsqZw4VGQLgqMsqEjNbPwqhtD8c4Qk,1414
69
- fleetfinder/tests/test_user_agent.py,sha256=sqKr_2IXoqULgqmFqoNV8fUR2Xv9QkA7On0Ae0FRuM8,1003
70
- fleetfinder/tests/test_views.py,sha256=LMDJCZErBSUM_CItbi0GJ8psQIINfySAGTElVoNPwkg,14165
71
- fleetfinder/tests/utils.py,sha256=ynwH67jb14UFi6hpLAXe_FcYdQcjET_sxuUylWPNpnk,1451
72
- aa_fleetfinder-2.6.1.dist-info/METADATA,sha256=RTql0Ev7xtC4XEbgSw-YDwEYNRI-YTZOhfIhvrqqkgw,48096
73
- aa_fleetfinder-2.6.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
74
- aa_fleetfinder-2.6.1.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
75
- aa_fleetfinder-2.6.1.dist-info/RECORD,,