Plain is headed towards 1.0! Subscribe for development updates →

plain-redirection

 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