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 pyquery import PyQuery
from io import StringIO from io import StringIO
from django.http import HttpRequest
from django.urls import reverse as urlreverse from django.urls import reverse as urlreverse
from django.utils.encoding import iri_to_uri from django.utils.encoding import iri_to_uri
@ -229,13 +231,17 @@ class PersonUtilsTests(TestCase):
self.assertTrue(source_alias in target.alias_set.all()) self.assertTrue(source_alias in target.alias_set.all())
def test_merge_persons(self): 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() source = PersonFactory()
target = PersonFactory() target = PersonFactory()
source_id = source.pk source_id = source.pk
source_email = source.email_set.first() source_email = source.email_set.first()
source_alias = source.alias_set.first() source_alias = source.alias_set.first()
source_user = source.user 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_email in target.email_set.all())
self.assertTrue(source_alias in target.alias_set.all()) self.assertTrue(source_alias in target.alias_set.all())
self.assertFalse(Person.objects.filter(id=source_id)) self.assertFalse(Person.objects.filter(id=source_id))

View file

@ -9,7 +9,6 @@ import sys
import syslog import syslog
from django.contrib import admin from django.contrib import admin
from django.contrib.auth.models import User
from django.core.cache import cache from django.core.cache import cache
from django.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist
@ -18,7 +17,7 @@ import debug # pyflakes:ignore
from ietf.person.models import Person from ietf.person.models import Person
from ietf.utils.mail import send_mail 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 = [] changes = []
# write log # 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 # check for any remaining relationships and exit if more found
objs = [source] objs = [source]
opts = Person._meta # request.user = User.objects.filter(is_superuser=True).first()
user = User.objects.filter(is_superuser=True).first() deletable_objects = admin.utils.get_deleted_objects(objs, request, admin.site)
admin_site = admin.site
using = 'default'
deletable_objects = admin.utils.get_deleted_objects(
objs, opts, user, admin_site, using)
deletable_objects_summary = deletable_objects[1] deletable_objects_summary = deletable_objects[1]
if len(deletable_objects_summary) > 1: # should only inlcude one object (Person) if len(deletable_objects_summary) > 1: # should only inlcude one object (Person)
print("Not Deleting Person: {}({})".format(source.ascii,source.pk), file=file) print("Not Deleting Person: {}({})".format(source.ascii,source.pk), file=file)
@ -194,7 +189,6 @@ def get_active_balloters(ballot_type):
return active_balloters return active_balloters
def get_active_ads(): def get_active_ads():
from ietf.person.models import Person
cache_key = "doc:active_ads" cache_key = "doc:active_ads"
active_ads = cache.get(cache_key) active_ads = cache.get(cache_key)
if not active_ads: if not active_ads:
@ -203,7 +197,6 @@ def get_active_ads():
return active_ads return active_ads
def get_active_irsg(): def get_active_irsg():
from ietf.person.models import Person
cache_key = "doc:active_irsg_balloters" cache_key = "doc:active_irsg_balloters"
active_irsg_balloters = cache.get(cache_key) active_irsg_balloters = cache.get(cache_key)
if not active_irsg_balloters: if not active_irsg_balloters:

View file

@ -111,7 +111,7 @@ def merge(request):
target = form.cleaned_data.get('target') target = form.cleaned_data.get('target')
# Do merge with force # Do merge with force
output = StringIO() output = StringIO()
success, changes = merge_persons(source, target, file=output) success, changes = merge_persons(request, source, target, file=output)
if success: if success:
messages.success(request, 'Merged {} ({}) to {} ({}). {})'.format( messages.success(request, 'Merged {} ({}) to {} ({}). {})'.format(
source.name, source_id, target.name, target.id, changes)) source.name, source_id, target.name, target.id, changes))