def create_promo(request): inputs = request.POST if request.POST else None form = CreatePromoForm(inputs) build = {'form': form} if (inputs) and form.is_valid(): cd = form.cleaned_data try: find_platform = Platform.objects.get(key=cd['platform_key']) find_cust = Customer.objects.get(email=cd['email'], platform=find_platform) new_promo = Promo(customer=find_cust, value=cd['value'], created_date=current_time_aware(), code=gen_alphanum_key()) new_promo.save() except (Customer.DoesNotExist): build['error_message'] = 'The customer is not registered.' build['results'] = { 'success': False, 'error': 'The customer is not registered.' } except (Platform.DoesNotExist): build['error_message'] = 'The platform key is not valid.' build['results'] = { 'success': False, 'error': 'The platform key is not valid.' } except (Exception) as err: build['error_message'] = '%s' % err build['results'] = {'success': False, 'error': '%s' % err} else: results = new_promo.__dict__ for i in ('id', 'customer_id', '_state'): if i in results: del results[i] if 'created_date' in results: results['created_date'] = str(results['created_date']) build['results'] = results build['results']['success'] = True else: err_string = "" for error in form.errors.iteritems(): err_string += "%s - %s " % ( error[0], unicode(striptags(error[1]) if striptags else error[1])) build['results'] = {'success': False, 'error': err_string} return gen_search_display(request, build, False, method='post')
def create_promo(request): inputs = request.POST if request.POST else None form = CreatePromoForm(inputs) build = {'form': form} if (inputs) and form.is_valid(): cd = form.cleaned_data try: find_platform = Platform.objects.get(key=cd['platform_key']) find_cust = Customer.objects.get(email=cd['email'], platform=find_platform) new_promo = Promo(customer=find_cust, value=cd['value'], created_date= current_time_aware(), code=gen_alphanum_key()) new_promo.save() except (Customer.DoesNotExist): build['error_message'] = 'The customer is not registered.' build['results'] = {'success': False, 'error': 'The customer is not registered.'} except (Platform.DoesNotExist): build['error_message'] = 'The platform key is not valid.' build['results'] = {'success': False, 'error': 'The platform key is not valid.'} except (Exception) as err: build['error_message'] = '%s' % err build['results'] = {'success': False, 'error': '%s' % err} else: results = new_promo.__dict__ for i in ('id', 'customer_id', '_state'): if i in results: del results[i] if 'created_date' in results: results['created_date'] = str(results['created_date']) build['results'] = results build['results']['success'] = True else: err_string = "" for error in form.errors.iteritems(): err_string += "%s - %s " % (error[0], unicode(striptags(error[1]) if striptags else error[1])) build['results'] = {'success': False, 'error': err_string} return gen_search_display(request, build, False, method='post')
def close_contests(request): if request.user.is_authenticated(): clean = False else: clean = True inputs = request.POST if request.POST else None if clean: cred = check_creds(request.POST, Platform) if not cred['success']: return HttpResponse(json.encode(cred), mimetype="application/json") current_time = current_time_aware() yesterday = current_time - datetime.timedelta(days=1) contests = Contest.objects.filter(closed=False) contest_data = [] for i in contests: if i.end_price_date() < current_time and i.end_price_date( ) >= yesterday: contest_meta_data = {'key': i.key} subs = Submission.objects.filter( contest=i).order_by('created_date') contest_meta_data['subs'] = subs.count() if subs: # build list of current flights res = run_flight_search(i.origin_code, i.destination_code, i.depart_date, i.return_date, 'any', 'any', 'any', 'any', cached=True) if res['success']: #return HttpResponse(json.encode(res), mimetype="application/json") i.end_price = res['min_fare'] if not i.end_price: i.closed = True i.save() else: try: # find earliest-closest entry closest = None for k in subs: dif = abs(k.value - i.end_price) if not closest: closest = (k, dif) else: if dif < closest[1]: closest = (k, dif) # create promo for this user new_promo = Promo(customer=closest[0].customer, created_date=current_time, value=i.value, code=gen_alphanum_key()) new_promo.save() # send email subject = "You won the fare prediction contest!" title = "Dang, you are good." body = "You may remember entering a fare prediction contest on %s. We told you we'd let you know if your guess was closest to the actual fare and here we are. Also as promised, here's a promo code which let's you buy a Flex Fare for just $1:\n\n%s\n\nThe Level Skies Team" % ( closest[0].created_date.strftime("%B %d"), new_promo.code) try: send_template_email(closest[0].customer.email, subject, title, body) except: pass # close contest i.closed = True i.save() except Exception as err: contest_meta_data['error'] = err contest_data.append(contest_meta_data) results = {'success': True, 'contest_data': contest_data} return gen_search_display(request, {'results': results}, clean, method='post')
def close_contests(request): if request.user.is_authenticated(): clean = False else: clean = True inputs = request.POST if request.POST else None if clean: cred = check_creds(request.POST, Platform) if not cred['success']: return HttpResponse(json.encode(cred), mimetype="application/json") current_time = current_time_aware() yesterday = current_time - datetime.timedelta(days=1) contests = Contest.objects.filter(closed=False) contest_data = [] for i in contests: if i.end_price_date() < current_time and i.end_price_date() >= yesterday: contest_meta_data = {'key': i.key} subs = Submission.objects.filter(contest=i).order_by('created_date') contest_meta_data['subs'] = subs.count() if subs: # build list of current flights res = run_flight_search(i.origin_code, i.destination_code, i.depart_date, i.return_date, 'any', 'any', 'any', 'any', cached=True) if res['success']: #return HttpResponse(json.encode(res), mimetype="application/json") i.end_price = res['min_fare'] if not i.end_price: i.closed = True i.save() else: try: # find earliest-closest entry closest = None for k in subs: dif = abs(k.value-i.end_price) if not closest: closest = (k, dif) else: if dif < closest[1]: closest = (k, dif) # create promo for this user new_promo = Promo(customer=closest[0].customer, created_date=current_time, value=i.value, code=gen_alphanum_key()) new_promo.save() # send email subject = "You won the fare prediction contest!" title = "Dang, you are good." body = "You may remember entering a fare prediction contest on %s. We told you we'd let you know if your guess was closest to the actual fare and here we are. Also as promised, here's a promo code which let's you buy a Flex Fare for just $1:\n\n%s\n\nThe Level Skies Team" % (closest[0].created_date.strftime("%B %d"), new_promo.code) try: send_template_email(closest[0].customer.email, subject, title, body) except: pass # close contest i.closed = True i.save() except Exception as err: contest_meta_data['error'] = err contest_data.append(contest_meta_data) results = {'success': True, 'contest_data': contest_data} return gen_search_display(request, {'results': results}, clean, method='post')