Projet

Général

Profil

Development #40111

L'import des catégories est cassé

Ajouté par Benjamin Dauvergne il y a environ 4 ans. Mis à jour il y a environ 4 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
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

#2

Mis à jour par Benjamin Dauvergne il y a environ 4 ans

  • Assigné à mis à Benjamin Dauvergne
#3

Mis à jour par Benjamin Dauvergne il y a environ 4 ans

#7

Mis à jour par Benjamin Dauvergne il y a environ 4 ans

  • Statut changé de Solution proposée à Fermé

Est corrigé par #36930.

Formats disponibles : Atom PDF