From 09f9cc4778315aee62b89ef15ea3a418a90dbde2 Mon Sep 17 00:00:00 2001 From: Daniel K Lyons <dlyons@nrao.edu> Date: Tue, 13 Oct 2020 11:37:32 -0600 Subject: [PATCH] Make add_file work --- services/workflow/src/workflow/server.py | 14 +++++++------- shared/workspaces/src/workspaces/schema.py | 3 +++ shared/workspaces/src/workspaces/services.py | 5 +++-- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/services/workflow/src/workflow/server.py b/services/workflow/src/workflow/server.py index 544248f4b..452a7b7e6 100644 --- a/services/workflow/src/workflow/server.py +++ b/services/workflow/src/workflow/server.py @@ -29,7 +29,7 @@ def lookup_request(request): def lookup_file(request): - return next(file for file in lookup_workflow(request).files if file.filename == request.matchdict['filename']) + return next(file for file in lookup_request(request).files if file.filename == request.matchdict['filename']) @view_defaults(route_name='workflows', renderer='json') @@ -109,7 +109,7 @@ class WorkflowFilesRestService: def __init__(self, request): self.request = request - @view_config(request_method='PUT', route_name='add_file_to_workflow_request') + @view_config(request_method='PUT', route_name='workflow_request_file') def add_file(self): """ Add a file to this workflow request. @@ -132,7 +132,7 @@ class WorkflowFilesRestService: """ return self.request.context['files'] - @view_config(request_method='GET', route_name='workflow_file', accept='json', renderer='string') + @view_config(request_method='GET', accept='text/plain', route_name='workflow_request_file') def get_file_text(self): """ Get the text contents of this file @@ -140,9 +140,10 @@ class WorkflowFilesRestService: Audience: ??? :return: """ - return self.request.context['content'] + self.request.response.body = self.request.context.content + return self.request.response - @view_config(request_method='GET', route_name='workflow_file', accept='application/json') + @view_config(request_method='GET', accept='application/json', route_name='workflow_request_file') def get_file_json(self): """ Get a JSON representation of this file @@ -217,9 +218,8 @@ def main(global_config, **settings): config.add_route('create_workflow_request', '/workflows/{name}/requests/create', factory=lookup_workflow) config.add_route('workflow_request', '/workflows/requests/{request_id}', factory=lookup_request) config.add_route('workflow_request_files', '/workflows/requests/{request_id}/files', factory=lookup_request) - config.add_route('add_file_to_workflow_request', '/workflows/requests/{request_id}/files/{filename}', factory=lookup_request) + config.add_route('workflow_request_file', '/workflows/requests/{request_id}/files/{filename}', factory=lookup_file) config.add_route('submit_workflow_request', '/workflows/requests/{request_id}/submit', factory=lookup_request) - config.add_route('workflow_file', '/workflows/requests/{request_id}/files/{filename}', factory=lookup_file) config.include('pyramid_beaker') config.scan('.') diff --git a/shared/workspaces/src/workspaces/schema.py b/shared/workspaces/src/workspaces/schema.py index 5ccca9afd..1091e7b47 100644 --- a/shared/workspaces/src/workspaces/schema.py +++ b/shared/workspaces/src/workspaces/schema.py @@ -479,6 +479,9 @@ class WorkflowRequestFile(Base): def __repr__(self): return f"<WorkflowRequestFile filename={self.filename}>" + def __json__(self, request): + return {'filename': self.filename} + def get_engine(): """ diff --git a/shared/workspaces/src/workspaces/services.py b/shared/workspaces/src/workspaces/services.py index d71da7331..bcb4e25e6 100644 --- a/shared/workspaces/src/workspaces/services.py +++ b/shared/workspaces/src/workspaces/services.py @@ -583,7 +583,7 @@ class WorkflowInfo(WorkflowInfoIF): self.session.add(request) self.session.flush() - def save_file(self, request_id: int, filename: str, content: str): + def save_file(self, request_id: int, filename: str, content: bytes): """ Save a given List of request files :param request_id: @@ -591,7 +591,8 @@ class WorkflowInfo(WorkflowInfoIF): :param filename: :return: """ - wrf = WorkflowRequestFile(workflow_request_id=request_id, filename=filename, content=content.encode()) + wrf = WorkflowRequestFile(workflow_request_id=request_id, filename=filename, content=content) self.session.add(wrf) self.session.flush() + return wrf -- GitLab