Anton Shestakov <engored@ya.ru>, Fri, 11 Jan 2013 17:22:25 +0900
Fetching projects and tasks all at once.
fruitbar/crud.py
Permissions: -rw-r--r--
from flask import g, request from flask.ext.restful import Resource from CodernityDB.database import RecordNotFound, RecordDeleted class ResourceList(Resource): def get(self, workspace): return [project['doc'] for project in g.db.get_many(self.db_index, workspace, with_doc=True)] 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): def get(self, workspace): for key, resource_class in self.combine.items(): resource = resource_class() result[key] = resource.get(workspace) class CRUDResource(Resource): def get(self, workspace, resource_id): doc = g.db.get('id', resource_id, with_doc=True) if doc['workspace'] != workspace: except (RecordNotFound, RecordDeleted): def put(self, workspace, resource_id): doc = g.db.get('id', resource_id, with_doc=True) if doc['workspace'] != workspace: except (RecordNotFound, RecordDeleted): userdata = dict((k, v) for (k, v) in request.json.items() if k in self.safe_fields) response = g.db.update(doc) return self.get(workspace, response['_id']) def delete(self, workspace, resource_id): doc = g.db.get('id', resource_id, with_doc=True) if doc['workspace'] != workspace: except (RecordNotFound, RecordDeleted):