Skip to content
Snippets Groups Projects
Verified Commit a5456ebb authored by David Beniamine's avatar David Beniamine
Browse files

Generic donc and marshal

parent a68f361d
No related branches found
No related tags found
1 merge request!2Draft:Generic api v1
...@@ -6,10 +6,15 @@ from apispec import APISpec ...@@ -6,10 +6,15 @@ from apispec import APISpec
from flask_restful import Resource from flask_restful import Resource
from flask_restful_swagger import swagger from flask_restful_swagger import swagger
from flask_apispec.views import MethodResource from flask_apispec.views import MethodResource
from flask_apispec import marshal_with, doc, use_kwargs
class ResourceGroup(MethodResource, Resource): class SimpleResponse(Schema):
message = fields.Str(default='Success')
# TODO add notion of model
class ResourceGroup(MethodResource, Resource):
def get(self): def get(self):
# TODO # TODO
return {'method': 'get', 'mode': 'group'} return {'method': 'get', 'mode': 'group'}
...@@ -18,6 +23,13 @@ class ResourceGroup(MethodResource, Resource): ...@@ -18,6 +23,13 @@ class ResourceGroup(MethodResource, Resource):
# TODO # TODO
return {'method': 'post', 'mode': 'group'} return {'method': 'post', 'mode': 'group'}
def genDoc(descr, tags):
doc(description=f'Get all {descr}', tags=tags)(ResourceGroup.get)
doc(description=f'Create a {descr}', tags=tags)(ResourceGroup.post)
# TODO response on JSON object given in param
marshal_with(SimpleResponse)(ResourceGroup.post)
# TODO marshal collection get response using given object
class ResourceItem(MethodResource, Resource): class ResourceItem(MethodResource, Resource):
def get(self, id): def get(self, id):
...@@ -39,3 +51,11 @@ class ResourceItem(MethodResource, Resource): ...@@ -39,3 +51,11 @@ class ResourceItem(MethodResource, Resource):
def delete(self, id): def delete(self, id):
# TODO # TODO
return {'method': 'delete', 'id': id, 'mode': 'item'} return {'method': 'delete', 'id': id, 'mode': 'item'}
def genDoc(descr, tags):
doc(description=f'Get {descr} by id', tags=tags)(ResourceItem.get)
doc(description=f'Create or update a {descr} by id', tags=tags)(ResourceItem.post)
doc(description=f'Updates a {descr} by id', tags=tags)(ResourceItem.put)
doc(description=f'Updates partially a {descr} by id', tags=tags)(ResourceItem.patch)
doc(description=f'deletes a {descr} by id', tags=tags)(ResourceItem.delete)
# TODO marshal
from Mirador_backend.resources.base import ResourceGroup, ResourceItem from Mirador_backend.resources.base import ResourceGroup, ResourceItem
from flask_apispec import marshal_with, doc, use_kwargs
class MiradorResourceGroup(ResourceGroup):
resourceDescription = 'Mirador resource i e, manifest and collection of IIIF resource' resourceDescription = 'Mirador resource i e, manifest and collection of IIIF resource'
tags = ['Mirador resource'] tags = ['Mirador resource']
doc(description=f'Get all {resourceDescription}', tags=tags)(ResourceGroup.get)
doc(description=f'Create a {resourceDescription}', tags=tags)(ResourceGroup.post) class MiradorResourceGroup(ResourceGroup):
ResourceGroup.genDoc(resourceDescription, tags)
class MiradorResourceItem(ResourceItem): class MiradorResourceItem(ResourceItem):
pass ResourceItem.genDoc(resourceDescription, tags)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment