def GET( self, request, id=None, start_time=None, end_time=None, category=None, parent_category=None, *args, **kwargs ): base = Event.objects if None != parent_category: base = base.filter(category__parent_category__name__exact=parent_category) if None != start_time: base = base.filter(time__gte=parse_time(start_time)) if None != end_time: base = base.filter(time__lte=parse_time(end_time)) if None != category: base = base.filter(category__name__exact=category) events = base.all() return api_out( [ event.as_dict() for event in events ] )
def GET(self, request, *args, **kwargs): """ Return a lot of stories to test pagination. """ return api_out( { "stories": [{ "id": id_, "update_time": str(id_) } for id_ in range(100)], }, {"actions": { "do_something": "stuff" }})
def GET(self, request, *args, **kwargs): return api_out( [ {"id": "a"}, {"id": "b"}, {"id": "c"} ], { "actions": { "do_something": "stuff" } } )
def _check(self, request, *args, **kwargs): if "If-Range" in request.META: newest_id = request.META["If-Range"] elif "_if_range" in request.REQUEST: newest_id = request.REQUEST["_if_range"] else: return fn(self, request, *args, **kwargs) # Force newest_id to be a string newest_id = str(newest_id) # Call the underlying function and get the response response = fn(self, request, *args, **kwargs) # Convert to JSON response = json.loads(response.content) # Grab the full list of elements out of the response if "error" in response: return api_error( response["error"]["message"], error_type=response["error"]["type"]) elements = value_for_keypath(response, keypath) meta_info = { k: v for k, v in response.items() if k != "data" } # Get the index of the element which is the "newest" # element (newest) is passed in, in the list so we # can slice the list and only return elements newer # than that idx = find( newest_id, [ str(elm[element_key]) for elm in elements ] )[0] set_value_for_keypath(response, keypath, elements[:idx]) return api_out(response["data"], meta_info)
def POST(self, request, parent_category, category, lat, lon, *args, **kwargs): try: parent_category = ParentCategory.objects.get(name=parent_category) category = Category.objects.get(name=category, parent_category=parent_category) except ParentCategory.DoesNotExist: return api_error("A parent category named {0} does not exist".format(parent_category)) except Category.DoesNotExist: return api_error("A category named {0} does not exist".format(category)) event = Event.objects.create( category=category, lat=float(lat), lon=float(lon), creator_ip=request.META["REMOTE_ADDR"] ) return api_out(event.as_dict())
def GET(self, request, *args, **kwargs): """ Return a lot of stories to test pagination. """ return api_out({ "stories": [ { "id": id_, "update_time": str(id_) } for id_ in range(100) ], }, { "actions": { "do_something": "stuff" } } )
def GET(self, request, id=None, *args, **kwargs): return api_out( [ { "name": parent.name, "link": parent.get_absolute_url(), "id": parent.pk, "children": [ { "name": category.name, "link": category.get_absolute_url() } for category in parent.children.all() ] } for parent in ParentCategory.objects.select_related().filter(visible=True).all() ] )
def GET(self, request, *args, **kwargs): return api_out({"does it work?": "yes"})
def GET(self, request, *args, **kwargs): return api_out({ "does it work?": "yes" })
def GET(self, request, id=None, *args, **kwargs): return api_out([])