Merged in [13726] from rcross@amsl.com:
Update secr.rolodex app to deactivate old Users when replaced on edit. Fixes #2001.
- Legacy-Id: 13735
Note: SVN reference [13726] has been migrated to Git commit a251076903
This commit is contained in:
commit
ade8973015
|
@ -70,7 +70,7 @@ def get_extra_primary(source,target):
|
|||
|
||||
def handle_users(source,target,check_only=False):
|
||||
'''
|
||||
Deletes extra Users. Retains target user. If check_only == True, just return a string
|
||||
Deactivates extra Users. Retains target user. If check_only == True, just return a string
|
||||
describing action, otherwise perform user changes and return string.
|
||||
'''
|
||||
if not (source.user or target.user):
|
||||
|
@ -89,7 +89,7 @@ def handle_users(source,target,check_only=False):
|
|||
message = "DATATRACKER LOGIN ACTION: retaining login: {}, removing login: {}".format(target.user,source.user)
|
||||
if not check_only:
|
||||
merge_users(source.user, target.user)
|
||||
syslog.syslog('merge-person-records: deleting user {}'.format(source.user.username))
|
||||
syslog.syslog('merge-person-records: deactivating user {}'.format(source.user.username))
|
||||
user = source.user
|
||||
source.user = None
|
||||
source.save()
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
from django.urls import reverse
|
||||
|
||||
from ietf.utils.test_utils import TestCase
|
||||
from ietf.person.models import Person
|
||||
from ietf.person.factories import PersonFactory, UserFactory
|
||||
from ietf.person.models import Person, User
|
||||
from ietf.utils.test_data import make_test_data
|
||||
|
||||
|
||||
|
@ -46,4 +47,35 @@ class RolodexTestCase(TestCase):
|
|||
person = Person.objects.get(name='Joe Smith')
|
||||
view_url = reverse('ietf.secr.rolodex.views.view', kwargs={'id':person.pk})
|
||||
self.assertRedirects(response, view_url)
|
||||
|
||||
|
||||
def test_edit_replace_user(self):
|
||||
person = PersonFactory()
|
||||
user = UserFactory()
|
||||
url = reverse('ietf.secr.rolodex.views.edit', kwargs={'id':person.id})
|
||||
redirect_url = reverse('ietf.secr.rolodex.views.view', kwargs={'id':person.id})
|
||||
self.client.login(username="secretary", password="secretary+password")
|
||||
response = self.client.get(url)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
post_data = {
|
||||
'name': person.name,
|
||||
'ascii': person.ascii,
|
||||
'ascii_short': person.ascii_short,
|
||||
'affiliation': person.affiliation,
|
||||
'address': person.address,
|
||||
'user': user.username,
|
||||
'email-0-person':person.pk,
|
||||
'email-0-address': person.email_address,
|
||||
'email-TOTAL_FORMS':1,
|
||||
'email-INITIAL_FORMS':1,
|
||||
'email-MIN_NUM_FORMS':0,
|
||||
'email-MAX_NUM_FORMS':1000,
|
||||
'submit': 'Submit',
|
||||
}
|
||||
original_user = person.user
|
||||
person_id = person.pk
|
||||
response = self.client.post(url, post_data, follow=True)
|
||||
person = Person.objects.get(id=person_id)
|
||||
original_user = User.objects.get(id=original_user.id)
|
||||
self.assertRedirects(response, redirect_url)
|
||||
self.assertEqual(person.user, user)
|
||||
self.assertTrue(not original_user.is_active)
|
||||
|
|
|
@ -8,6 +8,7 @@ from django.urls import reverse
|
|||
|
||||
from ietf.ietfauth.utils import role_required
|
||||
from ietf.person.models import Person, Email, Alias
|
||||
from ietf.person.utils import merge_users
|
||||
from ietf.secr.rolodex.forms import EditPersonForm, EmailForm, NameForm, NewPersonForm, SearchForm
|
||||
|
||||
|
||||
|
@ -174,8 +175,15 @@ def edit(request, id):
|
|||
person_form.save()
|
||||
email_formset.save()
|
||||
|
||||
# add new names to alias
|
||||
|
||||
if 'user' in person_form.changed_data and person_form.initial['user']:
|
||||
try:
|
||||
source = User.objects.get(username=person_form.initial['user'])
|
||||
merge_users(source, person_form.cleaned_data['user'])
|
||||
source.is_active = False
|
||||
source.save()
|
||||
except User.DoesNotExist:
|
||||
pass
|
||||
|
||||
messages.success(request, 'The Rolodex entry was changed successfully')
|
||||
return redirect('ietf.secr.rolodex.views.view', id=id)
|
||||
|
||||
|
|
Loading…
Reference in a new issue