Skip to content

Commit 2d48c84

Browse files
authored
feat: Add tracking checked-in to MeetingRegistration and the registration API. (ietf-tools#4280)
* feat: add field MeetingRegistration.checkedin to track onsite checkin * feat: add handling of ticket_type, checkedin to get_meeting_registation_data. Fixes ietf-tools#3672
1 parent 109c646 commit 2d48c84

4 files changed

Lines changed: 33 additions & 2 deletions

File tree

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 2.2.28 on 2022-07-26 08:37
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('stats', '0004_split_records'),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name='meetingregistration',
15+
name='checkedin',
16+
field=models.BooleanField(default=False),
17+
),
18+
]

ietf/stats/models.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ class MeetingRegistration(models.Model):
6262
reg_type = models.CharField(blank=True, max_length=255)
6363
ticket_type = models.CharField(blank=True, max_length=255)
6464
attended = models.BooleanField(default=False)
65+
checkedin = models.BooleanField(default=False)
6566

6667
def __str__(self):
6768
return "{} {}".format(self.first_name, self.last_name)

ietf/stats/tests.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,9 @@ def test_get_meeting_registration_data(self, mock_get):
237237
'Company': 'ABC',
238238
'Country': 'US',
239239
'Email': person.email().address,
240-
'RegType': 'onsite'
240+
'RegType': 'onsite',
241+
'TicketType': 'week_pass',
242+
'CheckedIn': 'True',
241243
}
242244
data2 = data.copy()
243245
data2['RegType'] = 'hackathon'
@@ -259,6 +261,9 @@ def test_get_meeting_registration_data(self, mock_get):
259261
self.assertEqual(query.count(), 2)
260262
self.assertEqual(query.filter(reg_type='onsite').count(), 1)
261263
self.assertEqual(query.filter(reg_type='hackathon').count(), 1)
264+
onsite = query.get(reg_type='onsite')
265+
self.assertEqual(onsite.ticket_type, 'week_pass')
266+
self.assertEqual(onsite.checkedin, True)
262267
# call a second time to test delete
263268
get_meeting_registration_data(meeting)
264269
query = MeetingRegistration.objects.filter(meeting=meeting, email=person.email())

ietf/stats/utils.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,9 @@ def get_meeting_registration_data(meeting):
261261
country_code = registration['Country'].strip()
262262
address = registration['Email'].strip()
263263
reg_type = registration['RegType'].strip()
264+
ticket_type = registration['TicketType'].strip()
265+
checkedin = registration['CheckedIn'].strip()
266+
264267
if (address, reg_type) in meeting_registrations:
265268
object = meeting_registrations.pop((address, reg_type))
266269
created = False
@@ -274,11 +277,15 @@ def get_meeting_registration_data(meeting):
274277
if (object.first_name != first_name[:200] or
275278
object.last_name != last_name[:200] or
276279
object.affiliation != affiliation or
277-
object.country_code != country_code):
280+
object.country_code != country_code or
281+
object.ticket_type != ticket_type or
282+
object.checkedin != checkedin):
278283
object.first_name=first_name[:200]
279284
object.last_name=last_name[:200]
280285
object.affiliation=affiliation
281286
object.country_code=country_code
287+
object.ticket_type=ticket_type
288+
object.checkedin=checkedin
282289
object.save()
283290

284291
# Add a Person object to MeetingRegistration object

0 commit comments

Comments
 (0)