Projet

Général

Profil

Development #48776

import de csv pour des fiches et liaison usager

Ajouté par Frédéric Péters il y a plus de 3 ans. Mis à jour il y a plus de 3 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
24 novembre 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Si le modèle de fiche est configuré pour dire que les fiches peuvent être associées un utilisateur, on modifie la gestion du CSV pour qu'il y ait en première colonne la place pour renseigner l'user, que ça soit sous forme d'uuid ou d'email; un patch qui commencerait genre :

diff --git a/wcs/backoffice/data_management.py b/wcs/backoffice/data_management.py
index e3e562a21..1f0adcacc 100644
--- a/wcs/backoffice/data_management.py
+++ b/wcs/backoffice/data_management.py
@@ -141,7 +141,15 @@ class CardPage(FormPage):

     def get_import_csv_fields(self):
         # skip non-data fields
-        return [x for x in self.formdef.get_all_fields() if isinstance(x, fields.WidgetField)]
+        class UserField:
+            key = 'user'
+            id = '_user'
+            label = _('User (email or UUID)')
+            convert_value_from_str = lambda x: x
+            store_display_value = None
+            store_structured_value = None
+
+        return [UserField()] + [x for x in self.formdef.get_all_fields() if isinstance(x, fields.WidgetField)]

     def data_sample_csv(self):
         carddef_fields = self.get_import_csv_fields()
@@ -283,6 +291,9 @@ class CardPage(FormPage):
             def execute(self, job=None):
                 for item in self.lines:
                     data_instance = self.data_class()
+                    user_value = item.pop('_user', None)
+                    if user_value:
+                        data_instance.user = TODO_lookup(user_value)
                     data_instance.data = item
                     data_instance.just_created()
                     data_instance.store()


Fichiers

Révisions associées

Révision c5c52e4a (diff)
Ajouté par Lauréline Guérin il y a plus de 3 ans

cards: csv import & user support (#48776)

Historique

#2

Mis à jour par Lauréline Guérin il y a plus de 3 ans

  • Assigné à mis à Lauréline Guérin
#3

Mis à jour par Lauréline Guérin il y a plus de 3 ans

Là ça fait un select par ligne, est-ce qu'il vaut mieux récupérer tous les users et les filtrer ?

#4

Mis à jour par Frédéric Péters il y a plus de 3 ans

Non ça peut passer ainsi, et pour les fichiers gros de toute façon il y a ce taf de boulot en asynchrone à gérer.

#5

Mis à jour par Frédéric Péters il y a plus de 3 ans

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

Ok et je dois rebaser #48407 là-dessus.

#6

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 c5c52e4ab8c6a1a17454b5fa09e74b03ab524f49
Author: Lauréline Guérin <zebuline@entrouvert.com>
Date:   Fri Dec 4 15:29:43 2020 +0100

    cards: csv import & user support (#48776)
#7

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

Formats disponibles : Atom PDF