Converted the meeting attendance fetcher to a management command.
- Legacy-Id: 13490
This commit is contained in:
parent
4971c01ced
commit
151b14ab3f
|
@ -1,47 +1,44 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import sys, os, argparse
|
||||
|
||||
basedir = os.path.abspath(os.path.join(os.path.dirname(__file__), "../.."))
|
||||
sys.path = [ basedir ] + sys.path
|
||||
os.environ["DJANGO_SETTINGS_MODULE"] = "ietf.settings"
|
||||
|
||||
virtualenv_activation = os.path.join(basedir, "env", "bin", "activate_this.py")
|
||||
if os.path.exists(virtualenv_activation):
|
||||
execfile(virtualenv_activation, dict(__file__=virtualenv_activation))
|
||||
|
||||
import django
|
||||
django.setup()
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("--meeting", help="meeting to fetch data for")
|
||||
parser.add_argument("--all", action="store_true", help="fetch data for all meetings")
|
||||
parser.add_argument("--latest", type=int, help="fetch data for latest N meetings")
|
||||
args = parser.parse_args()
|
||||
|
||||
# Copyright 2016 IETF Trust
|
||||
|
||||
import syslog
|
||||
|
||||
from ietf.meeting.models import Meeting
|
||||
from django.core.management.base import BaseCommand, CommandError
|
||||
|
||||
import debug # pyflakes:ignore
|
||||
|
||||
from ietf.meeting.models import Meeting
|
||||
from ietf.stats.utils import get_meeting_registration_data
|
||||
|
||||
meetings = Meeting.objects.none()
|
||||
if args.meeting:
|
||||
meetings = Meeting.objects.filter(number=args.meeting, type="ietf")
|
||||
elif args.all:
|
||||
meetings = Meeting.objects.filter(type="ietf").order_by("date")
|
||||
elif args.latest:
|
||||
meetings = Meeting.objects.filter(type="ietf").order_by("-date")[:args.latest]
|
||||
else:
|
||||
print("Please use one of --meeting, --all or --latest")
|
||||
sys.exit(1)
|
||||
logtag = __name__.split('.')[-1]
|
||||
logname = "user.log"
|
||||
syslog.openlog(logtag, syslog.LOG_PID, syslog.LOG_USER)
|
||||
|
||||
for meeting in meetings:
|
||||
added, processed, total = get_meeting_registration_data(meeting)
|
||||
msg = "Fetched data for meeting {}: {} processed, {} added, {} in table".format(meeting.number, processed, added, total)
|
||||
if sys.stdout.isatty():
|
||||
print(msg) # make debugging a bit easier
|
||||
else:
|
||||
syslog.syslog(msg)
|
||||
class Command(BaseCommand):
|
||||
help = "Fetch meeting attendee figures from ietf.org/registration/attendees."
|
||||
|
||||
def add_arguments(self, parser):
|
||||
parser.add_argument("--meeting", help="meeting to fetch data for")
|
||||
parser.add_argument("--all", action="store_true", help="fetch data for all meetings")
|
||||
parser.add_argument("--latest", type=int, help="fetch data for latest N meetings")
|
||||
|
||||
def handle(self, *args, **options):
|
||||
self.verbosity = options['verbosity']
|
||||
|
||||
meetings = Meeting.objects.none()
|
||||
if options['meeting']:
|
||||
meetings = Meeting.objects.filter(number=options['meeting'], type="ietf")
|
||||
elif options['all']:
|
||||
meetings = Meeting.objects.filter(type="ietf").order_by("date")
|
||||
elif options['latest']:
|
||||
meetings = Meeting.objects.filter(type="ietf").order_by("-date")[:options['latest']]
|
||||
else:
|
||||
raise CommandError("Please use one of --meeting, --all or --latest")
|
||||
|
||||
for meeting in meetings:
|
||||
added, processed, total = get_meeting_registration_data(meeting)
|
||||
msg = "Fetched data for meeting %3s: %4d processed, %4d added, %4d in table" % (meeting.number, processed, added, total)
|
||||
if self.stdout.isatty():
|
||||
self.stdout.write(msg+'\n') # make debugging a bit easier
|
||||
else:
|
||||
syslog.syslog(msg)
|
||||
|
||||
|
|
Loading…
Reference in a new issue