Projet

Général

Profil

Development #8169

Interface de validation des fichiers

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

Statut:
Fermé
Priorité:
Haut
Assigné à:
Version cible:
-
Début:
03 septembre 2015
Echéance:
% réalisé:

100%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

Pour les agents lire et typer un fichier (type, durée de validité, éventuelles métadonnées particulières au type de fichier).


Fichiers

0001-add-validation-of-documents.patch (36,7 ko) 0001-add-validation-of-documents.patch Benjamin Dauvergne, 28 septembre 2015 11:06
0001-add-validation-of-documents.patch (35,5 ko) 0001-add-validation-of-documents.patch Benjamin Dauvergne, 29 septembre 2015 12:37
0001-add-validation-of-documents.patch (35,9 ko) 0001-add-validation-of-documents.patch Benjamin Dauvergne, 05 octobre 2015 14:47
0001-add-validation-of-documents.patch (35,6 ko) 0001-add-validation-of-documents.patch Benjamin Dauvergne, 05 octobre 2015 15:40
0001-add-validation-of-documents.patch (35,7 ko) 0001-add-validation-of-documents.patch Benjamin Dauvergne, 05 octobre 2015 16:39

Demandes liées

Lié à w.c.s. - Bug #8402: Ajouter la possibilité de valider les fichiers attachés en utilisant fargo pour le stockageFermé28 septembre 2015

Actions

Révisions associées

Révision f166d3fb (diff)
Ajouté par Benjamin Dauvergne il y a plus de 8 ans

