def checkout(request): request.session['order_step'] = 'checkout' session = SessionVariable(request,'current_fundraiser') session_shipment = session.session_shipment() session_fundraiser = session.session_fundraiser() try: stripe_api_key = settings.STRIPE_API_KEY except: stripe_api_key = None context = { 'stripe_api_key' : stripe_api_key, 'session_shipment' : session_shipment, 'session_fundraiser' : session_fundraiser } template = 'fundraiser/checkout.html' return render( request,template,context, context_instance=RequestContext(request, processors=[get_home_variables]) )
def edit_shipment(request,id): request.session['order_step'] = 'checkout' session = SessionVariable(request,'current_fundraiser') session_fundraiser = session.session_fundraiser() session_shipment = session.session_shipment() profile_form = ShipmentProfileForm(request.POST or None,instance=session_fundraiser.profile) address_form = AddressForm(request.POST or None, instance=session_shipment.address) if profile_form.is_valid() and address_form.is_valid(): profile_form.save() address_form.save() title = 'You have successfully updated your shipment.' messages.success(request,title) return HttpResponseRedirect(reverse('create_shipment')) template = 'fundraiser/edit_shipment.html' context = { 'shipment_address_form' : address_form, 'shipment_profile_form' : profile_form, 'session_shipment' : session_shipment } return render(request,template,context)
def chosen_fundraiser_type(request): request.session['order_step'] = 'selections' session = SessionVariable(request,'current_fundraiser') session_shipment = session.session_shipment() if request.POST: salsas = ChooseSalsasFundraiser(request) salsas.set_product_and_qty_selection() if salsas.theres_no_selections_made(): title = 'Please make at least one selection!' messages.error(request,title) return HttpResponseRedirect(reverse('chosen_fundraiser_type')) else: if session_shipment.has_selections(): session_shipment.remove_selections() if session_shipment: try: salsas.save_selections() except: title = 'There was an error. Make sure you use only numbers in quantities!' messages.error(request,title) return HttpResponseRedirect(reverse('chosen_fundraiser_type')) return HttpResponseRedirect(reverse('create_shipment')) show_top_sellers = session.session_fundraiser().plan.show_top_sellers context = { 'session' : session, 'settings' : settings, 'show_top_sellers' : show_top_sellers } template = 'fundraiser/choose-salsas.html' return render(request,template,context)
def post(self,request,format=None): session = SessionVariable(request,'current_fundraiser') session_fundraiser = session.session_fundraiser() session_shipment = session.session_shipment() post = request.POST check = post['type'] == 'check' credit = post['type'] == 'credit' comment = post['comment'] response = None comment_form,created = FundraiserOrderComment.objects.get_or_create(fundraiser=session_fundraiser,comment=comment) if created: session_shipment.comment = comment_form session_shipment.save() if check: if session_fundraiser: payment = Payment.objects.create(type='check') payment.fundraiser = session_fundraiser session_fundraiser.status = 'unpaid' session_fundraiser.finalized = True payment.save() session_fundraiser.save() return Response('Success', status=status.HTTP_200_OK) elif credit: stripe.api_key = STRIPE_API_KEY['key'] token = post['token'] amount = float(post['amount']) description = post['description'] transaction_succeeded = False amount_in_cents = (int(amount*100)) try: charge = stripe.Charge.create( amount=amount_in_cents, # amount in cents, again currency="usd", source=token, description=description ) transaction_succeeded = True except stripe.error.CardError, e: return Response(e,status=status.HTTP_404_NOT_FOUND) # if session fundraiser exists and payment was successful: # then create a payment and set the fundraiser if session_fundraiser and transaction_succeeded: payment = Payment.objects.create(type='credit') payment.fundraiser = session_fundraiser session_fundraiser.status = 'paid' session_fundraiser.finalized = True last_4 = charge['card']['last4'] card_type = charge['card']['brand'] payment.last_4 = last_4 payment.card_type = card_type payment.stripe_id = charge['balance_transaction'] payment.save() session_fundraiser.save() return Response('Success', status=status.HTTP_200_OK)