Development #8169
Interface de validation des fichiers
100%
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
Demandes liées
Révisions associées
Historique
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Assigné à mis à Benjamin Dauvergne
- 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.
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).
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Fichier 0001-add-validation-of-documents.patch 0001-add-validation-of-documents.patch ajouté
- Patch proposed changé de Non à Oui
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à.
- 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.
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é
Mis à jour par Frédéric Péters il y a plus de 8 ans
Ces modifications au fichier css sont volontaires ?
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.
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.
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.
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.
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)
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.
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 ?)
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
Ok, variante avec uniquement user__username=username[:30]
.
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 ?
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).
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Statut changé de Nouveau à En cours
- Priorité changé de Normal à Haut
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.
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
Appliqué par commit f166d3fbe3a3e5911c04076f45747220bd90d986.
Mis à jour par Benjamin Dauvergne il y a environ 7 ans
- Statut changé de Résolu (à déployer) à Fermé
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.