Project

General

Profile

Development #10506

Pouvoir pousser les documents attachés dans fargo

Added by Benjamin Dauvergne almost 5 years ago. Updated over 4 years ago.

Status:
Fermé
Priority:
Normal
Target version:
Start date:
31 Mar 2016
Due date:
% Done:

0%

Estimated time:
Patch proposed:
Yes
Planning:

Description

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


Files


Related issues

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

Actions

Associated revisions

Revision 0cbecba8 (diff)
Added by Benjamin Dauvergne almost 5 years ago

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

History

#2

Updated by Benjamin Dauvergne almost 5 years ago

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

Updated by Benjamin Dauvergne almost 5 years ago

  • Patch proposed changed from Yes to No
#4

Updated by Benjamin Dauvergne almost 5 years ago

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

#5

Updated by Frédéric Péters almost 5 years ago

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

Updated by Benjamin Dauvergne almost 5 years ago

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

Updated by Frédéric Péters almost 5 years ago

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

Updated by Benjamin Dauvergne almost 5 years ago

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

#9

Updated by Benjamin Dauvergne almost 5 years ago

--- 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

Updated by Frédéric Péters almost 5 years ago

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

#14

Updated by Benjamin Dauvergne almost 5 years ago

  • Status changed from Nouveau to Résolu (à déployer)
#15

Updated by Frédéric Péters almost 5 years ago

  • Target version set to v1.42
#16

Updated by Frédéric Péters over 4 years ago

  • Status changed from Résolu (à déployer) to Fermé

Also available in: Atom PDF