Beispiel #1
0
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])
	)
Beispiel #2
0
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)		
Beispiel #3
0
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)
Beispiel #4
0
	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)