From 304d04e674650a4cb2d2c1a92e03f51bd03bfb0d Mon Sep 17 00:00:00 2001 From: Ryan Cross Date: Tue, 4 Apr 2017 22:06:17 +0000 Subject: [PATCH] Add Registration migrations - Legacy-Id: 13184 --- .../0003_registration_registrationstats.py | 40 +++++++++++++++++++ .../migrations/0004_import_registrations.py | 28 +++++++++++++ ietf/stats/utils.py | 2 +- 3 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 ietf/stats/migrations/0003_registration_registrationstats.py create mode 100644 ietf/stats/migrations/0004_import_registrations.py diff --git a/ietf/stats/migrations/0003_registration_registrationstats.py b/ietf/stats/migrations/0003_registration_registrationstats.py new file mode 100644 index 000000000..86523fc8d --- /dev/null +++ b/ietf/stats/migrations/0003_registration_registrationstats.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.6 on 2017-03-30 14:38 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('person', '0015_clean_primary'), + ('meeting', '0048_auto_20170330_1438'), + ('stats', '0002_add_initial_aliases'), + ] + + operations = [ + migrations.CreateModel( + name='Registration', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('first_name', models.CharField(max_length=255)), + ('last_name', models.CharField(max_length=255)), + ('affiliation', models.CharField(blank=True, max_length=255)), + ('country', models.CharField(max_length=2)), + ('meeting', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='meeting.Meeting')), + ('person', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='person.Person')), + ], + ), + migrations.CreateModel( + name='RegistrationStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('gender_male', models.IntegerField(default=0)), + ('gender_female', models.IntegerField(default=0)), + ('gender_undeclared', models.IntegerField(default=0)), + ('meeting', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='meeting.Meeting')), + ], + ), + ] diff --git a/ietf/stats/migrations/0004_import_registrations.py b/ietf/stats/migrations/0004_import_registrations.py new file mode 100644 index 000000000..6347ec64e --- /dev/null +++ b/ietf/stats/migrations/0004_import_registrations.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.6 on 2017-04-04 13:55 +from __future__ import unicode_literals + +from django.db import migrations + +from ietf.stats.utils import get_registration_data + +def forward(apps, schema_editor): + Registration = apps.get_model('stats', 'Registration') + Meeting = apps.get_model('meeting', 'Meeting') + for meeting in Meeting.objects.filter(number__in=[ str(n) for n in range(72,99) ]): + total = get_registration_data(meeting) + print "Meeting {}: {}".format(meeting.number, total) + +def backward(apps, schema_editor): + Registration = apps.get_model('stats', 'Registration') + Registration.objects.all().delete() + +class Migration(migrations.Migration): + + dependencies = [ + ('stats', '0003_registration_registrationstats'), + ] + + operations = [ + migrations.RunPython(forward, backward) + ] diff --git a/ietf/stats/utils.py b/ietf/stats/utils.py index 3559a15dd..27f043ef9 100644 --- a/ietf/stats/utils.py +++ b/ietf/stats/utils.py @@ -218,7 +218,7 @@ def get_registration_data(meeting): if response.status_code == 200: for registration in response.json(): object, created = Registration.objects.get_or_create( - meeting=meeting, + meeting_id=meeting.pk, first_name=registration['FirstName'], last_name=registration['LastName'], affiliation=registration['Company'],