Skip to content

Commit 8a6026c

Browse files
committed
Added a MeetingRegistration.attended field, to keep apart meeting attendence and meeting registration before attendance.
- Legacy-Id: 17954
1 parent 59487f5 commit 8a6026c

5 files changed

Lines changed: 43 additions & 11 deletions

File tree

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Generated by Django 2.0.13 on 2020-06-09 04:39
2+
3+
from django.db import migrations, models
4+
5+
6+
def forward(apps, schema_editor):
7+
MeetingRegistration = apps.get_model('stats', 'MeetingRegistration')
8+
# Set attended=True on all existing records,
9+
#
10+
# Going forward, this will be unset on registration
11+
# (ietf.api.views.api_new_meeting_registration()), and set on attendee
12+
# import (ietf.stats.utils.get_meeting_registration_data() )
13+
MeetingRegistration.objects.update(attended=True)
14+
15+
def reverse(apps, schema_editor):
16+
pass
17+
18+
class Migration(migrations.Migration):
19+
20+
dependencies = [
21+
('stats', '0002_add_meetingregistration_fields'),
22+
]
23+
24+
operations = [
25+
migrations.AddField(
26+
model_name='meetingregistration',
27+
name='attended',
28+
field=models.BooleanField(default=False),
29+
),
30+
migrations.RunPython(forward, reverse),
31+
]

ietf/stats/models.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ class MeetingRegistration(models.Model):
6161
email = models.EmailField(blank=True, null=True)
6262
reg_type = models.CharField(blank=True, max_length=255)
6363
ticket_type = models.CharField(blank=True, max_length=255)
64-
64+
attended = models.BooleanField(default=False)
65+
6566
def __str__(self):
6667
return "{} {}".format(self.first_name, self.last_name)

ietf/stats/tests.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,9 +123,9 @@ def test_document_stats(self):
123123
def test_meeting_stats(self):
124124
# create some data for the statistics
125125
meeting = MeetingFactory(type_id='ietf', date=datetime.date.today(), number="96")
126-
MeetingRegistration.objects.create(first_name='John', last_name='Smith', country_code='US', email="john.smith@example.us", meeting=meeting)
126+
MeetingRegistration.objects.create(first_name='John', last_name='Smith', country_code='US', email="john.smith@example.us", meeting=meeting, attended=True)
127127
CountryAlias.objects.get_or_create(alias="US", country=CountryName.objects.get(slug="US"))
128-
MeetingRegistration.objects.create(first_name='Jaume', last_name='Guillaume', country_code='FR', email="jaume.guillaume@example.fr", meeting=meeting)
128+
MeetingRegistration.objects.create(first_name='Jaume', last_name='Guillaume', country_code='FR', email="jaume.guillaume@example.fr", meeting=meeting, attended=True)
129129
CountryAlias.objects.get_or_create(alias="FR", country=CountryName.objects.get(slug="FR"))
130130

131131
# check redirect

ietf/stats/utils.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -253,13 +253,13 @@ def get_meeting_registration_data(meeting):
253253
created = False
254254
else:
255255
object = MeetingRegistration.objects.create(meeting_id=meeting.pk, email=address)
256-
object.first_name=first_name[:200]
257-
object.last_name=last_name[:200]
258-
object.affiliation=affiliation
259-
object.country_code=country_code
260-
object.attended = True
261-
object.save()
262256
created = True
257+
object.first_name=first_name[:200]
258+
object.last_name=last_name[:200]
259+
object.affiliation=affiliation
260+
object.country_code=country_code
261+
object.attended = True
262+
object.save()
263263

264264
# Add a Person object to MeetingRegistration object
265265
# if valid email is available

ietf/stats/views.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -811,7 +811,7 @@ def reg_name(r):
811811
return email.utils.formataddr(((r.first_name + " " + r.last_name).strip(), r.email))
812812

813813
if meeting and any(stats_type == t[0] for t in possible_stats_types):
814-
attendees = MeetingRegistration.objects.filter(meeting=meeting)
814+
attendees = MeetingRegistration.objects.filter(meeting=meeting, attended=True)
815815

816816
if stats_type == "country":
817817
stats_title = "Number of attendees for {} {} per country".format(meeting.type.name, meeting.number)
@@ -883,7 +883,7 @@ def reg_name(r):
883883
elif not meeting and any(stats_type == t[0] for t in possible_stats_types):
884884
template_name = "overview"
885885

886-
attendees = MeetingRegistration.objects.filter(meeting__type="ietf").select_related('meeting')
886+
attendees = MeetingRegistration.objects.filter(meeting__type="ietf", attended=True).select_related('meeting')
887887

888888
if stats_type == "overview":
889889
stats_title = "Number of attendees per meeting"

0 commit comments

Comments
 (0)