Development #6222
Assurer que object.id est uniformément une chaine de caractères
0%
Description
L'idée simple est de faire un str() de la valeur retournée par get_new_id() et de faire un self.id = str(self.id) lors du chargement d'un objet. Dans la pratique il y aura sans doute un peu plus, mais il y a désormais une série de tests pour aider.
Fichiers
Révisions associées
storage: store hashed_index with strings (#6222)
general: always store&use object id as strings (#6222)
storage: store hashed_index with strings (#6222)
general: always store&use object id as strings (#6222)
storage: store hashed_index with strings (#6222)
general: always store&use object id as strings (#6222)
storage: store hashed_index with strings (#6222)
general: always store&use object id as strings (#6222)
storage: store hashed_index with strings (#6222)
Historique
Mis à jour par Frédéric Péters il y a plus de 9 ans
- Fichier 0001-general-always-store-use-object-id-as-strings-6222.patch 0001-general-always-store-use-object-id-as-strings-6222.patch ajouté
- Sujet changé de Assurer que object.id est uniformément une chaine de caractère à Assurer que object.id est uniformément une chaine de caractères
- Statut changé de Nouveau à En cours
- Priorité changé de Normal à Bas
- Patch proposed changé de Non à Oui
Mis à jour par Frédéric Péters il y a plus de 9 ans
- Fichier 0001-storage-store-hashed_index-with-strings-6222.patch 0001-storage-store-hashed_index-with-strings-6222.patch ajouté
Un morceau qui avait été oublié, dans les hashed_index il y avait une liste d'identifiants, qui pouvaient être des entiers; cas réel d'erreur : ancien formulaire sauvegardé en brouillon, suppression de ce formulaire, (sa valeur entière n'est pas retirée du hashed_index correspondant à l'utilisateur), affichage de la page "my space" qui utilise l'index, crash parce qu'un id de formulaire renseignée comme appartenant à l'utilisateur n'existe plus.
Mis à jour par Thomas Noël il y a plus de 9 ans
Ack mais haaaaaa non j'avais pas vu le 0001-general qui fait peur. Pas Ack.
Mis à jour par Benjamin Dauvergne il y a presque 9 ans
Le code suivant n'est il pas une migration soupoudré dans le fonctionnement du workflow, est-ce qu'il ne vaudrait pas mieux mettre cela de façon générique dans le migrate()
de la classe Workflow
? Ça éviterait les str(self.role_id)
un peu partout dans les status items.
# wcs/wf/roles.py, l. 45 def perform(self, formdata): if not self.role_id: return + self.role_id = str(self.role_id) if not formdata.user_id: # we can't work on anonymous or user_hash'ed forms return
Dans wcs/workflows.py
, le pourquoi de :
+ if False: + if type(self.last_modification_user_id) is int: + self.last_modification_user_id = str(self.last_modification_user_id) + changed = True
juste après:
- return role_id + return str(role_id) else: - return role_name + return str(role_name)
Ça me semble aller à l'encontre de l'idée que désormais les role_id sont tous des str() partout, tout le temps; non ? Pas forcément le str(role_name)
car c'est un paramètre, mais le le role_id
vient d'une structure interne par contre et devrait donc toujours être une chaîne (ça rejoint la première remarque).
Mis à jour par Frédéric Péters il y a presque 9 ans
Le code suivant n'est il pas une migration soupoudré dans le fonctionnement du workflow, est-ce qu'il ne vaudrait pas mieux mettre cela de façon générique dans le migrate() de la classe Workflow ? Ça éviterait les str(self.role_id) un peu partout dans les status items.
Oui mais ça appellerait l'intégration de migrate() au niveau des statuts et le plan est plutôt d'obtenir ça de manière automatique via un autre patch, dans le travail de #4739.
Dans wcs/workflows.py, le pourquoi de : (if False)
Ça a été retiré après l'upload du patch, http://git.entrouvert.org/wcs.git/commit/?h=wip/fred-patch-stack&id=ecc292982bc1a4ce6567db45722d61ebe20befab
juste après :
Ça rejoint en effet la première remarque, c'est fait ainsi pour la même raison.
Mis à jour par Frédéric Péters il y a presque 9 ans
- Statut changé de En cours à Résolu (à déployer)
Avec quelques adaptations nécessaires suite à des changements dans master (par exemple les /admin/ à remplacer par /backoffice/ dans les tests…).
Author: Frédéric Péters <fpeters@entrouvert.com> Date: Mon Jan 19 16:14:00 2015 +0100 storage: store hashed_index with strings (#6222) commit 5178ee8b4eab2a3efd1a4bca3146be3aa6d617d2 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Wed Dec 31 10:08:18 2014 +0100 general: always store&use object id as strings (#6222)
general: always store&use object id as strings (#6222)