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

Move some of the processing into the route manipulations

parent efbb7d68
No related branches found
No related tags found
No related merge requests found
......@@ -5,6 +5,8 @@ from sqlalchemy.orm import scoped_session, sessionmaker
from zope.sqlalchemy import ZopeTransactionExtension
from pyramid.renderers import JSONP
from workflow.workflow import lookup_workflow, lookup_file
DB = {}
......@@ -17,9 +19,10 @@ def main(global_config, **settings):
config.add_renderer('jsonp', JSONP(param_name='callback'))
config.add_route('workflows', '/workflows')
config.add_route('workflow', '/workflows/{id}')
config.add_route('submit_workflow', '/workflows/{id}/submit')
config.add_route('workflow_files', '/workflows/{id}/files')
config.add_route('workflow', '/workflows/{id}', factory=lookup_workflow)
config.add_route('submit_workflow', '/workflows/{id}/submit', factory=lookup_workflow)
config.add_route('workflow_files', '/workflows/{id}/files', factory=lookup_workflow)
config.add_route('workflow_file', '/workflows/{id}/files/{filename}', factory=lookup_file)
config.include('pyramid_beaker')
config.scan('workflow.workflow')
......
from pyramid.response import Response
from pyramid.view import view_config, view_defaults
WORKFLOWS = [{'id': 1, 'name': 'foo', 'files': [{'id': 1, 'name': 'first file'}]}]
WORKFLOWS = [{'id': 1, 'name': 'foo', 'files': {'file.txt': {'id': 1, 'name': 'file.txt', 'content': 'Hello, world!'}}}]
def lookup_workflow(request):
return WORKFLOWS[int(request.matchdict['id'])]
def lookup_file(request):
return lookup_workflow(request)['files'][request.matchdict['filename']]
@view_defaults(route_name='workflows', renderer='json')
......@@ -19,12 +28,12 @@ class WorkflowService:
@view_config(request_method='GET', route_name='workflow')
def get_workflow(self):
return WORKFLOWS[int(self.request.matchdict['id'])]
return self.request.context
@view_config(request_method='POST', route_name='submit_workflow')
def submit_workflow(self):
# submit the workflow for processing
print(f"Submitting workflow {self.request.matchdict['id']}")
print(f"Submitting workflow {self.request.context['id']}")
@view_config(request_method='POST', route_name='workflow_files')
def add_file(self):
......@@ -33,4 +42,12 @@ class WorkflowService:
@view_config(request_method='GET', route_name='workflow_files')
def get_files(self):
return WORKFLOWS[int(self.request.matchdict['id'])]['files']
return self.request.context['files']
@view_config(request_method='GET', route_name='workflow_file', accept='text/plain', renderer='string')
def get_file_text(self):
return self.request.context['content']
@view_config(request_method='GET', route_name='workflow_file', accept='application/json')
def get_file_json(self):
return self.request.context
\ No newline at end of file
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