Add a script for keeping the meeting registration data in sync
- Legacy-Id: 13253
This commit is contained in:
parent
f09302adb5
commit
8325ffa9de
47
ietf/bin/fetch-meeting-registration-data
Executable file
47
ietf/bin/fetch-meeting-registration-data
Executable file
|
@ -0,0 +1,47 @@
|
|||
#!/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", action="store_true", help="fetch data for latest meeting")
|
||||
args = parser.parse_args()
|
||||
|
||||
|
||||
import syslog
|
||||
|
||||
from ietf.meeting.models import Meeting
|
||||
|
||||
from ietf.stats.utils import get_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")[:1]
|
||||
else:
|
||||
print("Please use one of --meeting, --all or --latest")
|
||||
sys.exit(1)
|
||||
|
||||
for meeting in meetings:
|
||||
total = get_registration_data(meeting)
|
||||
msg = "Fetched data for meeting {}: {} registrations added".format(meeting.number, total)
|
||||
if sys.stdout.isatty():
|
||||
print(msg) # make debugging a bit easier
|
||||
else:
|
||||
syslog.syslog(msg)
|
|
@ -10,7 +10,7 @@ class Migration(migrations.Migration):
|
|||
|
||||
dependencies = [
|
||||
('person', '0015_clean_primary'),
|
||||
('meeting', '0048_auto_20170330_1438'),
|
||||
('meeting', '0047_import_shared_audio_files'),
|
||||
('stats', '0002_add_initial_aliases'),
|
||||
]
|
||||
|
||||
|
|
|
@ -216,7 +216,13 @@ def get_registration_data(meeting):
|
|||
num_created = 0
|
||||
response = requests.get(settings.REGISTRATION_ATTENDEES_BASE_URL + meeting.number)
|
||||
if response.status_code == 200:
|
||||
for registration in response.json():
|
||||
decoded = []
|
||||
try:
|
||||
decoded = response.json()
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
for registration in decoded:
|
||||
object, created = Registration.objects.get_or_create(
|
||||
meeting_id=meeting.pk,
|
||||
first_name=registration['FirstName'],
|
||||
|
@ -229,4 +235,4 @@ def get_registration_data(meeting):
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue