diff --git a/ietf/person/tests.py b/ietf/person/tests.py index f0c7196b6..61089eee5 100644 --- a/ietf/person/tests.py +++ b/ietf/person/tests.py @@ -6,6 +6,8 @@ import datetime from pyquery import PyQuery from io import StringIO + +from django.http import HttpRequest from django.urls import reverse as urlreverse from django.utils.encoding import iri_to_uri @@ -229,13 +231,17 @@ class PersonUtilsTests(TestCase): self.assertTrue(source_alias in target.alias_set.all()) def test_merge_persons(self): + secretariat_role = RoleFactory(group__acronym='secretariat', name_id='secr') + user = secretariat_role.person.user + request = HttpRequest() + request.user = user source = PersonFactory() target = PersonFactory() source_id = source.pk source_email = source.email_set.first() source_alias = source.alias_set.first() source_user = source.user - merge_persons(source, target, file=StringIO()) + merge_persons(request, source, target, file=StringIO()) self.assertTrue(source_email in target.email_set.all()) self.assertTrue(source_alias in target.alias_set.all()) self.assertFalse(Person.objects.filter(id=source_id)) diff --git a/ietf/person/utils.py b/ietf/person/utils.py index 8afe79791..b19931813 100755 --- a/ietf/person/utils.py +++ b/ietf/person/utils.py @@ -9,7 +9,6 @@ import sys import syslog from django.contrib import admin -from django.contrib.auth.models import User from django.core.cache import cache from django.core.exceptions import ObjectDoesNotExist @@ -18,7 +17,7 @@ import debug # pyflakes:ignore from ietf.person.models import Person from ietf.utils.mail import send_mail -def merge_persons(source, target, file=sys.stdout, verbose=False): +def merge_persons(request, source, target, file=sys.stdout, verbose=False): changes = [] # write log @@ -44,12 +43,8 @@ def merge_persons(source, target, file=sys.stdout, verbose=False): # check for any remaining relationships and exit if more found objs = [source] - opts = Person._meta - user = User.objects.filter(is_superuser=True).first() - admin_site = admin.site - using = 'default' - deletable_objects = admin.utils.get_deleted_objects( - objs, opts, user, admin_site, using) +# request.user = User.objects.filter(is_superuser=True).first() + deletable_objects = admin.utils.get_deleted_objects(objs, request, admin.site) deletable_objects_summary = deletable_objects[1] if len(deletable_objects_summary) > 1: # should only inlcude one object (Person) print("Not Deleting Person: {}({})".format(source.ascii,source.pk), file=file) @@ -194,7 +189,6 @@ def get_active_balloters(ballot_type): return active_balloters def get_active_ads(): - from ietf.person.models import Person cache_key = "doc:active_ads" active_ads = cache.get(cache_key) if not active_ads: @@ -203,7 +197,6 @@ def get_active_ads(): return active_ads def get_active_irsg(): - from ietf.person.models import Person cache_key = "doc:active_irsg_balloters" active_irsg_balloters = cache.get(cache_key) if not active_irsg_balloters: diff --git a/ietf/person/views.py b/ietf/person/views.py index dade5c1ff..0fb967743 100644 --- a/ietf/person/views.py +++ b/ietf/person/views.py @@ -111,7 +111,7 @@ def merge(request): target = form.cleaned_data.get('target') # Do merge with force output = StringIO() - success, changes = merge_persons(source, target, file=output) + success, changes = merge_persons(request, source, target, file=output) if success: messages.success(request, 'Merged {} ({}) to {} ({}). {})'.format( source.name, source_id, target.name, target.id, changes))