Skip to content
Snippets Groups Projects
Commit d5bf626f authored by Charlotte Hausman's avatar Charlotte Hausman
Browse files

workflow file persistence work

parent 0dc91727
No related branches found
No related tags found
No related merge requests found
......@@ -24,6 +24,10 @@ def lookup_workflow(request):
return request.info.lookup_workflow_definition(request.matchdict['name'])
# def lookup_request(request):
# return request.info.lookup_workflow_request(request.matchdict['requests'])
def lookup_file(request):
return lookup_workflow(request)['files'][request.matchdict['filename']]
......@@ -93,7 +97,7 @@ class WorkflowFilesRestService:
def __init__(self, request):
self.request = request
@view_config(request_method='POST')
@view_config(request_method='POST', route_name='add_file')
def add_file(self):
"""
Add a file to this workflow request.
......@@ -101,6 +105,10 @@ class WorkflowFilesRestService:
Audience: front-end and CLI
"""
print('Adding a file')
file = self.request.info.save_file(request_id=self.request.GET.get("request"),
filename=self.request.GET.get("filename"),
content=self.request.GET.get("content"))
return file
@view_config(request_method='GET')
def get_files(self):
......@@ -190,6 +198,7 @@ def main(global_config, **settings):
config.add_route('workflow', '/workflows/{name}', factory=lookup_workflow)
config.add_route('create_workflow', '/workflows/{name}/create', factory=lookup_workflow)
config.add_route('submit_workflow', '/workflows/{name}/submit', factory=lookup_workflow)
config.add_route('add_file', '/workflows/file')
config.add_route('workflow_files', '/workflows/{name}/files', factory=lookup_workflow)
config.add_route('workflow_file', '/workflows/{name}/files/{filename}', factory=lookup_file)
......
......@@ -431,7 +431,7 @@ class WorkflowRequest(Base):
@request.setter
def create_request(self, request: AbstractRequest):
self.workflow_name, self.argument = request.workflow_name, request.argument
self.workflow_name, self.argument = request.name, request.argument
# TODO: create following fields in table
def update_status(self, status: str):
......
......@@ -48,7 +48,7 @@ from .schema import (
AbstractFile,
CapabilityEvent,
CapabilityVersion,
Base,
Base, WorkflowRequestFile,
)
from channels.amqp_helpers import (
workflow_events,
......@@ -556,12 +556,16 @@ class WorkflowInfo(WorkflowInfoIF):
def lookup_workflow_definition(self, name: str) -> Workflow:
return self.session.query(Workflow).get(name)
def lookup_workflow_request(self, request_id: int) -> Workflow:
return self.session.query(WorkflowRequest).get(request_id)
def all_workflows(self) -> List[Workflow]:
return self.session.query(Workflow).all()
def create_workflow_request(
self, workflow_name: str, argument: Dict
) -> WorkflowRequest:
self,
workflow_name: str,
argument: Dict) -> WorkflowRequest:
"""
Create new workflow request and save to database
:param workflow_name: name of workflow to run
......@@ -575,8 +579,21 @@ class WorkflowInfo(WorkflowInfoIF):
def save_request(self, request: WorkflowRequest):
"""
Save a given entity and return an integer identifier for it
:param entity: the entity to save
:return: the entity's identifier
:param request: request to save
:return: the entity's identifier
"""
self.session.add(request)
self.session.flush()
def save_file(self, request_id: int, filename: str, content: str):
"""
Save a given List of request files
:param request_id:
:param content:
:param filename:
:return:
"""
wrf = WorkflowRequestFile(workflow_request_id=request_id, filename=filename, content=content.encode())
self.session.add(wrf)
self.session.flush()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment