Adjusted the code to the changed signature of admin.utils.get_deleted_objects()

- Legacy-Id: 18053
This commit is contained in:
Henrik Levkowetz 2020-06-24 20:39:27 +00:00
parent 7c7c5da39f
commit 06fa5e517a
3 changed files with 11 additions and 12 deletions

View file

@ -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))

View file

@ -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:

View file

@ -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))