Ejemplo n.º 1
0
    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
                ]
            )
Ejemplo n.º 2
0
 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"
         }})
Ejemplo n.º 3
0
 def GET(self, request, *args, **kwargs):
     return api_out(
         [
             {"id": "a"},
             {"id": "b"},
             {"id": "c"}
             ],
         {
             "actions": {
                 "do_something": "stuff"
                 }
             }
         )
Ejemplo n.º 4
0
        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)
Ejemplo n.º 5
0
    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())
Ejemplo n.º 6
0
 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"
             }
         }
         )
Ejemplo n.º 7
0
    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()
                ]
            )
Ejemplo n.º 8
0
 def GET(self, request, *args, **kwargs):
     return api_out({"does it work?": "yes"})
Ejemplo n.º 9
0
 def GET(self, request, *args, **kwargs):
     return api_out({ "does it work?": "yes" })
Ejemplo n.º 10
0
 def GET(self, request, id=None, *args, **kwargs):
     return api_out([])