Plain is headed towards 1.0! Subscribe for development updates →

 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