Développement #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)
Files
Associated revisions
History
Updated by Lauréline Guérin about 3 years ago
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)
Updated by Thomas Noël about 3 years ago
Vu de loin : deux pages pourraient avoir le même slug, placées à deux endroits différents de l'arborescence des pages.
Updated by Valentin Deniaud about 3 years ago
- File 0001-data-handle-duplicated-page-slugs-at-import-59509.patch 0001-data-handle-duplicated-page-slugs-at-import-59509.patch added
- Tracker changed from Bug to Développement
- Status changed from Nouveau to Solution proposée
- Patch proposed changed from No to Yes
Updated by Valentin Deniaud about 3 years ago
- File 0001-data-handle-duplicated-page-slugs-at-import-59509.patch 0001-data-handle-duplicated-page-slugs-at-import-59509.patch added
- Status changed from En cours to Solution proposée
J'ai commencé à tirer une pelotte mais je la garde finalement pour un autre ticket.
Updated by Lauréline Guérin about 3 years ago
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 ?
Updated by Valentin Deniaud about 3 years ago
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 ?
Updated by Frédéric Péters almost 3 years ago
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.
Updated by Nicolas Roche over 2 years ago
Et donc ici, on pourrait juste afficher un message d'erreur à l'usager ?
Updated by Frédéric Péters over 2 years ago
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.).
Updated by Valentin Deniaud over 2 years ago
- File 0001-data-handle-duplicated-page-slugs-at-import-59509.patch 0001-data-handle-duplicated-page-slugs-at-import-59509.patch added
Rebasé.
Updated by Lauréline Guérin over 2 years ago
- Status changed from Solution proposée to Solution validée
Updated by Valentin Deniaud over 2 years ago
- Status changed from Solution validée to 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)
Updated by Transition automatique over 2 years ago
- Status changed from Résolu (à déployer) to Solution déployée
data: handle duplicated page slugs at import (#59509)