Development #59509
Page.MultipleObjectsReturned: get() returned more than one Page -- it returned 2!
0%
Description
https://sentry.entrouvert.org/entrouvert/publik/issues/54050/
Page.MultipleObjectsReturned: get() returned more than one Page -- it returned 2! (9 additional frame(s) were not displayed) ... File "combo/data/utils.py", line 152, in import_site pages = Page.load_serialized_pages(data.get('pages') or [], request=request) File "combo/data/models.py", line 606, in load_serialized_pages page, created = Page.objects.get_or_create(slug=json_page['fields']['slug']) File "django/db/models/manager.py", line 82, in manager_method return getattr(self.get_queryset(), name)(*args, **kwargs) File "django/db/models/query.py", line 538, in get_or_create return self.get(**kwargs), False File "django/db/models/query.py", line 412, in get (self.model._meta.object_name, num)
Fichiers
Révisions associées
Historique
Mis à jour par Lauréline Guérin il y a plus de 2 ans
2 pages avec le même slug
Il me semble avoir vu dans un ticket que ce cas était normal, qu'on ne voulait pas d'unicité sur les slugs, mais je ne le retrouve pas (et du coup je n'ai pas plus d'explication en tête)
Mis à jour par Thomas Noël il y a plus de 2 ans
Vu de loin : deux pages pourraient avoir le même slug, placées à deux endroits différents de l'arborescence des pages.
Mis à jour par Valentin Deniaud il y a plus de 2 ans
- Fichier 0001-data-handle-duplicated-page-slugs-at-import-59509.patch 0001-data-handle-duplicated-page-slugs-at-import-59509.patch ajouté
- Tracker changé de Bug à Development
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Mis à jour par Valentin Deniaud il y a plus de 2 ans
- Statut changé de Solution proposée à En cours
Mis à jour par Valentin Deniaud il y a plus de 2 ans
- Fichier 0001-data-handle-duplicated-page-slugs-at-import-59509.patch 0001-data-handle-duplicated-page-slugs-at-import-59509.patch ajouté
- Statut changé de En cours à Solution proposée
J'ai commencé à tirer une pelotte mais je la garde finalement pour un autre ticket.
Mis à jour par Lauréline Guérin il y a plus de 2 ans
imaginons le cas suivant:
- sur un combo 1, créer 3 pages A, B, C, B et C étant filles de A, A n'ayant pas de parent (A > B et A > C)
- exporter le site
- l'importer sur un combo 2
- sur combo 1, déplacer C en dessous de B (A > B > C)
- exporter le site
- l'importer sur combo 2
avec le code précédent, on aurait bien déplacé la page C pour la mettre sous la page B
avec le patch, on crée une nouvelle page C sous B, l'ancienne page C restant sous A, non ?
Mis à jour par Valentin Deniaud il y a plus de 2 ans
Lauréline Guerin a écrit :
imaginons le cas suivant:
[...]avec le code précédent, on aurait bien déplacé la page C pour la mettre sous la page B
avec le patch, on crée une nouvelle page C sous B, l'ancienne page C restant sous A, non ?
Ouep, si on veut réparer le bug et garder ça il faut réfléchir à la manière dont on veut identifier les pages. J'imagine que c'est soit forcer l'unicité du slug, soit ajouter un champ uuid ?
Mis à jour par Frédéric Péters il y a environ 2 ans
Je ne suis pas trop pour forcer l'unicité des slugs; je serais même à plutôt accepter ce ticket ainsi et ranger le cas #59509#note-8 dans un nouveau ticket, pour réfléchir uuid ou autre, sauf s'il y a déjà des idées assez claires pour partir là-dedans.
Mis à jour par Nicolas Roche il y a presque 2 ans
Et donc ici, on pourrait juste afficher un message d'erreur à l'usager ?
Mis à jour par Frédéric Péters il y a presque 2 ans
J'imagine que tu penses à un message qui dirait "Non ça va pas, slug en doublon", quelques commentaires plus haut le commentaire juste au-dessus j'écris "Je ne suis pas trop pour forcer l'unicité des slugs". (= pour être explicite : non il ne s'agit pas d'afficher un message d'erreur.).
Mis à jour par Valentin Deniaud il y a plus d'un an
- Fichier 0001-data-handle-duplicated-page-slugs-at-import-59509.patch 0001-data-handle-duplicated-page-slugs-at-import-59509.patch ajouté
Rebasé.
Mis à jour par Lauréline Guérin il y a plus d'un an
- Statut changé de Solution proposée à Solution validée
Mis à jour par Valentin Deniaud il y a plus d'un an
- Statut changé de Solution validée à Résolu (à déployer)
commit 6370164fc86e223edde1146a86654d852f02db83 Author: Valentin Deniaud <vdeniaud@entrouvert.com> Date: Wed Dec 22 16:54:36 2021 +0100 data: handle duplicated page slugs at import (#59509)
Mis à jour par Transition automatique il y a plus d'un an
- Statut changé de Résolu (à déployer) à Solution déployée
data: handle duplicated page slugs at import (#59509)