Bug #78796
La traduction à la volée des URLs des sources de donnée agenda est incompatible avec le code de moissonage
0%
Description
Le ticket #77920 introduit un migration à la volée dans l'objet NamedDataSource qui réécrit lors d'un store() les urls des sources de donnée agenda de https://agenda.xxx.fr/
vers {{ chrono_url }}
, je suppose pour que l'export ensuite en soit simplifié. Le souci est que le code dans build_agenda_datasources() compare lui le référentiel des agendas et des sources de donnée sur la base de l'URL canonique, sans remplacement de variable.
Le code de #77920 n'est pas encore en production mais on voit à la fin du ticket #76873-13 le souci que ça va poser, les agendas exportés sont recréés avec un nom différent (parce que le code en prod ne reconnait pas l'URL avec variable produite par le w.c.s. de recette).
Il faut reverter #77920 ou vite produire du code pour build_agenda_datasources() qui fasse la comparaison sur la base de l'URL transformée (ou bien réserver la transformation au moment de l'export ça ne changera, ce serait au moment de l'import qu'il faudrait corriger).
Demandes liées
Historique
Mis à jour par Benjamin Dauvergne il y a 11 mois
- Lié à Development #77920: Améliorer l'import d'une application avec des sources de données agenda ajouté
Mis à jour par Frédéric Péters il y a 11 mois
- Assigné à mis à Lauréline Guérin
Je laisse ça à Lauréline qui pourra voir ça demain.
Mis à jour par Frédéric Péters il y a 11 mois
Le souci est que le code dans build_agenda_datasources() compare lui le référentiel des agendas et des sources de donnée sur la base de l'URL canonique
J'essaie de comprendre quand même mais sans succès, le code de cette fonction se construit la liste des sources de données,
existing_datasources = {} for datasource in NamedDataSource.select(): if datasource.external != 'agenda': continue existing_datasources[datasource.data_source['value']] = datasource
dans existing_datasources on a donc des clés de la forme {{agendas_url}}/api/... et ensuite, en prenant les données de chrono, les url retournées sont transformées pour être également de la forme {{agendas_url}}/api/...
# build datasources from chrono for agenda in agenda_data: url = translate_url(publisher, agenda['url']) datasource = existing_datasources.get(url)
Il y a un troisième dictionnaire dans cette méthode, existing_datasources, lui aussi contient les clés sous forme {{agendas_url}}/api/...
Mis à jour par Frédéric Péters il y a 11 mois
Ou le propos est "pendant ces quelques jours avec du code différent entre recette et l'import sur la production échoue" mais ça sera ok une fois que recette et prod seront identiques ?
Mis à jour par Lauréline Guérin il y a 11 mois
Le souci est que le code dans build_agenda_datasources() compare lui le référentiel des agendas et des sources de donnée sur la base de l'URL canonique, sans remplacement de variable.
en prod, avec l'ancien code, mais avec le nouveau code (déjà en recette) ce sera ok, build_agenda_datasources produit des ds avec une variable dans l'url:
# build datasources from chrono for agenda in agenda_data: url = translate_url(publisher, agenda['url']) datasource = existing_datasources.get(url) if datasource is None: datasource = NamedDataSource()
a priori tout rentrera dans l'ordre une fois ce code déployé en prod
(mais je ne suis pas sûre d'avoir saisi le soucis, ce qui est exporté en recette et importé en prod; les ds agenda auto ne sont pas exportables il me semble)
Mis à jour par Lauréline Guérin il y a 11 mois
(mais je ne suis pas sûre d'avoir saisi le soucis, ce qui est exporté en recette et importé en prod; les ds agenda auto ne sont pas exportables il me semble)
Ok il s'agit d'une application, en effet les ds auto sont intégrées dans les applications, et sont alors importées.
Ca sera ok une fois le code en prod, à condition que l'appli contienne bien des ds agenda auto avec des urls avec variable (regénérer l'appli si ce n'est pas le cas)
Mis à jour par Benjamin Dauvergne il y a 11 mois
- Statut changé de Nouveau à Rejeté
- Assigné à
Lauréline Guérinsupprimé
Lauréline Guérin a écrit :
(mais je ne suis pas sûre d'avoir saisi le soucis, ce qui est exporté en recette et importé en prod; les ds agenda auto ne sont pas exportables il me semble)
J'avais raté ce deuxième translate_url, je pense aussi que ce sera bon quand tout sera déployé. Je rejette.