add validation of documents (fixes #8169)

User can validate some document as of being of a certain type, and
attach metadata to this validation event.

Historique

#1

Mis à jour par Benjamin Dauvergne il y a plus de 8 ans

  • Assigné à mis à Benjamin Dauvergne
Je vois deux 2 scénarios:
  • depuis un formulaire w.c.s.: on obtient un lien directement (dans fargo) vers un document particulier d'un utilisateur particulier, un premier formulaire donne le choix d'un type, puis un second demande les détails, si possible en conservant le document visible tout du long (visionneuse),
  • depuis l'accueil de la mairie (welco ?): on recherche/crée un utilisateur, on choisit l'action valider un justificatif, on est amené sur fargo (ou l'utilisateur créé dans authentic aura du être propagé), où on peut créer sans document (puisqu'il n'est pas stocké) un document justificatif et les données associées.

Coté modèle de donnée pour chaque document on associe un type, nom, prénom, email et uuid du valideur, ainsi qu'une liste d'attributs (clé-valeur). Le schéma des types de document est défini dans les settings.

#2

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

depuis un formulaire w.c.s ...

C'est à ce passage que je pensais en écrivant le ticket, un document existe dans Fargo, un agent le qualifie.

depuis l'accueil de la mairie (welco ?)

Ça pourrait être un autre ticket, quand un document n'existe pas, la possibilité pour un agent de dire "j'ai sous les yeux le document" et d'en compléter les métadonnées (type, validité, données particulières).

#3

Mis à jour par Benjamin Dauvergne il y a plus de 8 ans

Les fichiers sont stockés de manière unique indexé par le SHA256 dans le modèle Document.

Le modèle UserDocument relie un document à un utilisateur.

Le modèle Validation stocke la validation d'un document relié à un utilisateur pour un certain type.

Il y a 3 web services:
  • un web service qui distribue simplement la liste des types de documents pour éviter d'avoir à la répliquer partout, dans les faits ça publie simplement {'err': 0, 'data': settings.FARGO_DOCUMENT_TYPES }
  • un web service de publication des métadonnées associé à un triplet <name_id ou username>/<condensat sha-256 du fichier>/<slug du type de document> qui renvoie 404 si aucune fichier n'est trouvé, {'err': 1, data: 'validation not found'} si le fichier existe mais ils n'existent pas de métadonnées validées pour ce type de fichier, ou enfin les métadonnées sous la forme:
    {
       "err" : 0,
       "data" : {
          "type" : "justificatif-de-domicile",
          "created" : "2015-09-28T08:43:11Z",
          "end" : "2015-09-17",
          "start" : "2015-09-01",
          "label" : "Justificatif de domicile",
          "metadata" : [
             {
                "name" : "numero",
                "label" : "Numéro",
                "value" : "23" 
             },
             {
                "value" : "rue du château",
                "name" : "rue",
                "label" : "Rue" 
             },
             {
                "name" : "code-postal",
                "label" : "Code postal",
                "value" : "75014" 
             },
             {
                "name" : "ville",
                "label" : "Ville",
                "value" : "PARIS" 
             }
          ],
          "creator" : "Benjamin Dauvergne" 
       }
    }
    
  • une page de validation qui accepte le même triplet et affiche un formulaire pour remplir les métadonnées en question, elle accepte en plus un paramètre next pour le retour sur l'application d'origine (un jour on pourra tenter un window.postMessage pour fermer les iframe en popup mais j'ai eu la flemme là.
Ce qu'il manque:
  • déterminer une règle d'autorisation concernant la possibilité d'utiliser la page de validation, je serai d'avis d'associer cela à des rôles, ceux propagés par authentic2 dans fargo, le backoffice de celui-ci offrant la possibilité d'associer des rôles à des types; le message d'erreur du web service des métadonnées pourra envoyer les uuid de ces rôles permettant à w.c.s de savoir s'il doit afficher le lien de validation ou pas
  • permettre de pousser dans fargo un fichier qui n'y est pas en même temps qu'on le valide, cela supprimera le retour 404 actuellement renvoyé dans ce cas.

Je vais poster en parallèle le patch pour w.c.s.

#4

Mis à jour par Benjamin Dauvergne il y a plus de 8 ans

  • Lié à Bug #8402: Ajouter la possibilité de valider les fichiers attachés en utilisant fargo pour le stockage ajouté
#5

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

Ces modifications au fichier css sont volontaires ?

#6

Mis à jour par Benjamin Dauvergne il y a plus de 8 ans

Oui je n'ai plus vu de références à ces règles dans les templates.
Notamment la classe .table-container n'est plus là mais je veux bien
mettre çá dans un commit à part.

#7

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

C'est peut-être une différence locale de version de django-tables2, quand je regarde https://porte-doc-alfortville.dev.entrouvert.org/ qui est à jour, il y a bien un <div class="table-container">. Je suis au passage curieux du look que ça a chez toi si aucune de ces régles n'est prise en compte.

#8

Mis à jour par Benjamin Dauvergne il y a plus de 8 ans

Ok donc je les garde, le look est pas terrible c'est vrai mais je m'étais dit que c'était certainement amélioré avec les thèmes publik.

#9

Mis à jour par Benjamin Dauvergne il y a plus de 8 ans

Ok mon virtualenv fargo était obsolète. J'ai mis à jour et c'est bon.

#10

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

Pour le moment ça affiche des "Valider" sur des nouvelles lignes, de manière systématique (tous les utilisateurs, tous les documents). C'était une aide au debug (dans la mesure où la validation se fait depuis wcs) ?

Quand je cliquer un un lien "Valider", j'obtiens :

FieldError at /validation/80dc53da990f48b9a2f8f84120cce5/6eca58cc962a3872a01b283e611a9ca67336ecfe90f4da828bdfca28c215f718/justificatif-de-domicile/

Relation fields do not support nested lookups

sur la ligne :

                self.user_document = get_object_or_404(
                    models.UserDocument, user__usersamlidentifier__name_id=username,
                    document__content_hash=content_hash)

#11

Mis à jour par Benjamin Dauvergne il y a plus de 8 ans

Les codes paths SAML ne sont pas testés, j'ai corrigé la ligne.

Pour les boutons valider oui c'est du debug, à virer quant tout le reste est ok.

#12

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

J'obtiens une erreur 404 (No UserDocument matches the given query.); parce que d'un côté c'est le username qui est utilisé et de l'autre c'est le saml_nameidentifier et le username il est coupé à 30 caractères. (mais donc, aussi, ça pourrait toujours utiliser la requête user__username, non ?)

#13

Mis à jour par Benjamin Dauvergne il y a plus de 8 ans

Ok, variante avec uniquement user__username=username[:30].

#14

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

404 après validation ou annulation (http://fargo.127.0.0.1.xip.io:8003/validation/.../.../justificatif-de-domicile/home).

Veut-on nécessairement que tous champs soient obligatoires ?

#15

Mis à jour par Benjamin Dauvergne il y a plus de 8 ans

Pour le 404:

diff --git a/fargo/fargo/views.py b/fargo/fargo/views.py
index 764a7de..1c0a1a4 100644
--- a/fargo/fargo/views.py
+++ b/fargo/fargo/views.py
@@ -316,7 +316,8 @@ class Validation(CreateView):
         return kwargs

     def get_success_url(self):
-        return self.request.GET.get(REDIRECT_FIELD_NAME) or settings.LOGIN_REDIRECT_URL
+        return self.request.GET.get(REDIRECT_FIELD_NAME) \
+                or reverse(settings.LOGIN_REDIRECT_URL)

 class DocumentTypes(View):

(patch complet attaché)

Pour les champs requis je viens d'ajouter la possibilité de mettre un 'required': False dans le schéma (par défaut c'est True).

#17

Mis à jour par Benjamin Dauvergne il y a plus de 8 ans

  • Statut changé de Nouveau à En cours
  • Priorité changé de Normal à Haut
#18

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

Pour les boutons valider oui c'est du debug, à virer quant tout le reste est ok.

Je dirais que c'est bon une fois ces boutons retirés.

#19

Mis à jour par Benjamin Dauvergne il y a plus de 8 ans

  • Statut changé de En cours à Résolu (à déployer)
  • % réalisé changé de 0 à 100
#20

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

  • Statut changé de Résolu (à déployer) à Fermé

Formats disponibles : Atom PDF