#!/usr/bin/env python3 from datetime import timedelta from django.core.management.base import BaseCommand from django.db.models import Count from django.utils import timezone from note.models import RecurrentTransaction, TransactionTemplate class Command(BaseCommand): """ Command to add the ten most used buttons of the past month to the highlighted buttons. """ def add_arguments(self, parser): return parser def handle(self, *args, **kwargs): queryset = RecurrentTransaction.objects.filter(template__display=True, created_at__gte=timezone.now() - timedelta(days=30)).values("template").annotate(transaction_count=Count("template")).order_by("-transaction_count")[:10] for d in queryset.all(): button_id = d["template"] button = TransactionTemplate.objects.get(pk=button_id) self.stdout.write(self.style.WARNING("Highlight button {name} ({count:d} transactions)...".format(name=button.name, count=d["transaction_count"]))) button.highlighted = True button.save()