Update secr.rolodex app to deactivate old Users when replaced on edit. Fixes #2001. Commit ready for merge.
- Legacy-Id: 13726
This commit is contained in:
parent
7768e7c6b3
commit
a251076903
|
@ -67,7 +67,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):
|
||||
|
@ -86,7 +86,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
|
||||
|
||||
|
||||
|
@ -24,4 +25,37 @@ class RolodexTestCase(TestCase):
|
|||
response = self.client.get(url)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
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',
|
||||
}
|
||||
#print person.user
|
||||
#self.assertTrue(False)
|
||||
original_user = person.user
|
||||
person_id = person.pk
|
||||
response = self.client.post(url, post_data, follow=True)
|
||||
print response.content
|
||||
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)
|
||||
|
|
|
@ -7,6 +7,7 @@ from django.shortcuts import render, get_object_or_404, redirect
|
|||
|
||||
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