Skip to content
Snippets Groups Projects

Draft:Generic api v1

Open David Beniamine requested to merge generic-api-v1 into master
4 files
+ 76
27
Compare changes
  • Side-by-side
  • Inline

Files

+ 12
9
@@ -10,6 +10,9 @@ from flask_apispec import doc
from flask_restful import marshal, fields
from Mirador_backend.models import BaseModel, NotFound
from Mirador_backend.utils.app import getApp
logger = getApp().logger
class ResourceGroup(MethodResource, Resource):
@@ -17,7 +20,7 @@ class ResourceGroup(MethodResource, Resource):
def parseData(self, request):
"""Read the request and return only the useful data"""
return request.form
return request.json
def get_queryset(self):
"""Get the queryset for the request"""
@@ -31,7 +34,7 @@ class ResourceGroup(MethodResource, Resource):
def post(self):
"""Handle a post request"""
m = Model().create(self.parseData(request))
m = self.Model().create(self.parseData(request))
return marshal(m, self.Model.fields), 200
def genDoc(descr, tags):
@@ -55,7 +58,7 @@ class ResourceItem(MethodResource, Resource):
def parseData(self, request):
"""Read the request and return only the useful data"""
return request.form
return request.json
def get(self, id):
"""Handle a get request"""
@@ -70,21 +73,21 @@ class ResourceItem(MethodResource, Resource):
m.fill(data)
m = m.save()
except NotFound:
m = self.Model.create(data)
return marshal(model, self.Model.fields), 200
data['id'] = id
m = self.Model().create(data)
return marshal(m, self.Model.fields), 200
def patch(self, id):
"""Handle a patch request"""
m = self.get_queryset_or_abort(id)
m.clear()
m.fill(self.parseData(request))
return marshal(m.save(), self.Model.fields), 200
m.save()
return marshal(m, self.Model.fields), 200
def delete(self, id):
"""Handle a delete request"""
m = self.get_queryset_or_abort(id)
return marshal(m.delete(), fields.Boolean), 200
return marshal({'success': m.delete()}, {'success': fields.Boolean}), 200
def genDoc(descr, tags):
doc(description=f'Get {descr} by id', tags=tags)(ResourceItem.get)
Loading