Development #51808
retrouver dans le journal qui a supprimé un utilisateur
0%
Description
Dans un ticket (#36735) je répondais qu'avec le journal des actions on pourrait voir qui a supprimé un compte mais il semble que ça ne soit pas le cas. (cf capture)
Fichiers
Révisions associées
manager: search deleted users by email (#51808)
manager: show deleted users informations in journal (#51808)
Historique
Mis à jour par Benjamin Dauvergne il y a environ 3 ans
Ben c'est Frédéric P. qui a supprimé son propre comptes, la règle c'est que la colonne utilisateur est toujours celui qui a fait l'action, mais je pense qu'on pourrait changer la traduction en "suppression de son compte".
Mis à jour par Frédéric Péters il y a environ 3 ans
Non j'ai supprimé là un compte autre que le mien.
Mis à jour par Benjamin Dauvergne il y a environ 3 ans
Correction:
Si c'est une suppression backoffice ça aurait du afficher suppression du compte "xyz", mais comme il est supprimé il n'est pas retrouvé :
@classmethod def get_message(cls, event, context): (user,) = event.get_typed_references(User) <-- ici on ne retrouve pas l'utilisateur qui est supprimé if context and context == user: return _('deletion by administrator') elif user: return _('deletion of user "%s"') % user.get_full_name() return super().get_message(event, context) <-- et donc on tombe là je pense
Ce que j'avais prévu mais pas implémenté là c'est dans ce cas de faire un tour via DeletedUser pour récupérer ce qu'on peut sur l'utilisateur supprimé (ça vaut pour la colonne user aussi), mais il faudrait faire ça efficacement pour ne pas générer une requête par ligne de log.
Mis à jour par Benjamin Dauvergne il y a environ 3 ans
- Statut changé de Nouveau à Solution proposée
J'ai poussé une première implémentation, ça permet de chercher les utilisateurs supprimés par mail (je ne conserve rien d'autre comme donnée personelle, à voir si on veut conserver le nom) et ça donne un rendu minimal dans le journal :
<tr data-event-id="2938" data-event-cursor="1577926800.0 2938" data-event-type="manager.user.deletion">
<td class="journal-list--timestamp-column">Jan. 2, 2020, 2 a.m.</td>
<td class="journal-list--user-column" data-user-id="265">agent</td>
<td class="journal-list--session-column">abcd</td>
<td class="journal-list--message-column">deletion of user "deleted user (#264, user@example.com)"</td>
</tr>
...
<tr data-event-id="2926" data-event-cursor="1577883600.0 2926" data-event-type="user.password.reset">
<td class="journal-list--timestamp-column">Jan. 1, 2020, 2 p.m.</td>
<td class="journal-list--user-column" data-user-id="14">deleted user (#264, user@example.com)</td>
<td class="journal-list--session-column">-</td>
<td class="journal-list--message-column">password reset</td>
</tr>
Le rendu "deleted user (#264, user@example.com)" est discutable.
+ def __str__(self): + data = ['#%d' % self.old_user_id] + if self.old_email: + data.append(self.old_email) + return _('deleted user (%s)') % ', '.join(data)
Mis à jour par Paul Marillonnet il y a environ 3 ans
Ok mais dans quel cas, à l’appel de la méthode search_by_email
(nouvellement surchargée dans 0002), les événements ressortis par l’objet Q dans
+ user_ct = ContentType.objects.get_for_model(User) + yield Q(reference_ids__contains=[n_2_pairing(user_ct.id, pk) for pk in pks])
ne vont pas faire déjà partie de ceux que l’objet Q généré deux lignes plus haut
+ pks = list(DeletedUser.objects.filter(old_email=email).values_list('old_user_id', flat=True)) + yield Q(user_id__in=pks)
?
Mis à jour par Benjamin Dauvergne il y a presque 3 ans
Paul Marillonnet a écrit :
Ok mais dans quel cas, à l’appel de la méthode
search_by_email
(nouvellement surchargée dans 0002), les événements ressortis par l’objet Q dans
[...]
ne vont pas faire déjà partie de ceux que l’objet Q généré deux lignes plus haut
[...]
?
Ça n'a pas d'importance ce n'est pas une jointure mais un WHERE, si une ligne match à la fois dans user_id et reference_ids elle ne sera retournée quand même qu'une fois.
Mis à jour par Benjamin Dauvergne il y a presque 3 ans
- Fichier 0002-manager-search-deleted-users-by-email-51808.patch 0002-manager-search-deleted-users-by-email-51808.patch ajouté
- Fichier 0003-manager-show-deleted-users-informations-in-journal-5.patch 0003-manager-show-deleted-users-informations-in-journal-5.patch ajouté
- Fichier 0001-journal-permit-custom-prefetching-51808.patch 0001-journal-permit-custom-prefetching-51808.patch ajouté
- Patch proposed changé de Non à Oui
Mis à jour par Benjamin Dauvergne il y a presque 3 ans
- Assigné à
Benjamin Dauvergnesupprimé
Rebasé.
Mis à jour par Paul Marillonnet il y a presque 3 ans
Quelque chose pas conforme pour black ou isort.
ERROR: code-style: commands failed
Mis à jour par Benjamin Dauvergne il y a presque 3 ans
- Fichier 0002-manager-search-deleted-users-by-email-51808.patch 0002-manager-search-deleted-users-by-email-51808.patch ajouté
- Fichier 0003-manager-show-deleted-users-informations-in-journal-5.patch 0003-manager-show-deleted-users-informations-in-journal-5.patch ajouté
- Fichier 0001-journal-permit-custom-prefetching-51808.patch 0001-journal-permit-custom-prefetching-51808.patch ajouté
reformaté.
Mis à jour par Paul Marillonnet il y a presque 3 ans
- Statut changé de Solution proposée à Solution validée
Ok.
Mis à jour par Benjamin Dauvergne il y a presque 3 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit a921332fb2e11ec290f05dd8ff11c81513a8f162 Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Tue Mar 9 23:03:00 2021 +0100 manager: show deleted users informations in journal (#51808) commit 5e29c79224bf5aea89e4415b0c626bf6c6a03a4c Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Tue Mar 9 23:02:23 2021 +0100 manager: search deleted users by email (#51808) commit e77c98b57b621a18c28aef7a8fcb922df320243d Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Tue Mar 9 22:25:10 2021 +0100 journal: permit custom prefetching (#51808)
Mis à jour par Frédéric Péters il y a presque 3 ans
- Statut changé de Résolu (à déployer) à Solution déployée
journal: permit custom prefetching (#51808)