Adjusted the code to the changed signature of admin.utils.get_deleted_objects()
- Legacy-Id: 18053
This commit is contained in:
parent
7c7c5da39f
commit
06fa5e517a
|
@ -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))
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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))
|
||||||
|
|
Loading…
Reference in a new issue