Plain is headed towards 1.0! Subscribe for development updates →

 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