1# from plain.admin.cards import Card
2from plain.admin.views import (
3 AdminModelCreateView,
4 AdminModelDeleteView,
5 AdminModelDetailView,
6 AdminModelListView,
7 AdminModelUpdateView,
8 AdminViewset,
9 register_viewset,
10)
11from plain.models.forms import ModelForm
12
13from .models import NotFoundLog, Redirect, RedirectLog
14
15
16class RedirectForm(ModelForm):
17 class Meta:
18 model = Redirect
19 fields = [
20 "from_pattern",
21 "to_pattern",
22 "http_status",
23 "order",
24 "enabled",
25 "is_regex",
26 ]
27
28
29@register_viewset
30class RedirectAdmin(AdminViewset):
31 class ListView(AdminModelListView):
32 model = Redirect
33 nav_section = "Redirection"
34 title = "Redirects"
35 fields = ["from_pattern", "to_pattern", "http_status", "order", "enabled"]
36 search_fields = ["from_pattern", "to_pattern"]
37 allow_global_search = False
38
39 class DetailView(AdminModelDetailView):
40 model = Redirect
41
42 class CreateView(AdminModelCreateView):
43 model = Redirect
44 form_class = RedirectForm
45
46 class UpdateView(AdminModelUpdateView):
47 model = Redirect
48 form_class = RedirectForm
49
50 class DeleteView(AdminModelDeleteView):
51 model = Redirect
52
53
54@register_viewset
55class RedirectLogAdmin(AdminViewset):
56 class ListView(AdminModelListView):
57 model = RedirectLog
58 nav_section = "Redirection"
59 title = "Redirect logs"
60 fields = [
61 "created_at",
62 "from_url",
63 "to_url",
64 "http_status",
65 "user_agent",
66 "ip_address",
67 "referer",
68 ]
69 search_fields = ["from_url", "to_url", "user_agent", "ip_address", "referer"]
70 allow_global_search = False
71
72 class DetailView(AdminModelDetailView):
73 model = RedirectLog
74
75
76@register_viewset
77class NotFoundLogAdmin(AdminViewset):
78 class ListView(AdminModelListView):
79 model = NotFoundLog
80 nav_section = "Redirection"
81 title = "404 logs"
82 fields = ["created_at", "url", "user_agent", "ip_address", "referer"]
83 search_fields = ["url", "user_agent", "ip_address", "referer"]
84 allow_global_search = False
85
86 class DetailView(AdminModelDetailView):
87 model = NotFoundLog