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)
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)