Beispiel #1
0
    def post(self):
        args = self.reqparse.parse_args()
        b = Beer.all(keys_only=True).filter('name', args.name).get()
        if b:
            abort(409, message="Beer with name '%s' already exists" % args.name)
        g = None
        if args.beer_glass_id:
            g = BeerGlass.get_by_id(args.beer_glass_id)
        u = get_user()
        if u is None:
            abort(404, message="User not found.")
        date_added = datetime.datetime.utcnow()
        if u.last_beer_add_date is not None and u.user_name != "admin":
            next_allowed = (u.last_beer_add_date + datetime.timedelta(days=1) - date_added).total_seconds()
            if next_allowed > 0:
                abort(429, message="User can only add one beer per day.", allowed_in=round(next_allowed))

        if args.description is not None:
            args.description = args.description[:500]
        b = Beer(name=args.name,
                 description=args.description,
                 ibu=args.ibu,
                 calories=args.calories,
                 abv=args.abv,
                 style=args.style,
                 brewery_location=args.brewery_location,
                 beer_glass=g)
        b.put()
        u.last_beer_add_date = date_added
        u.put()
        return marshal(b, beer_fields)
Beispiel #2
0
    def put(self, id):
        args = self.reqparse.parse_args()
        b = Beer.get_by_id(id)
        if not b:
            abort(404)
        g = None
        if args.beer_glass_id is not None:
            g = BeerGlass.get_by_id(args.beer_glass_id)
            b.beer_glass = g

        u = dict(filter(lambda (k, v): v is not None, args.items()))
        update_model(b, u)
        b.put()
        return marshal(b, beer_fields)