Send mail to the secretariat when a Person is created with the same name as some other Person objects in case its a duplicate that needs to be merged. Fixes ticket #1553. Commit ready to merge.
- Legacy-Id: 8726
This commit is contained in:
parent
1d7d5dd32e
commit
f5325272f8
|
@ -3,10 +3,14 @@
|
|||
import datetime
|
||||
from urlparse import urljoin
|
||||
|
||||
from django.conf import settings
|
||||
|
||||
from django.db import models
|
||||
from django.contrib.auth.models import User
|
||||
from django.template.loader import render_to_string
|
||||
|
||||
from ietf.person.name import name_parts, initials
|
||||
from ietf.utils.mail import send_mail_preformatted
|
||||
|
||||
class PersonInfo(models.Model):
|
||||
time = models.DateTimeField(default=datetime.datetime.now) # When this Person record entered the system
|
||||
|
@ -76,6 +80,18 @@ class PersonInfo(models.Model):
|
|||
class Person(PersonInfo):
|
||||
user = models.OneToOneField(User, blank=True, null=True)
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
created = not self.pk
|
||||
super(Person, self).save(*args, **kwargs)
|
||||
if created:
|
||||
if Person.objects.filter(name=self.name).count() > 1 :
|
||||
msg = render_to_string('person/mail/possible_duplicates.txt',
|
||||
dict(name=self.name,
|
||||
persons=Person.objects.filter(name=self.name),
|
||||
settings=settings
|
||||
))
|
||||
send_mail_preformatted(None, msg)
|
||||
|
||||
#this variable, if not None, may be used by url() to keep the sitefqdn.
|
||||
default_hostscheme = None
|
||||
|
||||
|
|
16
ietf/templates/person/mail/possible_duplicates.txt
Normal file
16
ietf/templates/person/mail/possible_duplicates.txt
Normal file
|
@ -0,0 +1,16 @@
|
|||
{% load ietf_filters %}{% load mail_filters %}{% autoescape off %}From: {{settings.SERVER_EMAIL}}
|
||||
To: <iesg-secretary@ietf.org>
|
||||
Subject: Possible duplicate Person objects for {{name}}
|
||||
|
||||
A new Person object was just created for {{name}}.
|
||||
|
||||
There are now {{persons|length}} Person objects sharing that name.
|
||||
|
||||
Please check to see if they represent the same actual person, and if so, merge the objects as appropriate.
|
||||
|
||||
{% for person in persons %}Person {{forloop.counter}} (pk={{person.pk}})
|
||||
time: {{person.time}}
|
||||
ascii: {{person.ascii}}
|
||||
email: {% for email in person.email_set.all %}{{ email.address }} {% endfor %}
|
||||
|
||||
{% endfor %} {% endautoescape %}
|
Loading…
Reference in a new issue