Skip to content

Commit 044b891

Browse files
committed
Strip whitespace from registration data during import. Includes migration for existing data. Fixes ietf-tools#2356. Commit ready for merge.
- Legacy-Id: 14088
1 parent f2668cf commit 044b891

3 files changed

Lines changed: 45 additions & 6 deletions

File tree

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# -*- coding: utf-8 -*-
2+
# Generated by Django 1.10.7 on 2017-08-29 12:00
3+
from __future__ import unicode_literals
4+
5+
from django.db import migrations
6+
from django.db.models import Q
7+
8+
def strip_spaces(apps, schema_editor):
9+
MeetingRegistration = apps.get_model("stats", "MeetingRegistration")
10+
for reg in MeetingRegistration.objects.filter(Q(first_name__startswith=' ') |
11+
Q(first_name__endswith=' ')).distinct():
12+
reg.first_name = reg.first_name.strip()
13+
reg.save()
14+
15+
for reg in MeetingRegistration.objects.filter(Q(last_name__startswith=' ') |
16+
Q(last_name__endswith=' ')).distinct():
17+
reg.last_name = reg.last_name.strip()
18+
reg.save()
19+
20+
for reg in MeetingRegistration.objects.filter(Q(affiliation__startswith=' ') |
21+
Q(affiliation__endswith=' ')).distinct():
22+
reg.affiliation = reg.affiliation.strip()
23+
reg.save()
24+
25+
for reg in MeetingRegistration.objects.filter(Q(email__startswith=' ') |
26+
Q(email__endswith=' ')).distinct():
27+
reg.email = reg.email.strip()
28+
reg.save()
29+
30+
class Migration(migrations.Migration):
31+
32+
dependencies = [
33+
('stats', '0004_meetingregistration_email'),
34+
]
35+
36+
operations = [
37+
migrations.RunPython(strip_spaces, migrations.RunPython.noop),
38+
]

ietf/stats/tests.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,9 +191,10 @@ def test_review_stats(self):
191191

192192
@patch('requests.get')
193193
def test_get_meeting_registration_data(self, mock_get):
194+
'''Test function to get reg data. Confirm leading/trailing spaces stripped'''
194195
response = Response()
195196
response.status_code = 200
196-
response._content = '[{"LastName":"Smith","FirstName":"John","Company":"ABC","Country":"US","Email":"john.doe@example.us"}]'
197+
response._content = '[{"LastName":"Smith ","FirstName":" John","Company":"ABC","Country":"US","Email":"john.doe@example.us"}]'
197198
mock_get.return_value = response
198199
meeting = MeetingFactory(type_id='ietf', date=datetime.date(2016,7,14), number="96")
199200
get_meeting_registration_data(meeting)

ietf/stats/utils.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -229,11 +229,11 @@ def get_meeting_registration_data(meeting):
229229
for registration in decoded:
230230
object, created = MeetingRegistration.objects.get_or_create(
231231
meeting_id=meeting.pk,
232-
first_name=registration['FirstName'],
233-
last_name=registration['LastName'],
234-
affiliation=registration['Company'],
235-
country_code=registration['Country'],
236-
email=registration['Email'],
232+
first_name=registration['FirstName'].strip(),
233+
last_name=registration['LastName'].strip(),
234+
affiliation=registration['Company'].strip(),
235+
country_code=registration['Country'].strip(),
236+
email=registration['Email'].strip(),
237237
)
238238
if created:
239239
num_created += 1

0 commit comments

Comments
 (0)