Skip to content

Commit 8325ffa

Browse files
committed
Add a script for keeping the meeting registration data in sync
- Legacy-Id: 13253
1 parent f09302a commit 8325ffa

3 files changed

Lines changed: 56 additions & 3 deletions

File tree

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
#!/usr/bin/env python
2+
# -*- coding: utf-8 -*-
3+
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", action="store_true", help="fetch data for latest meeting")
21+
args = parser.parse_args()
22+
23+
24+
import syslog
25+
26+
from ietf.meeting.models import Meeting
27+
28+
from ietf.stats.utils import get_registration_data
29+
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")[:1]
37+
else:
38+
print("Please use one of --meeting, --all or --latest")
39+
sys.exit(1)
40+
41+
for meeting in meetings:
42+
total = get_registration_data(meeting)
43+
msg = "Fetched data for meeting {}: {} registrations added".format(meeting.number, total)
44+
if sys.stdout.isatty():
45+
print(msg) # make debugging a bit easier
46+
else:
47+
syslog.syslog(msg)

ietf/stats/migrations/0003_registration_registrationstats.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ class Migration(migrations.Migration):
1010

1111
dependencies = [
1212
('person', '0015_clean_primary'),
13-
('meeting', '0048_auto_20170330_1438'),
13+
('meeting', '0047_import_shared_audio_files'),
1414
('stats', '0002_add_initial_aliases'),
1515
]
1616

ietf/stats/utils.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,13 @@ def get_registration_data(meeting):
216216
num_created = 0
217217
response = requests.get(settings.REGISTRATION_ATTENDEES_BASE_URL + meeting.number)
218218
if response.status_code == 200:
219-
for registration in response.json():
219+
decoded = []
220+
try:
221+
decoded = response.json()
222+
except ValueError:
223+
pass
224+
225+
for registration in decoded:
220226
object, created = Registration.objects.get_or_create(
221227
meeting_id=meeting.pk,
222228
first_name=registration['FirstName'],
@@ -229,4 +235,4 @@ def get_registration_data(meeting):
229235

230236

231237

232-
238+

0 commit comments

Comments
 (0)