def delete(self): ''' Deletes an existing model ''' b = self.get_entity() authenticate(b) coupons = Coupon.get_by_business(self.get_id(), keys_only=True) if coupons: self.response.status = '409 Conflict' for c in coupons: self.response.write('/api/coupon/{}\n'.format(c.id())) return b.key.delete() self.response.status = '204 No Content'
def get(self): ''' Lists coupons, filtered by optional parameters Parameters: name - Name of the business lat,lon - Location of the business ''' try: lat = float(urllib.unquote(self.request.get('lat'))) lon = float(urllib.unquote(self.request.get('lon'))) except ValueError: query = Business.query() else: query = Business.query_location(lat=lat, lon=lon) name = urllib.unquote(self.request.get('name')) if name: query = query.filter(Business.name == name) coupons = [c for business in query.map(lambda x: Coupon.get_by_business(x.key.id())) for c in business] coupons = sorted(coupons, lambda x, y: cmp(x.end, y.end)) now = datetime.datetime.now() i = 0 expired_index = None for i in range(len(coupons)): if expired_index is None and now < coupons[i].end: expired_index = i if now < coupons[i].start: break expired = coupons[0:expired_index] active = coupons[expired_index:i] inactive = coupons[i:] self.response.status = '200 OK' self.response.write(self.template.render( coupons=active+inactive+expired ))
def collection_callback(business): return Coupon.get_by_business(business.key.id())