Development #30103
Export csv - mauvaise gestion des attributs
0%
Description
Suite à #30091 on se retrouve avec :
Internal Server Error: /manage/users/export/csv/ Traceback (most recent call last): File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py", line 132, in get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/usr/lib/python2.7/dist-packages/django/contrib/auth/decorators.py", line 22, in _wrapped_view return view_func(request, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/django/views/generic/base.py", line 71, in view return self.dispatch(request, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/authentic2/manager/views.py", line 126, in dispatch return super(PermissionMixin, self).dispatch(request, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/authentic2/manager/views.py", line 178, in dispatch return super(SearchFormMixin, self).dispatch(request, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/django/views/generic/base.py", line 89, in dispatch return handler(request, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/authentic2/manager/views.py", line 364, in get content = getattr(self.get_dataset(), export_format) File "/usr/lib/python2.7/dist-packages/authentic2/manager/user_views.py", line 361, in get_dataset user_attrs[av['object_id']][at_mapping[av['attribute_id']].name] = av['content'] KeyError: 5
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Emmanuel Cazenave il y a plus de 5 ans
- Statut changé de Nouveau à En cours
- Assigné à mis à Emmanuel Cazenave
- Priorité changé de Normal à Haut
Des utilisateurs qui ont un attribut pour lequel n'existe plus la définition de l'attribut.
Mais que fait la police des attributs ?
Mis à jour par Emmanuel Cazenave il y a plus de 5 ans
Emmanuel Cazenave a écrit :
Des utilisateurs qui ont un attribut pour lequel n'existe plus la définition de l'attribut.
Des attributs désactivés.
Mis à jour par Serghei Mihai il y a plus de 5 ans
Yep:
objects = managers.AttributeManager(disabled=False) all_objects = managers.AttributeManager()
Donc quand on fait un appel au manager par défaut on n'a que les attributs actifs.
Je serais pour inverser la logique:
objects = managers.AttributeManager() active_objects = managers.AttributeManager(disabled=False)
ça évitera les oublis quand on travaille avec les attributs. Mais je ne mésure par l'impact sur le reste.
Mis à jour par Benjamin Dauvergne il y a plus de 5 ans
Je dirai que les attributs désactivés on ne les exporte pas, ne pas changer le code dans models.py pour ce problème.
Mis à jour par Emmanuel Cazenave il y a plus de 5 ans
- Fichier 0001-user-export-csv-exclude-disabled-attributes-30103.patch 0001-user-export-csv-exclude-disabled-attributes-30103.patch ajouté
- Statut changé de En cours à Solution proposée
- Patch proposed changé de Non à Oui
Et donc at_mapping = {a.id: a for a in Attribute.objects.all()}
qui ne sort que les attributs actifs, parce qu'il y a un filtre intégré au manager,
mais pas la même chose sur le manager de AttributeValue donc boum.
Je filtre en SQL, plutôt que de rajouter un if
, pas de changement de performance notable.
Mis à jour par Serghei Mihai il y a plus de 5 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Benjamin Dauvergne il y a plus de 5 ans
- Lié à Bug #30113: Le manager de AttributeValue devrait filtrer comme le manager par défaut d'Attribute ajouté
Mis à jour par Emmanuel Cazenave il y a environ 5 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 870bc65026a55c0b1c011a9b23d2b5e575ea5ce3 Author: Emmanuel Cazenave <ecazenave@entrouvert.com> Date: Fri Jan 25 15:29:50 2019 +0100 user export csv : exclude disabled attributes (#30103)
Mis à jour par Frédéric Péters il y a environ 5 ans
- Statut changé de Résolu (à déployer) à Solution déployée
user export csv : exclude disabled attributes (#30103)