From da9857d8b75e5a7f7fc78db438ab5d57ccc5bba3 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Thu, 10 Oct 2019 18:51:55 +0200 Subject: [PATCH] manager: show user deletion status (#36788) --- .../authentic2/manager/user_detail.html | 6 +++++ .../migrations/0025_auto_20191009_1047.py | 22 +++++++++++++++++++ src/authentic2/models.py | 5 ++++- tests/test_user_manager.py | 11 +++++++++- 4 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 src/authentic2/migrations/0025_auto_20191009_1047.py diff --git a/src/authentic2/manager/templates/authentic2/manager/user_detail.html b/src/authentic2/manager/templates/authentic2/manager/user_detail.html index 1968e09b..1df94dcd 100644 --- a/src/authentic2/manager/templates/authentic2/manager/user_detail.html +++ b/src/authentic2/manager/templates/authentic2/manager/user_detail.html @@ -42,6 +42,12 @@ {% block other_actions %} + {% if object.deletion %} +

+ {% blocktrans with date=object.deletion.creation %}Prepared for deletion since {{ date }}{% endblocktrans %} +

+ {% endif %} +

{% if object.last_login %} {% blocktrans with date=object.last_login %}Last login on {{ date }}.{% endblocktrans %} diff --git a/src/authentic2/migrations/0025_auto_20191009_1047.py b/src/authentic2/migrations/0025_auto_20191009_1047.py new file mode 100644 index 00000000..e0c33de4 --- /dev/null +++ b/src/authentic2/migrations/0025_auto_20191009_1047.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.20 on 2019-10-09 08:47 +from __future__ import unicode_literals + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('authentic2', '0024_auto_20190617_1113'), + ] + + operations = [ + migrations.AlterField( + model_name='deleteduser', + name='user', + field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='deletion', to=settings.AUTH_USER_MODEL, verbose_name='user'), + ), + ] diff --git a/src/authentic2/models.py b/src/authentic2/models.py index 6f4b9991..fcdeadfe 100644 --- a/src/authentic2/models.py +++ b/src/authentic2/models.py @@ -47,7 +47,10 @@ class DeletedUser(models.Model): objects = managers.DeletedUserManager() - user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=_('user')) + user = models.OneToOneField( + to=settings.AUTH_USER_MODEL, + related_name='deletion', + verbose_name=_('user')) creation = models.DateTimeField(auto_now_add=True, verbose_name=_('creation date')) class Meta: diff --git a/tests/test_user_manager.py b/tests/test_user_manager.py index 7a6a880e..ad895e58 100644 --- a/tests/test_user_manager.py +++ b/tests/test_user_manager.py @@ -29,7 +29,7 @@ from django.utils.six import text_type from django_rbac.utils import get_ou_model from authentic2.custom_user.models import User -from authentic2.models import Attribute, AttributeValue +from authentic2.models import Attribute, AttributeValue, DeletedUser from authentic2.a2_rbac.utils import get_default_ou from authentic2.manager import user_import @@ -426,3 +426,12 @@ def test_user_import_attributes(transactional_db, app, admin, media): assert 'birthdate' not in et.attributes.values assert et.attributes.values['zip'].content == '42000' assert et.attributes.values['phone'].content == '+8885678' + + +def test_detail_view(app, admin, simple_user): + url = '/manage/users/{user.id}/'.format(user=simple_user) + response = login(app, admin, url) + assert not response.pyquery('.a2-manager-user-deletion') + DeletedUser.objects.create(user=simple_user) + response = app.get(url) + assert response.pyquery('.a2-manager-user-deletion') -- 2.23.0