Plain is headed towards 1.0! Subscribe for development updates →

 1from plain.admin.cards import Card, TrendCard
 2from plain.admin.views import (
 3    AdminModelDetailView,
 4    AdminModelListView,
 5    AdminViewset,
 6    register_viewset,
 7)
 8
 9from .models import Pageview
10
11
12class PageviewsTrendCard(TrendCard):
13    title = "Pageviews trend"
14    model = Pageview
15    datetime_field = "timestamp"
16    size = TrendCard.Sizes.FULL
17
18
19@register_viewset
20class PageviewAdmin(AdminViewset):
21    class ListView(AdminModelListView):
22        model = Pageview
23        nav_section = "Pageviews"
24        title = "Pageviews"
25        fields = ["user_id", "url", "timestamp", "session_key"]
26        search_fields = ["pk", "user_id", "url", "session_key"]
27        cards = [PageviewsTrendCard]
28
29    class DetailView(AdminModelDetailView):
30        model = Pageview
31
32
33class UserPageviewsCard(Card):
34    title = "Recent pageviews"
35    template_name = "pageviews/card.html"
36
37    def get_template_context(self):
38        context = super().get_template_context()
39
40        context["pageviews"] = Pageview.objects.filter(
41            user_id=self.view.object.pk
42        ).order_by("-timestamp")[:50]
43
44        return context