示例#1
0
    def get(self, id=None):
        if id is None:
            args = request.args
            count = int(args.get("count", 15))
            offset = int(args.get("offset", 0))
            d = args.get("date", date.today().strftime(DF)).split("-")
            dt = date(int(d[0]), int(d[1]), int(d[2]))
            tagids = args.getlist("tags")
            if tagids:
                tagkeys = [ndb.Key("Tag", int(id)) for id in tagids]
                events = Event.query(ndb.AND(Event.intervals.start_date == dt, Event.tags.IN(tagkeys))).fetch()
            else:
                events = Event.query(Event.intervals.start_date == dt).fetch(count + 1, offset=offset)

            r = [to_dict(e, dt) for e in events]
            more = len(r) > count  # Flag shows there are more results to display
            res = {"more": more, "events": r[:-1] if more else r}
        else:
            res = to_dict(Event.get_by_id(int(id)))
        return Response(json.dumps(res), mimetype="application/json")