Added origin information to all places where we create email address entries.

- Legacy-Id: 15127
This commit is contained in:
Henrik Levkowetz 2018-05-05 12:40:30 +00:00
parent 37f0d141e9
commit 5f37a71889
13 changed files with 42 additions and 44 deletions

View file

@ -1001,7 +1001,7 @@ class IndividualInfoFormsTests(TestCase):
doc.shepherd = Email.objects.get(person__user__username="plain")
doc.save_with_history([DocEvent.objects.create(doc=doc, rev=doc.rev, type="changed_shepherd", by=Person.objects.get(user__username="secretary"), desc="Test")])
new_email = Email.objects.create(address="anotheremail@example.com", person=doc.shepherd.person)
new_email = Email.objects.create(address="anotheremail@example.com", person=doc.shepherd.person, origin='test')
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
@ -1436,7 +1436,7 @@ class ChangeReplacesTests(TestCase):
group=mars_wg,
)
p = Person.objects.create(name="basea_author")
e = Email.objects.create(address="basea_author@example.com", person=p)
e = Email.objects.create(address="basea_author@example.com", person=p, origin='test')
self.basea.documentauthor_set.create(person=p, email=e, order=1)
self.baseb = Document.objects.create(
@ -1449,7 +1449,7 @@ class ChangeReplacesTests(TestCase):
group=mars_wg,
)
p = Person.objects.create(name="baseb_author")
e = Email.objects.create(address="baseb_author@example.com", person=p)
e = Email.objects.create(address="baseb_author@example.com", person=p, origin='test')
self.baseb.documentauthor_set.create(person=p, email=e, order=1)
self.replacea = Document.objects.create(
@ -1462,7 +1462,7 @@ class ChangeReplacesTests(TestCase):
group=mars_wg,
)
p = Person.objects.create(name="replacea_author")
e = Email.objects.create(address="replacea_author@example.com", person=p)
e = Email.objects.create(address="replacea_author@example.com", person=p, origin='test')
self.replacea.documentauthor_set.create(person=p, email=e, order=1)
self.replaceboth = Document.objects.create(
@ -1475,7 +1475,7 @@ class ChangeReplacesTests(TestCase):
group=mars_wg,
)
p = Person.objects.create(name="replaceboth_author")
e = Email.objects.create(address="replaceboth_author@example.com", person=p)
e = Email.objects.create(address="replaceboth_author@example.com", person=p, origin='test')
self.replaceboth.documentauthor_set.create(person=p, email=e, order=1)
self.basea.set_state(State.objects.get(used=True, type="draft", slug="active"))

View file

@ -308,7 +308,7 @@ class IetfAuthTests(TestCase):
user.set_password("forgotten")
user.save()
p = Person.objects.create(name="Some One", ascii="Some One", user=user)
Email.objects.create(address=user.username, person=p)
Email.objects.create(address=user.username, person=p, origin='test')
# get
r = self.client.get(url)
@ -418,7 +418,7 @@ class IetfAuthTests(TestCase):
user.set_password("password")
user.save()
p = Person.objects.create(name="Some One", ascii="Some One", user=user)
Email.objects.create(address=user.username, person=p)
Email.objects.create(address=user.username, person=p, origin='test')
# log in
r = self.client.post(redir_url, {"username":user.username, "password":"password"})
@ -465,8 +465,8 @@ class IetfAuthTests(TestCase):
user.set_password("password")
user.save()
p = Person.objects.create(name="Some One", ascii="Some One", user=user)
Email.objects.create(address=user.username, person=p)
Email.objects.create(address="othername@example.org", person=p)
Email.objects.create(address=user.username, person=p, origin='test')
Email.objects.create(address="othername@example.org", person=p, origin='test')
# log in
r = self.client.post(redir_url, {"username":user.username, "password":"password"})

View file

