From 32e3c6f9a76928d0250b55e92ac44b13e609f3e7 Mon Sep 17 00:00:00 2001 From: Jelle van der Waa Date: Sun, 29 Jul 2018 20:59:37 +0200 Subject: packages: remove unused signoff_report --- packages/management/commands/signoff_report.py | 126 ------------------------- 1 file changed, 126 deletions(-) delete mode 100644 packages/management/commands/signoff_report.py (limited to 'packages') diff --git a/packages/management/commands/signoff_report.py b/packages/management/commands/signoff_report.py deleted file mode 100644 index 6749cf40..00000000 --- a/packages/management/commands/signoff_report.py +++ /dev/null @@ -1,126 +0,0 @@ -# -*- coding: utf-8 -*- -""" -signoff_report command - -Send an email summarizing the state of outstanding signoffs for the given -repository. - -Usage: ./manage.py signoff_report -""" - -from django.core.mail import send_mail -from django.core.urlresolvers import reverse -from django.core.management.base import BaseCommand, CommandError -from django.contrib.auth.models import User -from django.contrib.sites.models import Site -from django.db.models import Count -from django.template import loader -from django.utils.timezone import now - -from collections import namedtuple -from datetime import timedelta -import logging -from operator import attrgetter -import sys - -from main.models import Repo -from packages.models import Signoff -from packages.utils import get_signoff_groups - -logging.basicConfig( - level=logging.INFO, - format='%(asctime)s -> %(levelname)s: %(message)s', - datefmt='%Y-%m-%d %H:%M:%S', - stream=sys.stderr) -logger = logging.getLogger() - -class Command(BaseCommand): - args = " " - help = "Send a signoff report for the given repository." - - def handle(self, *args, **options): - v = int(options.get('verbosity', None)) - if v == 0: - logger.level = logging.ERROR - elif v == 1: - logger.level = logging.INFO - elif v >= 2: - logger.level = logging.DEBUG - - if len(args) != 2: - raise CommandError("email and repository must be provided") - - return generate_report(args[0], args[1]) - -def generate_report(email, repo_name): - repo = Repo.objects.get(name__iexact=repo_name) - # Collect all existing signoffs for these packages - signoff_groups = sorted(get_signoff_groups([repo]), - key=attrgetter('target_repo', 'arch', 'pkgbase')) - disabled = [] - bad = [] - complete = [] - incomplete = [] - new = [] - old = [] - - new_hours = 24 - old_days = 14 - current_time = now() - new_cutoff = current_time - timedelta(hours=new_hours) - old_cutoff = current_time - timedelta(days=old_days) - - if len(signoff_groups) == 0: - # no need to send an email at all - return - - for group in signoff_groups: - spec = group.specification - if spec.known_bad: - bad.append(group) - elif not spec.enabled: - disabled.append(group) - elif group.approved(): - complete.append(group) - else: - incomplete.append(group) - - if group.package.last_update > new_cutoff: - new.append(group) - if group.package.last_update < old_cutoff: - old.append(group) - - old.sort(key=attrgetter('last_update')) - - proto = 'https' - domain = Site.objects.get_current().domain - signoffs_url = '%s://%s%s' % (proto, domain, reverse('package-signoffs')) - - # and the fun bit - Leader = namedtuple('Leader', ['user', 'count']) - leaders = Signoff.objects.filter(created__gt=new_cutoff, - revoked__isnull=True).values_list('user').annotate( - signoff_count=Count('pk')).order_by('-signoff_count')[:5] - users = User.objects.in_bulk([l[0] for l in leaders]) - leaders = (Leader(users[l[0]], l[1]) for l in leaders) - - subject = 'Signoff report for [%s]' % repo.name.lower() - t = loader.get_template('packages/signoff_report.txt') - c = { - 'repo': repo, - 'signoffs_url': signoffs_url, - 'disabled': disabled, - 'bad': bad, - 'all': signoff_groups, - 'incomplete': incomplete, - 'complete': complete, - 'new': new, - 'new_hours': new_hours, - 'old': old, - 'old_days': old_days, - 'leaders': leaders, - } - from_addr = 'Arch Website Notification ' - send_mail(subject, t.render(c), from_addr, [email]) - -# vim: set ts=4 sw=4 et: -- cgit v1.2.3-55-g3dc8