1from plain.chores import register_chore
2from plain.runtime import settings
3from plain.utils import timezone
4
5from .models import Pageview
6
7
8@register_chore("pageviews")
9def clear_old_pageviews():
10 """
11 Delete old anonymous and authenticated pageviews.
12 """
13
14 cutoff = timezone.now() - settings.PAGEVIEWS_ANONYMOUS_RETENTION_TIMEDELTA
15 result = Pageview.objects.filter(timestamp__lt=cutoff, user_id="").delete()
16 output = f"{result[0]} anonymous pageviews deleted"
17
18 cutoff = timezone.now() - settings.PAGEVIEWS_AUTHENTICATED_RETENTION_TIMEDELTA
19 result = Pageview.objects.filter(timestamp__lt=cutoff).exclude(user_id="").delete()
20 output += f", {result[0]} authenticated pageviews deleted"
21
22 return output