Coverage for quality/admin.py: 89%
47 statements
« prev ^ index » next coverage.py v7.6.12, created at 2025-03-26 15:42 +0000
« prev ^ index » next coverage.py v7.6.12, created at 2025-03-26 15:42 +0000
1from django.conf import settings
2from django.contrib import admin
3from django.db.models import QuerySet
4from django.http.request import HttpRequest
6from .models import Channel, Check, Network, Operator, Station
9class WaveQCModelAdmin(admin.ModelAdmin): # type: ignore[type-arg]
10 """
11 Class used to allow changes in developpment and forbid it on production
12 """
14 def has_add_permission(
15 self,
16 _request: HttpRequest,
17 _obj: object | None = None,
18 ) -> bool:
19 return settings.DEBUG
21 def has_change_permission(
22 self,
23 _request: HttpRequest,
24 _obj: object | None = None,
25 ) -> bool:
26 return settings.DEBUG
28 def has_delete_permission(
29 self,
30 _request: HttpRequest,
31 _obj: object | None = None,
32 ) -> bool:
33 return settings.DEBUG
36@admin.register(Network)
37class NetworkAdmin(WaveQCModelAdmin):
38 list_display = ("code", "description")
41@admin.register(Station)
42class StationAdmin(WaveQCModelAdmin):
43 list_display = ("code", "network", "start_date", "end_date")
44 list_filter = ("network__code", "triggered", "start_date", "end_date")
45 ordering = ("network__code", "code")
46 search_fields = ("code",)
48 def get_queryset(self, request: HttpRequest) -> QuerySet[Station]:
49 return super().get_queryset(request).select_related("network")
52@admin.register(Channel)
53class ChannelAdmin(WaveQCModelAdmin):
54 autocomplete_fields = ("station",)
56 list_display = ("__str__", "end_date")
57 list_filter = ("station__network__code", "end_date")
58 ordering = ("station__network__code", "station__code", "location", "code")
59 search_fields = ("location", "code", "station__code")
61 def get_queryset(self, request: HttpRequest) -> QuerySet[Channel]:
62 return super().get_queryset(request).select_related("station__network")
65@admin.register(Check)
66class CheckAdmin(WaveQCModelAdmin):
67 autocomplete_fields = ("channel",)
69 date_hierarchy = "date"
70 list_display = ("channel", "date")
71 list_filter = ("channel__station__network__code", "result", "retries")
72 ordering = (
73 "channel__station__network__code",
74 "channel__station__code",
75 "channel__location",
76 "channel__code",
77 )
78 search_fields = (
79 "channel__station__network__code",
80 "channel__station__code",
81 "channel__location",
82 "channel__code",
83 )
86@admin.register(Operator)
87class OperatorAdmin(WaveQCModelAdmin):
88 autocomplete_fields = ("stations",)
90 list_display = ("agency", "website")
91 list_filter = ("stations__network",)
92 ordering = ("agency",)
93 search_fields = ("agency", "stations__code")