Projet

Général

Profil

Development #10506

Pouvoir pousser les documents attachés dans fargo

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

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
Début:
31 mars 2016
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

En utilisant l'API /api/documents/push de fargo.


Fichiers


Demandes liées

Bloque Fargo - Development #9543: Permettre à l'usager de déposer un doc dans le porte-doc depuis une demandeFermé07 janvier 201625 janvier 2016

Actions

Révisions associées

Révision 0cbecba8 (diff)
Ajouté par Benjamin Dauvergne il y a environ 8 ans

add option to push attached document to portfolio (#10506)

Historique

#1

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

Ça s'applique au dessus du #10444.

#2

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

  • Bloque Development #9543: Permettre à l'usager de déposer un doc dans le porte-doc depuis une demande ajouté
#3

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

  • Patch proposed changé de Oui à Non
#4

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

Voilà patch testé avec l'attachement de document et la création de documents.

#5

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

Je préfèrerais éviter le fargo_post_json_async, le boulot se fait de toute façon de manière synchrone dans l'afterjob (et oui ça doit demander de faire le fargo_url() dans la fonction push_document).

Le test, il pourrait être fait sans la conversion PDF, pour fonctionner même en l'absence de libreoffice.

#6

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

En fait j'ai un souci il faut que je fasse le get_secret_and_orig() avant l'afterjob parce que ça accède à get_request() qui n'est plus défini dans les afterjob; si tu trouve vraiment ça moche je me débrouille autrement, sinon je met un commentaire.

#7

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

Je trouve ça plutôt moche mais avec un commentaire ça ira.

J'avais zappé la note comme quoi ça s'appliquait au-dessus de #10444, je vais d'abord regarder celui-là.

#8

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

Ça s'applique au dessus de #10444 surtout parce que j'ai déplacé les fonctions de signature dans un module à part.

#9

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

--- a/wcs/file_validation.py
+++ b/wcs/file_validation.py
@@ -61,13 +61,18 @@ def fargo_post_json(url, payload):
     return status, json_loads(response_payload)

-def fargo_post_json_async(url, payload):
-    url = fargo_url(url)
-    headers = {'Content-Type': 'application/json'}
-    yield None
-    response, status, response_payload, auth_header = http_post_request(
-        url, json.dumps(payload), headers=headers)
-    yield status, json_loads(response_payload)
+# Allow doing a signed POST in an afterjob, as fargo_url() does not work if no request is in
+# context; so we do it in the constructor.
+class fargo_post_json_async(object):
+    def __init__(self, url, payload):
+        self.url = fargo_url(url)
+        self.payload = payload
+
+    def __call__(self):
+        headers = {'Content-Type': 'application/json'}
+        response, status, response_payload, auth_header = http_post_request(
+            self.url, json.dumps(self.payload), headers=headers)
+        return status, json_loads(response_payload)

 def sha256_of_upload(upload):
@@ -159,11 +164,10 @@ def push_document(user, filename, stream):
     stream.seek(0)
     payload['file_b64_content'] = base64.b64encode(stream.read())
     async_post = fargo_post_json_async('/api/documents/push/', payload)
-    next(async_post)

     def afterjob(job):
         status = 0
-        status, resp = next(async_post)
+        status, resp = async_post()
         if status == 200:
             get_logger().info('file %s pushed to portfolio of %s'
                               % (filename, user.display_name))
#11

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

Pas regardé encore mais noté dans l'ui : Push generated file to portfiolo → s/fiolo/folio/

#13

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

ok.

#14

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

  • Statut changé de Nouveau à Résolu (à déployer)
#15

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

  • Version cible mis à v1.42
#16

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

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

Formats disponibles : Atom PDF