def review2014_quota(request): data = {'result': 'failed'} try: currentCampaign = Campaign.objects.get(slug=review2014CampaignSlug) price = Price.objects.get(name='redenvelope') awards = Award.objects.filter(name=u'贈獎', activity=currentCampaign, price=price, create_time__range=get_1day_range(datetime.now())).count() quotaToday = REVIEW2014_DAILY_QUOTA - awards quota = min(price.quantity, quotaToday) data['result'] = 'success' data['inventory'] = 'normal' if price.quantity > 0 else 'out-of-stock' data['quota'] = quota except Exception as e: print e response = json.dumps(data) return HttpResponse(response, mimetype='application/x-javascript')
def review2014_award(request): data = {'result': 'failed'} if request.user.is_active: currentCampaign = Campaign.objects.get(slug=review2014CampaignSlug) existing = Award.objects.filter(name=u'贈獎', activity=currentCampaign, winner=request.user) if currentCampaign.status == 'end': data['result'] = 'ended' elif not existing.exists() and 'score' in request.GET: price = Price.objects.get(name='redenvelope') # check total quota and daily quota quotaToday = REVIEW2014_DAILY_QUOTA - Award.objects.filter( name=u'贈獎', activity=currentCampaign, price=price, create_time__range=get_1day_range(datetime.now())).count() quota = min(price.quantity, quotaToday) if quota > 0: # save award, decrease price quantity price.quantity -= 1 price.save() award = Award(name=u'贈獎', activity=currentCampaign, winner=request.user, price=price) award.save() data['slug'] = price.name data['name'] = price.description data['result'] = 'success' data['existing'] = False else: data['inventory'] = 'normal' if price.quantity > 0 else 'out-of-stock' data['message'] = 'quota exceeded' elif existing.exists(): data['result'] = 'success' data['slug'] = existing[0].price.name data['name'] = existing[0].price.description data['existing'] = True else: data['message'] = 'invalid request' else: data['message'] = 'unauthorized' response = json.dumps(data) return HttpResponse(response, mimetype='application/x-javascript')