Skip to content
Snippets Groups Projects
Commit 113de33f authored by Daniel Lyons's avatar Daniel Lyons
Browse files

Add some notes about where we are at now

parent 08815f3e
No related branches found
No related tags found
No related merge requests found
...@@ -10,6 +10,28 @@ from sqlalchemy.ext.declarative import declarative_base ...@@ -10,6 +10,28 @@ from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker from sqlalchemy.orm import sessionmaker
"""
Work done:
☑ Initial sketch of using SQL Alchemy with Pyramid
☑ Sketch of first routes we need
Work to do:
☐ Bring over interfaces from wksp0 project
☐ Need to flesh out the object model—requests have their own files, workflows have templates
☐ Separate REST hierarchy for workflow definitions
☐ Actually do the work, preferably in model classes, not REST API directly
☐ Separate this into separate modules, once it makes sense to people how it works
☐ Workflow initiation CLI
To consider:
☐ Do we want to use Marshmallow to validate inputs/generate API documentation?
☐ Do we want to have a separate package with interfaces/model? Or perhaps only JSON schemas?
"""
# --------------------------------------------------------- # ---------------------------------------------------------
# #
# M O D E L # M O D E L
...@@ -42,22 +64,31 @@ WORKFLOWS = [{'id': 1, 'name': 'foo', 'files': {'file.txt': {'id': 1, 'name': 'f ...@@ -42,22 +64,31 @@ WORKFLOWS = [{'id': 1, 'name': 'foo', 'files': {'file.txt': {'id': 1, 'name': 'f
def lookup_workflow(request): def lookup_workflow(request):
# this should change to use SQL Alchemy
return WORKFLOWS[int(request.matchdict['id'])] return WORKFLOWS[int(request.matchdict['id'])]
def lookup_file(request): def lookup_file(request):
# this should change to use SQL Alchemy
return lookup_workflow(request)['files'][request.matchdict['filename']] return lookup_workflow(request)['files'][request.matchdict['filename']]
@view_defaults(route_name='workflows', renderer='json') @view_defaults(route_name='workflows', renderer='json')
class WorkflowService: class WorkflowService:
"""
Top-level service for workflow requests.
TODO: rename this to requests and add new service about workflow definitions with this name
"""
def __init__(self, request): def __init__(self, request):
self.request = request self.request = request
@view_config(request_method='GET') @view_config(request_method='GET')
def list_workflows(self): def list_workflows(self):
""" """
List the workflow requests that we know about List the workflow requests that we know about.
Audience: front-end
:return: :return:
""" """
return self.request.dbsession.query(Workflow).all() return self.request.dbsession.query(Workflow).all()
...@@ -65,7 +96,9 @@ class WorkflowService: ...@@ -65,7 +96,9 @@ class WorkflowService:
@view_config(request_method='POST') @view_config(request_method='POST')
def create_workflow(self): def create_workflow(self):
""" """
Create a new workflow request Create a new workflow request from the name/arguments supplied.
Audience: front-end and CLI
:return: :return:
""" """
WORKFLOWS.append(self.request.json_body) WORKFLOWS.append(self.request.json_body)
...@@ -75,6 +108,8 @@ class WorkflowService: ...@@ -75,6 +108,8 @@ class WorkflowService:
def get_workflow(self): def get_workflow(self):
""" """
Look up a workflow request Look up a workflow request
Audience: front-end
:return: :return:
""" """
return self.request.context return self.request.context
...@@ -83,6 +118,8 @@ class WorkflowService: ...@@ -83,6 +118,8 @@ class WorkflowService:
def submit_workflow(self): def submit_workflow(self):
""" """
Submit this workflow request for processing. Submit this workflow request for processing.
Audience: front-end and CLI
:return: :return:
""" """
print(f"Submitting workflow {self.request.context['id']}") print(f"Submitting workflow {self.request.context['id']}")
...@@ -99,14 +136,18 @@ class WorkflowFilesService: ...@@ -99,14 +136,18 @@ class WorkflowFilesService:
@view_config(request_method='POST') @view_config(request_method='POST')
def add_file(self): def add_file(self):
""" """
Add a file to this workflow request Add a file to this workflow request.
Audience: front-end and CLI
""" """
print('Adding a file') print('Adding a file')
@view_config(request_method='GET') @view_config(request_method='GET')
def get_files(self): def get_files(self):
""" """
Get the files associated with this workflow request Get the files associated with this workflow request.
Audience: front-end
:return: :return:
""" """
return self.request.context['files'] return self.request.context['files']
...@@ -115,6 +156,8 @@ class WorkflowFilesService: ...@@ -115,6 +156,8 @@ class WorkflowFilesService:
def get_file_text(self): def get_file_text(self):
""" """
Get the text contents of this file Get the text contents of this file
Audience: ???
:return: :return:
""" """
return self.request.context['content'] return self.request.context['content']
...@@ -123,6 +166,8 @@ class WorkflowFilesService: ...@@ -123,6 +166,8 @@ class WorkflowFilesService:
def get_file_json(self): def get_file_json(self):
""" """
Get a JSON representation of this file Get a JSON representation of this file
Audience: ???
:return: :return:
""" """
return self.request.context return self.request.context
......
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