Skip to content

Commit 151b14a

Browse files
committed
Converted the meeting attendance fetcher to a management command.
- Legacy-Id: 13490
1 parent 4971c01 commit 151b14a

1 file changed

Lines changed: 37 additions & 40 deletions

File tree

Lines changed: 37 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,44 @@
1-
#!/usr/bin/env python
2-
# -*- coding: utf-8 -*-
1+
# Copyright 2016 IETF Trust
32

4-
import sys, os, argparse
5-
6-
basedir = os.path.abspath(os.path.join(os.path.dirname(__file__), "../.."))
7-
sys.path = [ basedir ] + sys.path
8-
os.environ["DJANGO_SETTINGS_MODULE"] = "ietf.settings"
9-
10-
virtualenv_activation = os.path.join(basedir, "env", "bin", "activate_this.py")
11-
if os.path.exists(virtualenv_activation):
12-
execfile(virtualenv_activation, dict(__file__=virtualenv_activation))
13-
14-
import django
15-
django.setup()
16-
17-
parser = argparse.ArgumentParser()
18-
parser.add_argument("--meeting", help="meeting to fetch data for")
19-
parser.add_argument("--all", action="store_true", help="fetch data for all meetings")
20-
parser.add_argument("--latest", type=int, help="fetch data for latest N meetings")
21-
args = parser.parse_args()
3+
import syslog
224

5+
from django.core.management.base import BaseCommand, CommandError
236

24-
import syslog
7+
import debug # pyflakes:ignore
258

269
from ietf.meeting.models import Meeting
27-
2810
from ietf.stats.utils import get_meeting_registration_data
2911

30-
meetings = Meeting.objects.none()
31-
if args.meeting:
32-
meetings = Meeting.objects.filter(number=args.meeting, type="ietf")
33-
elif args.all:
34-
meetings = Meeting.objects.filter(type="ietf").order_by("date")
35-
elif args.latest:
36-
meetings = Meeting.objects.filter(type="ietf").order_by("-date")[:args.latest]
37-
else:
38-
print("Please use one of --meeting, --all or --latest")
39-
sys.exit(1)
40-
41-
for meeting in meetings:
42-
added, processed, total = get_meeting_registration_data(meeting)
43-
msg = "Fetched data for meeting {}: {} processed, {} added, {} in table".format(meeting.number, processed, added, total)
44-
if sys.stdout.isatty():
45-
print(msg) # make debugging a bit easier
46-
else:
47-
syslog.syslog(msg)
12+
logtag = __name__.split('.')[-1]
13+
logname = "user.log"
14+
syslog.openlog(logtag, syslog.LOG_PID, syslog.LOG_USER)
15+
16+
class Command(BaseCommand):
17+
help = "Fetch meeting attendee figures from ietf.org/registration/attendees."
18+
19+
def add_arguments(self, parser):
20+
parser.add_argument("--meeting", help="meeting to fetch data for")
21+
parser.add_argument("--all", action="store_true", help="fetch data for all meetings")
22+
parser.add_argument("--latest", type=int, help="fetch data for latest N meetings")
23+
24+
def handle(self, *args, **options):
25+
self.verbosity = options['verbosity']
26+
27+
meetings = Meeting.objects.none()
28+
if options['meeting']:
29+
meetings = Meeting.objects.filter(number=options['meeting'], type="ietf")
30+
elif options['all']:
31+
meetings = Meeting.objects.filter(type="ietf").order_by("date")
32+
elif options['latest']:
33+
meetings = Meeting.objects.filter(type="ietf").order_by("-date")[:options['latest']]
34+
else:
35+
raise CommandError("Please use one of --meeting, --all or --latest")
36+
37+
for meeting in meetings:
38+
added, processed, total = get_meeting_registration_data(meeting)
39+
msg = "Fetched data for meeting %3s: %4d processed, %4d added, %4d in table" % (meeting.number, processed, added, total)
40+
if self.stdout.isatty():
41+
self.stdout.write(msg+'\n') # make debugging a bit easier
42+
else:
43+
syslog.syslog(msg)
44+

0 commit comments

Comments
 (0)