Development #46100
optimiser l'import de CSV d'événements sans slug
Début:
25 août 2020
Echéance:
% réalisé:
0%
Temps estimé:
Patch proposed:
Oui
Planning:
Non
Description
Là ça passe par generate_slug() qui fait une requête par valeur potentielle,
while instance._meta.model.objects.filter(slug=slug, **query_filters).exists(): slug = '%s-%s' % (base_slug, i) i += 1
et sur des événements qui n'ont pas de libellé,
def base_slug(self): # label can be empty return slugify(self.label or ('%s-event' % self.agenda.label))
ça va partir à chaque fois de zéro.
Je serais pour avant de lancer les .save() faire un
seen_slugs = set(Event.objects.values_list('slug', flat=True))
puis passer ça à save() qui le passerait à generate_slug() qui l'utiliserait pour itérer sans s'arrêter sur les valeurs connues.
(un peu comme dans chrono/agendas/migrations/0049_event_slug.py)
Alternativement si on veut un truc qui tient dans generate_slug() seul, on pourrait se dire qu'après trois itérations ça va continuer ainsi et faire alors une requête globale pour obtenir tous les slugs.
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a plus de 3 ans
- Lié à Development #46098: faire les imports d'événements depuis un CSV de manière asynchrone ajouté
Mis à jour par Lauréline Guérin il y a plus de 3 ans
- Fichier 0001-manager-slug-generation-optimization-on-event-import.patch 0001-manager-slug-generation-optimization-on-event-import.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Mis à jour par Frédéric Péters il y a plus de 3 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Lauréline Guérin il y a plus de 3 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit c9bbdf87cbcb7f988d14f5e5a2b1c36d5597a86b Author: Lauréline Guérin <zebuline@entrouvert.com> Date: Mon Aug 31 15:23:05 2020 +0200 manager: slug generation optimization on event import (#46100)
Mis à jour par Frédéric Péters il y a plus de 3 ans
- Statut changé de Résolu (à déployer) à Solution déployée
manager: slug generation optimization on event import (#46100)