Development #40111
L'import des catégories est cassé
Début:
24 février 2020
Echéance:
% réalisé:
0%
Temps estimé:
Patch proposed:
Oui
Planning:
Non
Description
L'API des catégories n'a jamais bien fonctionné et je l'ai oublié, avant la migration python3 et module wcs-api issu de passerelle, j'ai remplacé ce bout de code qui contourne le fait que l'API catégorie est mal foutue :
@property def categories(self): - d = {} - for f in self.formdefs: - if hasattr(f.schema, 'category'): - d[f.schema.category_id] = f.schema.category - return [Category(wcs_api=self, id=k, name=v) for k, v in d.items()]
(i.e. extraction des catégories depuis la partie schéma de la description des formdefs)
par ceci, qui forcément ne marche pas:
class Categories(WcsObjects): url = 'api/categories/' object_class = Category ... @property def categories(self): return Categories(self)
où l'API /api/categories/ ne contient pas l'attribut id :
# https://formulaires.simplici.grandchambery.fr/api/categories/ { "data": [ { "keywords": [], "slug": "eau", "title": "Mon eau potable", "url": "https://formulaires.simplici.grandchambery.fr/eau/" }, { "keywords": [], "slug": "signaler-un-dysfonctionnement", "title": "Signalements", "url": "https://formulaires.simplici.grandchambery.fr/signaler-un-dysfonctionnement/" }, { "keywords": [], "slug": "dechets", "title": "Mes déchets", "url": "https://formulaires.simplici.grandchambery.fr/dechets/" }, { "keywords": [], "slug": "administration-generale", "title": "Administration générale", "url": "https://formulaires.simplici.grandchambery.fr/administration-generale/" }, { "keywords": [], "slug": "loisirs", "title": "Mes loisirs", "url": "https://formulaires.simplici.grandchambery.fr/loisirs/" }, { "keywords": [], "slug": "contact-interne", "title": "Contact interne", "url": "https://formulaires.simplici.grandchambery.fr/contact-interne/" }, { "keywords": [], "slug": "bac-a-sable", "title": "zz_Bac à sable", "url": "https://formulaires.simplici.grandchambery.fr/bac-a-sable/" } ] }
et le code qui s'en sert :
- 'category', enumerate(c.name for c in self.categories), comment='catégorie') - self.categories_mapping = dict((c.id, tmp_cat_map[c.name]) for c in self.categories) + 'category', enumerate(c.title for c in self.categories), comment='catégorie') + self.categories_mapping = dict((c.slug, tmp_cat_map[c.title]) for c in self.categories) <- on indexe par le slug .... self.ex('INSERT INTO {form_table} (category_id, label) VALUES (%s, %s) RETURNING (id)', vars=[self.categories_mapping.get(self.formdef.schema.category_id), <- mais on continue de recherche par l'id :/ self.formdef.schema.name])
Je vais revenir à l'ancien fonctionnement.
Fichiers
Historique
Mis à jour par Benjamin Dauvergne il y a environ 4 ans
- Fichier 0001-feeder-use-category_id-to-map-formdef-s-category-to-.patch 0001-feeder-use-category_id-to-map-formdef-s-category-to-.patch ajouté
- Tracker changé de Bug à Development
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Mis à jour par Benjamin Dauvergne il y a environ 4 ans
- Statut changé de Solution proposée à Fermé
Est corrigé par #36930.