@ -172,7 +172,7 @@ def confirm_account(request, auth):
Alias.objects.create(person=person, name=name)
if not email_obj:
email_obj = Email.objects.create(address=email, person=person)
email_obj = Email.objects.create(address=email, person=person, origin=user.username)
else:
if not email_obj.person:
email_obj.person = person
@ -293,7 +293,7 @@ def confirm_new_email(request, auth):
can_confirm = form.is_valid() and email
new_email_obj = None
if request.method == 'POST' and can_confirm and request.POST.get("action") == "confirm":
new_email_obj = Email.objects.create(address=email, person=person)
new_email_obj = Email.objects.create(address=email, person=person, origin=username)
return render(request, 'registration/confirm_new_email.html', {
'username': username,

View file

@ -39,18 +39,18 @@ class Command(BaseCommand):
populate_personnel=False,
populate_positions=False))
e = EmailFactory(person__name=u'Dummy Chair',address=u'dummychair@example.com',person__user__username=u'dummychair',person__default_emails=False)
e = EmailFactory(person__name=u'Dummy Chair', address=u'dummychair@example.com', person__user__username=u'dummychair', person__default_emails=False, origin='test')
e.person.user.set_password('password')
e.person.user.save()
nc.group.role_set.create(name_id=u'chair',person=e.person,email=e)
e = EmailFactory(person__name=u'Dummy Member',address=u'dummymember@example.com',person__user__username=u'dummymember',person__default_emails=False)
e = EmailFactory(person__name=u'Dummy Member', address=u'dummymember@example.com', person__user__username=u'dummymember', person__default_emails=False, origin='test')
e.person.user.set_password('password')
e.person.user.save()
nc.group.role_set.create(name_id=u'member',person=e.person,email=e)
e = EmailFactory(person__name=u'Dummy Candidate',address=u'dummycandidate@example.com',person__user__username=u'dummycandidate',person__default_emails=False)
e = EmailFactory(person__name=u'Dummy Candidate', address=u'dummycandidate@example.com', person__user__username=u'dummycandidate', person__default_emails=False, origin='test')
e.person.user.set_password('password')
e.person.user.save()
NomineePositionFactory(nominee__nomcom=nc, nominee__person=e.person,

View file

@ -123,7 +123,7 @@ def nomcom_test_data():
u.set_password(COMMUNITY_USER+"+password")
u.save()
plainman, _ = Person.objects.get_or_create(name="Plain Man", ascii="Plain Man", user=u)
email, _ = Email.objects.get_or_create(address="plain@example.com", person=plainman)
email, _ = Email.objects.get_or_create(address="plain@example.com", person=plainman, origin='test')
nominee, _ = Nominee.objects.get_or_create(email=email, nomcom=nomcom)
# positions

View file

@ -576,7 +576,7 @@ class NomcomViewsTest(TestCase):
if not searched_email:
searched_email = Email.objects.filter(address=nominee_email).first()
if not searched_email:
searched_email = EmailFactory(address=nominee_email,primary=True)
searched_email = EmailFactory(address=nominee_email, primary=True, origin='test')
if not searched_email.person:
searched_email.person = PersonFactory()
searched_email.save()
@ -967,8 +967,8 @@ class ReminderTest(TestCase):
today = datetime.date.today()
t_minus_3 = today - datetime.timedelta(days=3)
t_minus_4 = today - datetime.timedelta(days=4)
e1 = EmailFactory(address="nominee1@example.org",person=PersonFactory(name=u"Nominee 1"))
e2 = EmailFactory(address="nominee2@example.org",person=PersonFactory(name=u"Nominee 2"))
e1 = EmailFactory(address="nominee1@example.org", person=PersonFactory(name=u"Nominee 1"), origin='test')
e2 = EmailFactory(address="nominee2@example.org", person=PersonFactory(name=u"Nominee 2"), origin='test')
n = make_nomineeposition(self.nomcom,e1.person,gen,None)
np = n.nomineeposition_set.get(position=gen)
np.time = t_minus_3
@ -1716,7 +1716,7 @@ Junk body for testing
def test_edit_nominee(self):
nominee = self.nc.nominee_set.order_by('pk').first()
new_email = EmailFactory(person=nominee.person)
new_email = EmailFactory(person=nominee.person, origin='test')
url = reverse('ietf.nomcom.views.edit_nominee',kwargs={'year':self.nc.year(),'nominee_id':nominee.id})
login_testing_unauthorized(self,self.chair.user.username,url)
response = self.client.get(url)

View file

@ -372,7 +372,7 @@ def make_nomineeposition(nomcom, candidate, position, author):
def make_nomineeposition_for_newperson(nomcom, candidate_name, candidate_email, position, author):
# This is expected to fail if called with an existing email address
email = Email.objects.create(address=candidate_email)
email = Email.objects.create(address=candidate_email, origin=nomcom.group.acronym)
person = Person.objects.create(name=candidate_name,
ascii=unidecode_name(candidate_name),
)

View file

@ -71,7 +71,7 @@ class PersonFactory(factory.DjangoModelFactory):
extracted = True
if create and extracted:
make_email = getattr(EmailFactory, 'create' if create else 'build')
make_email(person=obj,address=obj.user.email)
make_email(person=obj, address=obj.user.email, origin='test')
@factory.post_generation
def default_photo(obj, create, extracted, **kwargs): # pylint: disable=no-self-argument
@ -131,4 +131,4 @@ class EmailFactory(factory.DjangoModelFactory):
active = True
primary = False
origin = ''

View file

@ -42,9 +42,9 @@ class PersonTests(TestCase):
def test_default_email(self):
person = PersonFactory()
primary = EmailFactory(person=person,primary=True,active=True)
EmailFactory(person=person,primary=False,active=True)
EmailFactory(person=person,primary=False,active=False)
primary = EmailFactory(person=person, primary=True, active=True, origin='test')
EmailFactory(person=person, primary=False, active=True, origin='test')
EmailFactory(person=person, primary=False, active=False, origin='test')
self.assertTrue(primary.address in person.formatted_email())
def test_profile(self):

View file

@ -101,7 +101,7 @@ with db_con.cursor() as c:
for name in new_aliases:
Alias.objects.create(person=person, name=name)
email, created = Email.objects.get_or_create(address=row.email, person=person)
email, created = Email.objects.get_or_create(address=row.email, person=person, origin=__name__)
if created:
print "created email", email

View file

@ -299,18 +299,16 @@ def get_meeting_registration_data(meeting):
person = Person.objects.create(
name=regname,
ascii=ascii_name,
affiliation=affiliation,
user=user,
)
# Create an associated Email address for this Person
email, __ = Email.objects.get_or_create(
person=person,
address=address[:64],
)
try:
email = Email.objects.get(person=person, address=address[:64])
except Email.DoesNotExist:
email = Email.objects.create(person=person, address=address[:64], origin='ietf %s registration'%meeting.number)
if email.address != address:
debug.say("Truncated address: %s --> %s" % (address, email.address))
# If this is the only email address, set primary to true.
# If the person already existed (found through Alias) and

View file

@ -136,7 +136,7 @@ def docevent_from_submission(request, submission, desc, who=None):
else:
submitter_parsed = submission.submitter_parsed()
if submitter_parsed["name"] and submitter_parsed["email"]:
by, _ = ensure_person_email_info_exists(submitter_parsed["name"], submitter_parsed["email"])
by, _ = ensure_person_email_info_exists(submitter_parsed["name"], submitter_parsed["email"], submission.name)
else:
by = system
@ -190,7 +190,7 @@ def post_submission(request, submission, approvedDesc):
system = Person.objects.get(name="(System)")
submitter_parsed = submission.submitter_parsed()
if submitter_parsed["name"] and submitter_parsed["email"]:
submitter, _ = ensure_person_email_info_exists(submitter_parsed["name"], submitter_parsed["email"])
submitter, _ = ensure_person_email_info_exists(submitter_parsed["name"], submitter_parsed["email"], submission.name)
submitter_info = u'%s <%s>' % (submitter_parsed["name"], submitter_parsed["email"])
else:
submitter = system
@ -428,7 +428,7 @@ def get_person_from_name_email(name, email):
return None
def ensure_person_email_info_exists(name, email):
def ensure_person_email_info_exists(name, email, docname):
addr = email
email = None
person = get_person_from_name_email(name, addr)
@ -461,7 +461,7 @@ def ensure_person_email_info_exists(name, email):
email = Email.objects.get(address=addr,person__isnull=True)
except Email.DoesNotExist:
# most likely we just need to create it
email = Email(address=addr)
email = Email(address=addr, origin=docname)
email.active = active
email.person = person
@ -474,7 +474,7 @@ def ensure_person_email_info_exists(name, email):
def update_authors(draft, submission):
persons = []
for order, author in enumerate(submission.authors):
person, email = ensure_person_email_info_exists(author["name"], author.get("email"))
person, email = ensure_person_email_info_exists(author["name"], author.get("email"), submission.name)
a = DocumentAuthor.objects.filter(document=draft, person=person).first()
if not a:

View file

@ -38,7 +38,7 @@ def create_person(group, role_name, name=None, username=None, email_address=None
user.set_password(password)
user.save()
person = Person.objects.create(name=name, ascii=unidecode_name(smart_text(name)), user=user)
email = Email.objects.create(address=email_address, person=person)
email = Email.objects.create(address=email_address, person=person, origin='test')
Role.objects.create(group=group, name_id=role_name, person=person, email=email)
return person
@ -61,7 +61,7 @@ def make_immutable_base_data():
# system
system_person = Person.objects.create(name="(System)", ascii="(System)")
Email.objects.create(address="", person=system_person)
Email.objects.create(address="", person=system_person, origin='test')
# high-level groups
ietf = create_group(name="IETF", acronym="ietf", type_id="ietf")
@ -112,7 +112,7 @@ def make_immutable_base_data():
for i in range(1, 10):
u = User.objects.create(username="ad%s" % i)
p = Person.objects.create(name="Ad No%s" % i, ascii="Ad No%s" % i, user=u)
email = Email.objects.create(address="ad%s@ietf.org" % i, person=p)
email = Email.objects.create(address="ad%s@ietf.org" % i, person=p, origin='test')
if i < 6:
# active
Role.objects.create(name_id="ad", group=area, person=p, email=email)
@ -232,7 +232,7 @@ def make_test_data():
u.set_password("plain+password")
u.save()
plainman = Person.objects.create(name="Plain Man", ascii="Plain Man", user=u)
email = Email.objects.create(address="plain@example.com", person=plainman)
email = Email.objects.create(address="plain@example.com", person=plainman, origin='test')
# group personnel
create_person(mars_wg, "chair", name="WG Cháir Man", username="marschairman")
@ -473,7 +473,7 @@ def make_review_data(doc):
u.set_password("reviewer+password")
u.save()
reviewer = Person.objects.create(name=u"Some Réviewer", ascii="Some Reviewer", user=u)
email = Email.objects.create(address="reviewer@example.com", person=reviewer)
email = Email.objects.create(address="reviewer@example.com", person=reviewer, origin='test')
for team in (team1, team2, team3):
Role.objects.create(name_id="reviewer", person=reviewer, email=email, group=team)
@ -496,14 +496,14 @@ def make_review_data(doc):
u.set_password("reviewsecretary+password")
u.save()
reviewsecretary = Person.objects.create(name=u"Réview Secretary", ascii="Review Secretary", user=u)
reviewsecretary_email = Email.objects.create(address="reviewsecretary@example.com", person=reviewsecretary)
reviewsecretary_email = Email.objects.create(address="reviewsecretary@example.com", person=reviewsecretary, origin='test')
Role.objects.create(name_id="secr", person=reviewsecretary, email=reviewsecretary_email, group=team1)
u = User.objects.create(username="reviewsecretary3")
u.set_password("reviewsecretary3+password")
u.save()
reviewsecretary3 = Person.objects.create(name=u"Réview Secretary3", ascii="Review Secretary3", user=u)
reviewsecretary3_email = Email.objects.create(address="reviewsecretary3@example.com", person=reviewsecretary)
reviewsecretary3_email = Email.objects.create(address="reviewsecretary3@example.com", person=reviewsecretary, origin='test')
Role.objects.create(name_id="secr", person=reviewsecretary3, email=reviewsecretary3_email, group=team3)
return review_req