sync-tabellio: do not crash if a user to desactivate has multiple accounts (#57393)
This commit is contained in:
parent
aa2b3dcaf6
commit
0eb7acf9a5
|
@ -110,26 +110,24 @@ class Command(BaseCommand):
|
|||
|
||||
username = get_username(last_name, first_name)
|
||||
|
||||
try:
|
||||
user = User.objects.get(first_name=first_name, last_name=last_name, is_active=True)
|
||||
except User.DoesNotExist:
|
||||
to_disable_users = User.objects.filter(first_name=first_name, last_name=last_name, is_active=True)
|
||||
if not to_disable_users.count():
|
||||
# a user didn't exist for that person, fine.
|
||||
continue
|
||||
for user in to_disable_users:
|
||||
if verbose:
|
||||
print('disabling', username)
|
||||
# disable the user
|
||||
user.is_active = False
|
||||
user.save()
|
||||
|
||||
if verbose:
|
||||
print('disabling', username)
|
||||
|
||||
# disable the user
|
||||
user.is_active = False
|
||||
user.save()
|
||||
|
||||
# remove the user from lists
|
||||
if user in parl_list.members.all():
|
||||
parl_list.members.remove(user)
|
||||
parl_list.save()
|
||||
if user in ministres_list.members.all():
|
||||
ministres_list.members.remove(user)
|
||||
ministres_list.save()
|
||||
# remove the user from lists
|
||||
if user in parl_list.members.all():
|
||||
parl_list.members.remove(user)
|
||||
parl_list.save()
|
||||
if user in ministres_list.members.all():
|
||||
ministres_list.members.remove(user)
|
||||
ministres_list.save()
|
||||
|
||||
# get current deputies
|
||||
deputies = {}
|
||||
|
|
|
@ -188,6 +188,31 @@ def test_remove_deputy_because_no_fonction(session, db, ministres_list, parl_lis
|
|||
session.bind.engine.dispose()
|
||||
|
||||
|
||||
def test_remove_user_does_not_crash_if_multiple_active_user_found(session, db, ministres_list, parl_list):
|
||||
user = User.objects.create(first_name='John', last_name='Doe', email='john@doe.be')
|
||||
assert user.is_active
|
||||
parl_list.members.add(user)
|
||||
assert parl_list.members.count() == 1
|
||||
user_bis = User.objects.create(
|
||||
first_name='John', last_name='Doe', email='john+bis@doe.be', username='johndoebis'
|
||||
)
|
||||
assert user_bis.is_active
|
||||
|
||||
deputy = create_deputy(session, 'John', 'Doe', 'john@doe.be', compol_name='foo')
|
||||
# make him not deputy anymore
|
||||
histo = deputy.tperhistolines[0]
|
||||
histo.fin = datetime.now()
|
||||
session.add(histo)
|
||||
session.commit()
|
||||
management.call_command('sync-tabellio', '--verbosity', '2')
|
||||
|
||||
user = User.objects.get(first_name='John', last_name='Doe', email='john@doe.be')
|
||||
assert not user.is_active
|
||||
user_bis = User.objects.get(first_name='John', last_name='Doe', email='john+bis@doe.be')
|
||||
assert not user_bis.is_active
|
||||
assert parl_list.members.count() == 0
|
||||
|
||||
|
||||
def test_remove_deputy_because_become_ministre(session, db, ministres_list, parl_list):
|
||||
user = User.objects.create(first_name='John', last_name='Doe', email='john@doe.be')
|
||||
assert user.is_active
|
||||
|
|
Loading…
Reference in New Issue