Added Email origin to Email record creation throughout the codebase.

- Legacy-Id: 15149
This commit is contained in:
Henrik Levkowetz 2018-05-17 16:56:26 +00:00
parent 619b20d2e7
commit 6c3ec5b18e
12 changed files with 45 additions and 5 deletions

View file

@ -954,6 +954,9 @@ def edit_shepherd(request, name):
events = []
doc.shepherd = form.cleaned_data['shepherd']
if not doc.shepherd.origin:
doc.shepherd.origin = 'shepherd: %s' % doc.name
doc.shepherd.save()
c = DocEvent(type="added_comment", doc=doc, rev=doc.rev, by=request.user.person)
c.desc = "Document shepherd changed to "+ (doc.shepherd.person.name if doc.shepherd else "(None)")

View file

@ -958,6 +958,10 @@ def edit(request, group_type=None, acronym=None, action="edit", field=None):
group.role_set.filter(name=slug).delete()
for e in new:
Role.objects.get_or_create(name_id=slug, email=e, group=group, person=e.person)
if not e.origin or e.origin == e.person.user.username:
e.origin = "role: %s %s" % (group.acronym, slug)
e.save()
added = set(new) - set(old)
deleted = set(old) - set(new)
if added:
@ -1206,6 +1210,9 @@ def stream_edit(request, acronym):
group.role_set.filter(name=slug).delete()
for e in new:
Role.objects.get_or_create(name_id=slug, email=e, group=group, person=e.person)
if not e.origin or e.origin == e.person.user.username:
e.origin = "role: %s %s" % (group.acronym, slug)
e.save()
return redirect("ietf.group.views.streams")
else:

View file

@ -500,6 +500,15 @@ class OutgoingLiaisonForm(LiaisonModelForm):
if has_role(self.user, "Liaison Manager"):
self.fields['to_groups'].initial = [queryset.first()]
def save(self, commit=False):
instance = super(EditModelForm, self).save(commit=False)
if 'from_contact' in self.changed_data:
email = self.cleaned_data.get('from_contact')
if not email.origin:
email.origin = "liaison: %s" % (','.join([ g.acronym for g in instance.from_groups.all() ]))
email.save()
class EditLiaisonForm(LiaisonModelForm):
def __init__(self, *args, **kwargs):
super(EditLiaisonForm, self).__init__(*args, **kwargs)

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, origin=nomcom.group.acronym)
email = Email.objects.create(address=candidate_email, origin="nominee: %s" % nomcom.group.acronym)
person = Person.objects.create(name=candidate_name,
ascii=unidecode_name(candidate_name),
)

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, origin=__name__)
email, created = Email.objects.get_or_create(address=row.email, person=person, origin="import: %s" % __name__)
if created:
print "created email", email

View file

@ -214,6 +214,10 @@ def people(request, name):
# create role
Role.objects.create(name_id='pre-ad',group=area,email=email,person=person)
if not email.origin or email.origin == person.user.username:
email.origin = "role: %s %s" % (area.acronym, 'pre-ad')
email.save()
messages.success(request, 'New Area Director added successfully!')
return redirect('ietf.secr.areas.views.view', name=name)
else:

View file

@ -178,6 +178,12 @@ class EditModelForm(forms.ModelForm):
else:
m.tags.remove('rfc-rev')
if 'shepherd' in self.changed_data:
email = self.cleaned_data.get('shepherd')
if not email.origin:
email.origin = 'shepherd: %s' % m.name
email.save()
# handle replaced by
return m

View file

@ -193,6 +193,9 @@ class RoleForm(forms.Form):
name = cleaned_data['name']
group_acronym = cleaned_data['group_acronym']
if email.person != person:
raise forms.ValidationError('ERROR: The person associated with the chosen email address is different from the chosen person')
if Role.objects.filter(name=name,group=self.group,person=person,email=email):
raise forms.ValidationError('ERROR: This is a duplicate entry')

View file

@ -347,6 +347,10 @@ def people(request, acronym):
email=email,
group=group)
if not email.origin or email.origin == person.user.username:
email.origin = "role: %s %s" % (group.acronym, name.slug)
email.save()
messages.success(request, 'New %s added successfully!' % name)
return redirect('ietf.secr.groups.views.people', acronym=group.acronym)
else:

View file

@ -93,6 +93,10 @@ def main(request):
email=email,
group=group)
if not email.origin or email.origin == person.user.username:
email.origin = "role: %s %s" % (group.acronym, name.slug)
email.save()
messages.success(request, 'New %s added successfully!' % name)
url = reverse('ietf.secr.roles.views.main') + '?group=%s' % group.acronym
return HttpResponseRedirect(url)

View file

@ -306,7 +306,7 @@ def get_meeting_registration_data(meeting):
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)
email = Email.objects.create(person=person, address=address[:64], origin='registration: ietf-%s'%meeting.number)
if email.address != address:
debug.say("Truncated address: %s --> %s" % (address, email.address))

View file

@ -452,7 +452,7 @@ def ensure_person_email_info_exists(name, email, docname):
try:
email = person.email_set.get(address=addr)
email.origin = docname # overwrite earlier origin
email.origin = "author: %s" % docname # overwrite earlier origin
email.save()
except Email.DoesNotExist:
try:
@ -468,7 +468,7 @@ def ensure_person_email_info_exists(name, email, docname):
email.person = person
if email.time is None:
email.time = datetime.datetime.now()
email.origin = docname
email.origin = "author: %s" % docname
email.save()
return person, email