Development #8521
Autoriser plusieurs pages à avoir le même slug
0%
Description
Pour le moment les slugs à l'intérieur d'un site doivent être uniques, ça pourrait avoir du sens de lever cette restriction; par exemple pour avoir /etat-civil/contact/, /famille/contact/, etc.
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
class Meta: unique_together = (('parent', 'slug'),)
Il reste un problème, ça ne marche pas si parent est nul (pour Postgres (NULL, 'xxx') != (NULL, 'xxx')
, donc pour toutes les pages à la racine. Le seul moyen de contourner est d'ajouter la contrainte à la main via une migration SQL (qui marche par contre sous sqlite et postgres) du style CREATE UNIQUE INDEX ON table (slug) WHERE parent_id IS NULL;
. Si besoin je peux donner le code exact que j'ai dans authentic.
Mis à jour par Frédéric Péters il y a plus de 5 ans
- Fichier 0001-misc-allow-page-with-same-slug-but-different-parents.patch 0001-misc-allow-page-with-same-slug-but-different-parents.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
En prenant l'option de ne pas introduire de contrainte côté db, ni de chercher des optimisations au schéma (hello mptt), sur l'idée que l'ui gère, que la hiérarchie est peu profonde et que je préfère limiter les migrations, particulièrement manuellement modifiées.
Mis à jour par Frédéric Péters il y a plus de 5 ans
Je pensais que ce code m'aiderait pour ensuite faire #23535 mais pas vraiment, dans cet autre ticket je réécris le code de recherche de page. Ce patch reste intéressant mais la partie dans combo/public/views.py peut tout à fait être ignorée.
Mis à jour par Frédéric Péters il y a plus de 5 ans
- Lié à Development #23535: Gestion "sous-page automatique" ajouté
Mis à jour par Thomas Noël il y a plus de 5 ans
- Statut changé de Solution proposée à Solution validée
Je suis pas très à l'aise avec la partie hashlib, parce c'est pas garanti à 100% et parce que hashlib.md5(1) ça ressemble à "caca" (oui, bon).
J'aurai plutôt vu un truc plus classique genre
while new_slug in other_pages_slugs: n += 1 new_slug = moved_page.slug + '-%d' % n
Mais en même temps, même si deux pages ont le même slug ça va pas tout faire planter combo... ah mais si, object.get(slug=slug)... Bon, on peut attendre 30 ans avant que ça arrive, allez, go.
Mis à jour par Frédéric Péters il y a plus de 5 ans
- Statut changé de Solution validée à Résolu (à déployer)
Pour info 8243 donnera caca.
commit d349635d07a2f7ff95830eea7d01caa5302dd024 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Wed Aug 8 17:21:15 2018 +0200 misc: allow page with same slug but different parents (#8521)
Mis à jour par Frédéric Péters il y a plus de 5 ans
- Statut changé de Résolu (à déployer) à Solution déployée
misc: allow page with same slug but different parents (#8521)