Exemplo n.º 1
0
 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'
Exemplo n.º 2
0
    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
        ))
Exemplo n.º 3
0
def collection_callback(business):
    return Coupon.get_by_business(business.key.id())