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