Bug #9293
ValueError: Problem installing fixture '/home/entrouvert/roles-to-prod.json': Cannot use None as a query value
0%
Description
File "/usr/lib/python2.7/dist-packages/django/db/models/fields/related.py", line 1192, in __set__ manager.clear() File "/usr/lib/python2.7/dist-packages/django/db/models/fields/related.py", line 953, in clear model=self.model, pk_set=None, using=db) File "/usr/lib/python2.7/dist-packages/django/dispatch/dispatcher.py", line 198, in send response = receiver(signal=self, sender=sender, **named) File "/usr/lib/python2.7/dist-packages/hobo/agent/authentic2/apps.py", line 169, in provision_user_on_role_change for user in model.objects.filter(pk__in=pk_set): File "/usr/lib/python2.7/dist-packages/django/db/models/manager.py", line 92, in manager_method return getattr(self.get_queryset(), name)(*args, **kwargs) File "/usr/lib/python2.7/dist-packages/django/db/models/query.py", line 691, in filter return self._filter_or_exclude(False, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/django/db/models/query.py", line 709, in _filter_or_exclude clone.query.add_q(Q(*args, **kwargs)) File "/usr/lib/python2.7/dist-packages/django/db/models/sql/query.py", line 1331, in add_q clause, require_inner = self._add_q(where_part, self.used_aliases) File "/usr/lib/python2.7/dist-packages/django/db/models/sql/query.py", line 1358, in _add_q current_negated=current_negated, connector=connector) File "/usr/lib/python2.7/dist-packages/django/db/models/sql/query.py", line 1186, in build_filter value, lookups = self.prepare_lookup_value(value, lookups, can_reuse) File "/usr/lib/python2.7/dist-packages/django/db/models/sql/query.py", line 1081, in prepare_lookup_value raise ValueError("Cannot use None as a query value") ValueError: Problem installing fixture '/home/entrouvert/roles-to-prod.json': Cannot use None as a query value
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Projet changé de Authentic 2 à Hobo
Le problème vient de l'agent authentic, dans le cas d'un évènement pre_clear ou post_clear, pk_set peut être nul.
Mis à jour par Frédéric Péters il y a plus de 8 ans
- Assigné à mis à Benjamin Dauvergne
(je viens de copier de nouveaux rôles en prod et bien sûr de tomber à nouveau sur ça)
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Fichier 0001-agent-authentic2-do-not-propagage-role-changes-on-cl.patch 0001-agent-authentic2-do-not-propagage-role-changes-on-cl.patch ajouté
Bon de toute façon en relisant le code est vraiment buggé et ne fait pas ce qu'il devrait, voilà déjà un patch qui devrait permette au chargement de passer et au modification via /manage aussi (la plupart des .clear() sont suivies de .add() c'est du au code du style user.groups = [x,y,z]
d'assignation direct à un champ m2m).
Pour la solution définitive il faudrait aller vraiment vers un schéma de notification différé, ou dans les pre_(save/remove/clear) on enregistre ce qui devra être fait, et on finalise dans un middleware qui se déroule post-request et/ou dans un contexte python style "contextlib" pour les commandes (comme syncldap).
La solution à plus long terme c'est de faire du provisionning un vrai élément d'authentic, avec un journal où on enregistre les objets qui ont changé pour en tâche de fond lancer les notifications; si un objet change deux fois entre deux batchs, il n'existe qu'une fois dans le journal.
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Lié à Development #9396: Gérer les notifications de provisionnement hors requêtes, en deux temps ajouté
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
Je vais pousser cela, à coté je vais ouvrir un ticket concernant le fait de gérer le provisionnement hors des requêtes, possiblement dans un thread.
Mis à jour par Benjamin Dauvergne il y a environ 8 ans
- Statut changé de Nouveau à Solution déployée
agent/authentic2: do not propagage role changes on clear() (#9293)
pre/post_clear is difficult to handle for now.