def get_keg_or_bust(self, keg_id): keg = Keg.get_by_key_name(keg_id) if not keg: keg = Keg.get(keg_id) if not keg: raise webob.exc.HTTPNotFound() return keg
def post(self, keg_id): keg = self.get_keg_or_bust(keg_id) keg.geo_location.lat = self.request.params.get('latitude', keg.geo_location.lat) keg.geo_location.lon = self.request.params.get('longitude', keg.geo_location.lon) keg.photo_url = self.request.params.get('photo_url', keg.photo_url) keg_id = self.request.params.get('keg') if keg_id: keg = Keg.get_by_key_name(keg_id) if not keg: raise InvalidParameterException( param='keg', value=keg_id, description='The given keg could not be located') if keg.empty(): raise InvalidParameterException( param='keg', value=keg_id, description='The given keg is reported empty') query = Keg.all(keys_only=True).filter('keg =', keg) keys = [key for key in query] if keys and not keg.key() in keys: raise InvalidParameterException( param='keg', value=keg_id, description= 'The given keg is already associated to another keg') keg.put() keg.keg = keg.key() keg.put() webapp2.redirect_to('keg', keg_id=keg_id)
def post(self): beer_id = self.request.params['beer'] if Keg.get_by_key_name(name): raise Conflict(name, webapp2.uri_for('keg', keg_id=name)) latitude = self.request.params['latitude'] longitude = self.request.params['longitude'] a_keg = Keg(key_name=name, geo_location=db.GeoPt(latitude, longitude)) a_keg.put() webapp2.redirect_to('keg', keg_id=name)
def post(self): keg_json = request.get_json() try: keg = Keg(pints=keg_json['pints'], starting_pints=keg_json['starting_pints'], kegerator_ordinal=keg_json['kegerator_ordinal']) # TODO: Check for if the count will pass the kegerator max_count value and fail if so keg.kegerator = session.query(Kegerator).filter( Kegerator.id == int(keg_json['kegerator_id'])).first() keg.beer = session.query(Beer).filter( Beer.id == int(keg_json['beer_id'])).first() if keg.beer and keg.kegerator: session.add(keg) session.commit() return (jsonify(keg.to_json()), 201) else: return ('Beer or Kegerator not found', 400) except Exception as e: session.rollback() return ('Missing Parameters', 400)
def get(self): full = self.request.GET.get('full', False) limit = self.request.params.get('limit', 20) offset = self.request.params.get('offset', 0) all_kegs = Keg.all(keys_only=not full) total = all_kegs.count(read_policy=db.EVENTUAL_CONSISTENCY, deadline=5) payload = [a_keg for a_keg in all_kegs.run(offset=offset, limit=min(limit, total))] if not payload: raise webob.exc.HTTPNotFound() data = {} if not full: data['kegs'] = [webapp2.uri_for('keg', keg_id=keg.name()) for keg in all_kegs] else: data['kegs'] = [funcs.convert_model(keg) for keg in all_kegs] data['meta'] = funcs.meta_ok() self.response.write(json.json.dumps(data))