Skip to content

Instantly share code, notes, and snippets.

@evanhammer
Last active August 29, 2015 14:01
Show Gist options
  • Save evanhammer/946771b66bd397f91e91 to your computer and use it in GitHub Desktop.
Save evanhammer/946771b66bd397f91e91 to your computer and use it in GitHub Desktop.
Idea for subresources
class ListResource(BaseResource):
def get(self, parent_id=None):
resource_name = self.resource_manager.list_resource_name
model_class = self.resource_manager.model_class
list_field = self.resource_manager.list_field
ids = self._get_ids_from_query_params()
models = []
# if sent multiple ids then grab the list
if ids:
models = model_class.read_many(ids)
# or do a filter
else:
query_filters = self._get_query_filters()
if parent_id:
query_filters.update({"review": parent_id});
models = model_class.read_by_filter(query_filters)
items = {resource_name: models}
return marshal(items, list_field)
def post(self):
resource_name = self.resource_manager.item_resource_name
item_field = self.resource_manager.item_field
model_class = self.resource_manager.model_class
payload = self._get_payload()
item = {resource_name: model_class.create(payload)}
return marshal(item, item_field), 201
@classmethod
def get_endpoint(class_):
resource_name = class_.resource_manager_class.list_resource_name
return resource_name.replace("_", "-")
def _get_ids_from_query_params(self):
return request.args.getlist("ids[]", None)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment