Skip to content

Commit 24273da

Browse files
committed
Backed out commit 14000; the code is not idempotent and will create duplicate Person objects.
- Legacy-Id: 14004
1 parent 7061455 commit 24273da

File tree

2 files changed

+0
-73
lines changed

2 files changed

+0
-73
lines changed

ietf/stats/tests.py

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
1-
21
import datetime
32

43
from mock import patch
54
from pyquery import PyQuery
65
from requests import Response
76

87
from django.urls import reverse as urlreverse
9-
from django.contrib.auth.models import User
108

119
from ietf.utils.test_data import make_test_data, make_review_data
1210
from ietf.utils.test_utils import login_testing_unauthorized, TestCase, unicontent
@@ -201,21 +199,3 @@ def test_get_meeting_registration_data(self, mock_get):
201199
get_meeting_registration_data(meeting)
202200
query = MeetingRegistration.objects.filter(first_name='John',last_name='Smith',country_code='US')
203201
self.assertTrue(query.count(), 1)
204-
self.assertTrue(isinstance(query[0].person,Person))
205-
206-
@patch('requests.get')
207-
def test_get_meeting_registration_data_user_exists(self, mock_get):
208-
response = Response()
209-
response.status_code = 200
210-
response._content = '[{"LastName":"Smith","FirstName":"John","Company":"ABC","Country":"US","Email":"john.doe@example.us"}]'
211-
user = User.objects.create(username="john.doe@example.us")
212-
user.save()
213-
214-
mock_get.return_value = response
215-
meeting = MeetingFactory(type_id='ietf', date=datetime.date(2016,7,14), number="96")
216-
get_meeting_registration_data(meeting)
217-
query = MeetingRegistration.objects.filter(first_name='John',last_name='Smith',country_code='US')
218-
self.assertTrue(query.count(), 1)
219-
self.assertTrue(isinstance(query[0].person, Person))
220-
221-

ietf/stats/utils.py

Lines changed: 0 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,6 @@
66

77
from ietf.stats.models import AffiliationAlias, AffiliationIgnoredEnding, CountryAlias, MeetingRegistration
88
from ietf.name.models import CountryName
9-
from ietf.person.models import Person, Email
10-
from django.contrib.auth.models import User
11-
from unidecode import unidecode
12-
13-
149

1510
def compile_affiliation_ending_stripping_regexp():
1611
parts = []
@@ -231,11 +226,7 @@ def get_meeting_registration_data(meeting):
231226
else:
232227
raise RuntimeError("Could not decode response from registrations API: '%s...'" % (response.content[:64], ))
233228

234-
235-
# for each user identified in the Registration system
236-
# Create a DataTracker MeetingRegistration object
237229
for registration in decoded:
238-
person = None
239230
object, created = MeetingRegistration.objects.get_or_create(
240231
meeting_id=meeting.pk,
241232
first_name=registration['FirstName'],
@@ -244,50 +235,6 @@ def get_meeting_registration_data(meeting):
244235
country_code=registration['Country'],
245236
email=registration['Email'],
246237
)
247-
248-
# Add a Person object to MeetingRegistration object
249-
# if valid email is available
250-
if not object.person:
251-
# If the person already exists do not try to create a new one
252-
emails = Email.objects.filter(address=registration["Email"])
253-
# there can only be on Email object with a unique email address (primary key)
254-
if len(emails) == 1:
255-
person = emails[0].person
256-
# Create a new Person object
257-
else:
258-
# ascii_name - convert from unicode if necessary
259-
regname = "%s %s" % (registration["FirstName"], registration["LastName"])
260-
# if there are any unicode characters decode the string to ascii
261-
ascii_name = unidecode(regname).strip()
262-
263-
# Create a new user object if it does not exist already
264-
# if the user already exists do not try to create a new one
265-
users = User.objects.filter(username=registration["Email"])
266-
if len(users) > 0:
267-
user = users[0]
268-
else:
269-
# Create a new user.
270-
user = User.objects.create(
271-
first_name=registration["FirstName"],
272-
last_name=registration["LastName"],
273-
username=registration["Email"],
274-
email=registration["Email"]
275-
)
276-
user.save()
277-
278-
# Create the new Person object.
279-
person = Person.objects.create(
280-
name=regname,
281-
ascii=ascii_name,
282-
affiliation=registration["Company"],
283-
user=user
284-
)
285-
person.save()
286-
287-
# update the person object to an actual value
288-
object.person = person
289-
object.save()
290-
291238
if created:
292239
num_created += 1
293240
num_processed += 1

0 commit comments

Comments
 (0)