163:9ed8b453c537 0.5.0
Anton Shestakov <av6@dwimlabs.net>, Tue, 31 Oct 2017 16:50:02 +0800
docs: update what's new for 0.5.0

previous change 105:a0b4b59d86d5

fruitbar/crud.py

Permissions: -rw-r--r--

Other formats: Feeds:
from flask import g, request
from flask_restful import Resource
from CodernityDB.database import RecordNotFound, RecordDeleted
class ResourceList(Resource):
db_index = 'id'
doc_stub = {}
def get(self, workspace):
records = g.db.get_many(self.db_index, workspace, with_doc=True)
return [record['doc'] for record in records]
def post(self, workspace):
doc = request.json.copy()
doc.update(self.doc_stub)
doc.update({'workspace': workspace})
response = g.db.insert(doc)
return g.db.get('id', response['_id'], with_doc=True)
class ResourceCombiner(Resource):
combine = {}
def get(self, workspace):
result = {}
for key, resource_class in self.combine.items():
resource = resource_class()
result[key] = resource.get(workspace)
return result
class CRUDResource(Resource):
""" CRUD? More like RUD!
"""
safe_fields = tuple()
def get(self, workspace, resource_id):
try:
doc = g.db.get('id', resource_id, with_doc=True)
if doc['workspace'] != workspace:
raise RecordNotFound
except (RecordNotFound, RecordDeleted):
return '', 404
return doc
def put(self, workspace, resource_id):
try:
doc = g.db.get('id', resource_id, with_doc=True)
if doc['workspace'] != workspace:
raise RecordNotFound
except (RecordNotFound, RecordDeleted):
return '', 404
userdata = {
k: v for k, v in request.json.items()
if k in self.safe_fields
}
doc.update(userdata)
response = g.db.update(doc)
return self.get(workspace, response['_id'])
def delete(self, workspace, resource_id):
try:
doc = g.db.get('id', resource_id, with_doc=True)
if doc['workspace'] != workspace:
raise RecordNotFound
except (RecordNotFound, RecordDeleted):
return '', 404
g.db.delete(doc)
return '', 200