Projet

Général

Profil

Bug #9293

ValueError: Problem installing fixture '/home/entrouvert/roles-to-prod.json': Cannot use None as a query value

Ajouté par Frédéric Péters il y a plus de 8 ans. Mis à jour il y a environ 8 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
10 décembre 2015
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:

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

Lié à Hobo - Development #9396: Gérer les notifications de provisionnement hors requêtes, en deux tempsFermé18 décembre 2015

Actions

Révisions associées

Révision 58762c2e (diff)
Ajouté par Benjamin Dauvergne il y a plus de 8 ans

agent/authentic2: do not propagage role changes on clear() (#9293)

pre/post_clear is difficult to handle for now.

Historique

#1

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.

#2

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)

#3

Mis à jour par Benjamin Dauvergne il y a plus de 8 ans

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.

#4

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é
#5

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.

#6

Mis à jour par Benjamin Dauvergne il y a environ 8 ans

  • Statut changé de Nouveau à Solution déployée

Formats disponibles : Atom PDF