Projet

Général

Profil

Bug #40645

duplicate key value sur réordonnancement des cellules

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

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
11 mars 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

IntegrityError at /manage/pages/1/order
duplicate key value violates unique constraint "data_validityinfo_content_type_id_object_id_dd12d6f0_uniq" 
DETAIL:  Key (content_type_id, object_id)=(31, 36) already exists.

Request Method: GET
Request URL:
https://..../manage/pages/1/order?pos_search_searchcell-1=0&ph_search_searchcell-1=sidebar&pos_wcs_trackingcodei
nputcell-3=1&ph_wcs_trackingcodeinputcell-3=sidebar&pos_data_menucell-2=2&ph_data_menucell-2=sidebar&pos_data_textcell-1=3&ph_data_textcell-1=co
ntent&pos_wcs_wcsformsofcategorycell-1=4&ph_wcs_wcsformsofcategorycell-1=content&pos_wcs_wcsformsofcategorycell-2=5&ph_wcs_wcsformsofcategorycel
l-2=content&pos_wcs_wcsformsofcategorycell-6=6&ph_wcs_wcsformsofcategorycell-6=content&pos_wcs_wcsformsofcategorycell-3=7&ph_wcs_wcsformsofcateg
orycell-3=content&pos_wcs_wcsformsofcategorycell-4=8&ph_wcs_wcsformsofcategorycell-4=content&pos_wcs_wcsformsofcategorycell-5=9&ph_wcs_wcsformso
fcategorycell-5=content&pos_wcs_wcsformsofcategorycell-36=10&ph_wcs_wcsformsofcategorycell-36=content&pos_data_linkcell-14=11&ph_data_linkcell-1
4=content&pos_data_textcell-17=12&ph_data_textcell-17=footer
...
File "/usr/lib/python3/dist-packages/combo/manager/views.py" in cell_order
  544.             cell.save()

File "/usr/lib/python3/dist-packages/combo/apps/wcs/models.py" in save
  214.             validity_info.save()
...

Je ne sais trop comment arrive l'erreur mais je me dis que sur cette situation (réordonnancement) on peut juste zapper la vérification de validité.


Fichiers

Révisions associées

Révision e458263b (diff)
Ajouté par Frédéric Péters il y a environ 4 ans

manager: don't check cell validity when reordering them (#40645)

Historique

#1

Mis à jour par Frédéric Péters il y a environ 4 ans

#2

Mis à jour par Emmanuel Cazenave il y a environ 4 ans

Je ne comprends en quoi passer update_fields va zapper la vérification de validité.

#3

Mis à jour par Frédéric Péters il y a environ 4 ans

    def save(self, *args, **kwargs):
        if 'update_fields' in kwargs:
            # don't check validity
            return super(LinkCell, self).save(*args, **kwargs)
#4

Mis à jour par Frédéric Péters il y a environ 4 ans

Que j'ai pris comme étant sur la classe CellBase, alors que ce n'est pas le cas...

#5

Mis à jour par Frédéric Péters il y a environ 4 ans

Ce qui pourrait être le cas (avoir ce code sur CellBase) mais n'est pas nécessaire, et ça me va de ne pas changer ça maintenant.

#6

Mis à jour par Frédéric Péters il y a environ 4 ans

c'est aussi présent dans le .save() de la trace:

    def save(self, *args, **kwargs):
        if 'update_fields' in kwargs:
            # don't populate the cache
            return super(WcsCommonCategoryCell, self).save(*args, **kwargs)
#7

Mis à jour par Emmanuel Cazenave il y a environ 4 ans

  • Statut changé de Solution proposée à Solution validée

ecazenave : 40645 j'y comprends toujours rien avec les explications supplémentaires, je laisse à quelqu'un de mieux réveillé
fpeters: j'y ai mis ma dose de confusion parce qu'à un moment j'ai cru que j'avais mal visé, et que l'update_fields n'était pas pris en compte.
mais c'est au final très simple. s'il y a update_fields=... les méthodes .save() des cellules, qui autrement appelleraient la vérification de validité, ne le > font pas.

Le pattern qui zappe le check de validité si update_fields est là, je le trouve que sur LinkCell et WcsFormCell, d'où ta remarque "Ce qui pourrait être le cas (avoir ce code sur CellBase) mais n'est pas nécessaire, et ça me va de ne pas changer ça maintenant.", ok.

#8

Mis à jour par Frédéric Péters il y a environ 4 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit e458263be21adb3962b379ad2c106acc5f50764d
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Wed Mar 11 11:41:24 2020 +0100

    manager: don't check cell validity when reordering them (#40645)
#9

Mis à jour par Frédéric Péters il y a environ 4 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF