Coverage for quality/admin.py: 89%

47 statements  

« 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 

5 

6from .models import Channel, Check, Network, Operator, Station 

7 

8 

9class WaveQCModelAdmin(admin.ModelAdmin): # type: ignore[type-arg] 

10 """ 

11 Class used to allow changes in developpment and forbid it on production 

12 """ 

13 

14 def has_add_permission( 

15 self, 

16 _request: HttpRequest, 

17 _obj: object | None = None, 

18 ) -> bool: 

19 return settings.DEBUG 

20 

21 def has_change_permission( 

22 self, 

23 _request: HttpRequest, 

24 _obj: object | None = None, 

25 ) -> bool: 

26 return settings.DEBUG 

27 

28 def has_delete_permission( 

29 self, 

30 _request: HttpRequest, 

31 _obj: object | None = None, 

32 ) -> bool: 

33 return settings.DEBUG 

34 

35 

36@admin.register(Network) 

37class NetworkAdmin(WaveQCModelAdmin): 

38 list_display = ("code", "description") 

39 

40 

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",) 

47 

48 def get_queryset(self, request: HttpRequest) -> QuerySet[Station]: 

49 return super().get_queryset(request).select_related("network") 

50 

51 

52@admin.register(Channel) 

53class ChannelAdmin(WaveQCModelAdmin): 

54 autocomplete_fields = ("station",) 

55 

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") 

60 

61 def get_queryset(self, request: HttpRequest) -> QuerySet[Channel]: 

62 return super().get_queryset(request).select_related("station__network") 

63 

64 

65@admin.register(Check) 

66class CheckAdmin(WaveQCModelAdmin): 

67 autocomplete_fields = ("channel",) 

68 

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 ) 

84 

85 

86@admin.register(Operator) 

87class OperatorAdmin(WaveQCModelAdmin): 

88 autocomplete_fields = ("stations",) 

89 

90 list_display = ("agency", "website") 

91 list_filter = ("stations__network",) 

92 ordering = ("agency",) 

93 search_fields = ("agency", "stations__code")