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 nav_icon = "arrow-right-circle"
35 title = "Redirects"
36 fields = ["from_pattern", "to_pattern", "http_status", "order", "enabled"]
37 search_fields = ["from_pattern", "to_pattern"]
38 allow_global_search = False
39
40 class DetailView(AdminModelDetailView):
41 model = Redirect
42
43 class CreateView(AdminModelCreateView):
44 model = Redirect
45 form_class = RedirectForm
46
47 class UpdateView(AdminModelUpdateView):
48 model = Redirect
49 form_class = RedirectForm
50
51 class DeleteView(AdminModelDeleteView):
52 model = Redirect
53
54
55@register_viewset
56class RedirectLogAdmin(AdminViewset):
57 class ListView(AdminModelListView):
58 model = RedirectLog
59 nav_section = "Redirection"
60 nav_icon = "arrow-right-circle"
61 title = "Redirect logs"
62 fields = [
63 "created_at",
64 "from_url",
65 "to_url",
66 "http_status",
67 "user_agent",
68 "ip_address",
69 "referrer",
70 ]
71 search_fields = ["from_url", "to_url", "user_agent", "ip_address", "referrer"]
72 allow_global_search = False
73
74 class DetailView(AdminModelDetailView):
75 model = RedirectLog
76
77
78@register_viewset
79class NotFoundLogAdmin(AdminViewset):
80 class ListView(AdminModelListView):
81 model = NotFoundLog
82 nav_section = "Redirection"
83 nav_icon = "arrow-right-circle"
84 title = "404 logs"
85 fields = ["created_at", "url", "user_agent", "ip_address", "referrer"]
86 search_fields = ["url", "user_agent", "ip_address", "referrer"]
87 allow_global_search = False
88
89 class DetailView(AdminModelDetailView):
90 model = NotFoundLog