def register(request): user = None # checks if the http request is POST if request.method == 'POST': form = UserForm(request.POST) # form validation if form.is_valid(): #Uses stripe API to create a customer in stripe # update based on your billing method (subscription vs one time) # pdb.set_trace() customer = stripe.Customer.create( email=form.cleaned_data['email'], description=form.cleaned_data['name'], # card=form.cleaned_data['stripe_token'], card={ 'number': '4242424242424242', 'exp_month': 10, 'exp_year': 2018, }, plan="gold", ) # customer = stripe.Charge.create( # description = form.cleaned_data['email'], # card = form.cleand_data['stripe_token'], # amount = "5000" # currency = "usd" # ) user = User( name=form.cleaned_data['name'], email=form.cleaned_data['email'], last_4_digits=form.cleaned_data['last_4_digits'], stripe_id=customer.id, ) # set_password takes care of password hasing # ensure encrypted password user.set_password(form.cleaned_data['password']) try: user.save() except IntegrityError: form.addError(user.email + ' is already a member') else: request.session['user'] = user.pk return HttpResponseRedirect('/') else: form = UserForm() return render_to_response( 'register.html', { 'form': form, 'months': range(1, 13), 'publishable': settings.STRIPE_PUBLISHABLE, 'soon': soon(), 'user': user, 'years': range(2011, 2037), }, context_instance=RequestContext(request) )
def register(request): user = None if request.method == 'POST': form = UserForm(request.POST) if form.is_valid(): # update based on your billing method (subscription vs one time) customer = Customer.create( email=form.cleaned_data['email'], description=form.cleaned_data['name'], card=form.cleaned_data['stripe_token'], plan="gold", ) # customer = stripe.Charge.create( # description=form.cleaned_data['email'], # card=form.cleaned_data['stripe_token'], # amount="5000", # currency="usd" # ) cd = form.cleaned_data try: with transaction.atomic(): user = User.create( cd['name'], cd['email'], cd['password'], cd['last_4_digits'], stripe_id='' ) if customer: user.stripe_id = customer.id user.save() else: UnpaidUsers(email=cd['email']).save() except IntegrityError: import traceback form.addError(cd['email'] + ' is already a member' + traceback.format_exc()) user = None else: request.session['user'] = user.pk return HttpResponseRedirect('/') else: form = UserForm() return render_to_response( 'payments/register.html', { 'form': form, 'months': list(range(1, 12)), 'publishable': settings.STRIPE_PUBLISHABLE, 'soon': soon(), 'user': user, 'years': list(range(2011, 2036)), }, context_instance=RequestContext(request) )
def register(request): user = None if request.method == 'POST': form = UserForm(request.POST) print form.is_valid() if form.is_valid(): print 'form passed validation' customer = stripe.Customer.create( email=form.cleaned_data['email'], description=form.cleaned_data['name'], card=form.cleaned_data['stripe_token'], plan='gold', ) cd = form.cleaned_data try: user = User.create(cd['name'], cd['email'], cd['password'], cd['last_4_digits'], customer.id) except IntegrityError: form.addError(cd['email'] + ' is already a member') else: request.session['user'] = user.pk return HttpResponseRedirect('/') else: form = UserForm() return render_to_response('register.html', { 'form': form, 'months': range(1, 12), 'publishable': settings.STRIPE_PUBLISHABLE, 'soon': soon(), 'user': user, 'years': range(2016, 2036) }, context_instance=RequestContext(request))
def register(request): user = None if request.method == "POST": # We only talk AJAX posts now if not request.is_ajax(): return HttpResponseBadRequest("I only speak AJAX nowadays") data = json.loads(request.body.decode()) form = UserForm(data) if form.is_valid(): try: customer = Customer.create( "subscription", email=form.cleaned_data["email"], description=form.cleaned_data["name"], card=form.cleaned_data["stripe_token"], plan="gold", ) except Exception as exp: form.addError(exp) cd = form.cleaned_data try: with transaction.atomic(): user = User.create(cd["name"], cd["email"], cd["password"], cd["last_4_digits"], stripe_id="") if customer: user.stripe_id = customer.id user.save() else: UnpaidUsers(email=cd["email"]).save() except IntegrityError: resp = json.dumps({"status": "fail", "errors": cd["email"] + " is already a member"}) else: request.session["user"] = user.pk resp = json.dumps({"status": "ok", "url": "/"}) return HttpResponse(resp, content_type="application/json") else: # form not valid resp = json.dumps({"status": "form-invalid", "errors": form.errors}) return HttpResponse(resp, content_type="application/json") else: form = UserForm() return render_to_response( "payments/register.html", { "form": form, "months": list(range(1, 12)), "publishable": settings.STRIPE_PUBLISHABLE, "soon": soon(), "user": user, "years": list(range(2011, 2036)), }, context_instance=RequestContext(request), )
def register(request): user = None if request.method == 'POST': form = UserForm(request.POST) print("@@@@@@@@@@@@@@@@@@@@@@@@@@@") print(request) print("@@@@@@@@@@@@@@@@@@@@@@@@@@@") print(form) if form.is_valid(): #update based on your billing method (subscription vs one time) customer = stripe.Customer.create( email=form.cleaned_data['email'], description=form.cleaned_data['name'], card=form.cleaned_data['stripe_token'], plan="gold", ) # customer = stripe.Charge.create( # description = form.cleaned_data['email'], # card = form.cleaned_data['stripe_token'], # amount="5000", # currency="usd" # ) user = User( name=form.cleaned_data['name'], email=form.cleaned_data['email'], last_4_digits=form.cleaned_data['last_4_digits'], stripe_id=customer.id, ) #ensure encrypted password user.set_password(form.cleaned_data['password']) try: user.save() except IntegrityError: form.addError(user.email + ' is already a member') else: request.session['user'] = user.pk return redirect('/') else: form = UserForm() return render( request, 'register.html', { 'form': form, 'months': range(1, 12), 'publishable': settings.STRIPE_PUBLISHABLE, 'soon': soon(), 'user': user, 'years': range(2011, 2036), }, )
def register(request): user = None if request.method == 'POST': form = UserForm(request.POST) if form.is_valid(): #update based on your billing method (subscription vs one time) customer = Customer.create( email=form.cleaned_data['email'], description=form.cleaned_data['name'], card=form.cleaned_data['stripe_token'], plan="gold", ) # customer = stripe.Charge.create( # description=form.cleaned_data['email'], # card=form.cleaned_data['stripe_token'], # amount="5000", # currency="usd" # ) cd = form.cleaned_data from django.db import transaction try: with transaction.atomic(): user = User.create(cd['name'], cd['email'], cd['password'], cd['last_4_digits'], stripe_id="") if customer: user.stripe_id = customer.id user.save() else: UnpaidUsers(email=cd['email']).save() except IntegrityError: import traceback form.addError(cd['email'] + ' is already a member' + traceback.format_exc()) user = None else: request.session['user'] = user.pk return HttpResponseRedirect('/') else: form = UserForm() return render_to_response( 'payments/register.html', { 'form': form, 'months': list(range(1, 12)), 'publishable': settings.STRIPE_PUBLISHABLE, 'soon': soon(), 'user': user, 'years': list(range(2011, 2036)), }, context_instance=RequestContext(request) )
def test_registering_user_twice_cause_error_msg(self): # create a user with same email so we get an integrity error user = User(name='test_user', email='*****@*****.**') user.save() # now create the request used to test the view self.request.session = {} self.request.method = 'POST' self.request.POST = { 'email': '*****@*****.**', 'name': 'test_user', 'stripe_token': '4242424242424242', 'last_4_digits': '4242', 'password': '******', 'ver_password': '******', } # create our expected form expected_form = UserForm(self.request.POST) expected_form.is_valid() expected_form.addError('[email protected] is already a member') # create the expected html html = render_to_response( 'register.html', { 'form': expected_form, 'months': range(1, 12), 'publishable': settings.STRIPE_PUBLISHABLE, 'soon': soon(), 'user': None, 'years': range(2011, 2036), } ) # mock out stripe so we don't hit their server with mock.patch('stripe.Customer') as stripe_mock: config = {'create.return_value': mock.Mock()} stripe_mock.configure_mock(**config) # run the test resp = register(self.request) # verify that we did things correctly self.assertEquals(resp.status_code, 200) self.assertEquals(self.request.session, {}) # assert there is only one record in the database. users = User.objects.filter(email='*****@*****.**') #self.assertEquals(len(users), 1) # check actual return self.assertEquals(resp.content, html.content)
def register(request): user = None if request.method == "POST": form = UserForm(request.POST) if form.is_valid(): # update based on your billing method (subscription vs one time) customer = stripe.Customer.create( email=form.cleaned_data["email"], description=form.cleaned_data["name"], card=form.cleaned_data["stripe_token"], plan="gold", ) # customer = stripe.Charge.create( # description=form.cleaned_data['email'], # card=form.cleaned_data['stripe_token'], # amount="5000", # currency="usd" # ) user = User( name=form.cleaned_data["name"], email=form.cleaned_data["email"], last_4_digits=form.cleaned_data["last_4_digits"], stripe_id=customer.id, ) # ensure encrypted password user.set_password(form.cleaned_data["password"]) try: user.save() except IntegrityError: form.addError(user.email + " is already a member") else: request.session["user"] = user.pk return HttpResponseRedirect("/") else: form = UserForm() return render_to_response( "register.html", { "form": form, "months": range(1, 13), "publishable": settings.STRIPE_PUBLISHABLE, "soon": soon(), "user": user, "years": range(2015, 2041), }, context_instance=RequestContext(request), )
def test_registering_user_twice_cause_error_msg(self): try: with transaction.atomic(): user = User(name = 'pyRock', email = '*****@*****.**') user.save() self.request.session = {} self.request.method = 'POST' self.request.POST = { 'email': '*****@*****.**', 'name': 'pyRock', 'stripe_token': '...', 'last_4_digits': '4242', 'password': '******', 'ver_password': '******', } expected_form = UserForm(self.request.POST) expected_form.is_valid() expected_form.addError('[email protected] is already a member') html = render_to_response( 'register.html', { 'form': expected_form, 'months': list(range(1, 12)), 'publishable': settings.STRIPE_PUBLISHABLE, 'soon': soon(), 'user': None, 'years': list(range(2011, 2036)), } ) with mock.patch('stripe.Customer') as stripe_mock: config = {'create.return_value': mock.Mock()} stripe_mock.configure_mock(**config) resp = register(self.request) users = User.objects.filter(email = '*****@*****.**') #self.assertEquals(len(users), 1) self.assertEqual(resp.status_code, 200) self.assertEqual(self.request.session, {}) except IntegrityError: pass
def register(request): user = None if request.method == "POST": form = UserForm(request.POST) if form.is_valid(): if form.cleaned_data["sub_type"] == "monthly": # update based on your billing method(subscription vs onetime) customer = Customer.create( email=form.cleaned_data["email"], description=form.cleaned_data["name"], card=form.cleaned_data["stripe_token"], plan="gold", ) else: customer = Customer.create( email=form.cleaned_data["email"], description=form.cleaned_data["name"], card=form.cleaned_data["stripe_token"], plan="Platinum", ) cd = form.cleaned_data try: with transaction.atomic(): user = User.create(cd["name"], cd["email"], cd["password"], cd["last_4_digits"]) if customer: user.stripe_id = customer.id user.save() else: UnpaidUsers(email=cd["email"]).save() except IntegrityError: form.addError(cd["email"] + " is already a member") else: request.session["user"] = user.pk return HttpResponseRedirect("/") else: form = UserForm() return render_to_response( "payments/register.html", { "form": form, "months": list(range(1, 12)), "publishable": settings.STRIPE_PUBLISHABLE, "soon": soon(), "user": user, "years": list(range(2011, 2036)), }, context_instance=RequestContext(request), )
def register(request): user = None if request.method == 'POST': form = UserForm(request.POST) if form.is_valid(): #update based on your billing method (subscription vs one time) customer = stripe.Customer.create( email=form.cleaned_data['email'], description=form.cleaned_data['name'], card=form.cleaned_data['stripe_token'], plan='gold', ) #customer = stripe.Charge.create( # description = form.cleaned_data['email'] # card=form.cleaned_data['stripe_token'], # amount="5000", # currency="usd" #) cd = form.cleaned_data try: user = User.create( cd['name'], cd['email'], cd['password'], cd['last_4_digits'], customer.id ) except IntegrityError: form.addError(user.email + ' is already a member') user = None else: request.session['user'] = user.pk return HttpResponseRedirect('/') else: form = UserForm() return render_to_response( 'register.html', { 'form':form, 'months':range(1,12), 'publishable': settings.STRIPE_PUBLISHABLE, 'soon':soon(), 'user':user, 'years':range(2011, 2036), }, context_instance=RequestContext(request) )
def register(request): print "USERFORM = " + str(UserForm) user = None if request.method == 'POST': form = UserForm(request.POST) if form.is_valid(): # subscription billing print "YO!" print "STRIPE_PUBLISHABLE = " + str(settings.STRIPE_PUBLISHABLE) print "stripe_token = " + form.cleaned_data['stripe_token'] customer = stripe.Customer.create( email=form.cleaned_data['email'], description=form.cleaned_data['name'], card=form.cleaned_data['stripe_token'], plan="gold", ) user = User( name=form.cleaned_data['name'], email=form.cleaned_data['email'], last_4_digits=form.cleaned_data['last_4_digits'], stripe_id=customer.id, ) user.set_password(form.cleaned_data['password']) try: user.save() except IntegrityError: print "Already a member bro!" form.addError(user.email + ' is already a member') else: print "Save user payment profile" request.session['user'] = user.pk print request.session['user'] return HttpResponseRedirect('/') else: form = UserForm() return render_to_response( 'register.html', { 'form': form, 'months': range(1, 12), 'publishable': settings.STRIPE_PUBLISHABLE, 'soon': soon(), 'user': user, 'years': range(2011, 2036), }, context_instance=RequestContext(request) )
def register(request): user = None if request.method == 'POST': form = UserForm(request.POST) if form.is_valid(): # Update based on billing method customer = stripe.Customer.create( email=form.cleaned_data['email'], description=form.cleaned_data['name'], card=form.cleaned_data['stripe_token'], plan="gold", ) # customer = stripe.Charge.create( # description=form.cleaned_data['email'], # card=form.cleaned_data['stripe_token'] # amount="5000", # currency="usd", # ) user = User( name=form.cleaned_data['name'], email=form.cleaned_data['email'], last_4_digits=form.cleaned_data['last_4_digits'], stripe_id=customer.id, password=form.cleaned_data['password'], ) # user.set_password(form.cleaned_data['password']) try: user.save() except IntegrityError: form.addError(user.email + 'is already a member') else: request.session['user'] = user.pk return HttpResponseRedirect('/') else: form = UserForm() return render_to_response( 'register.html', { 'form': form, 'months': range(1, 12), 'publishable': settings.STRIPE_PUBLISHABLE, 'soon': soon(), 'user': user, 'years': range(2014, 2039), }, context_instance=RequestContext(request), )
def test_registering_user_twice_cause_error_msg(self, create_mock): # create expected html self.request.session = {} self.request.method = 'POST' self.request.POST = { 'email':'*****@*****.**', 'name':'pyRock', 'stripe_token':'...', 'last_4_digits':'4242', 'password': '******', 'ver_password': '******', } expected_form = UserForm(self.request.POST) expected_form.is_valid() expected_form.addError('[email protected] is already a member') expected_html = render_to_response( 'payments/register.html', { 'form':expected_form, 'months': range(1,13), 'publishable' : settings.STRIPE_PUBLISHABLE, 'soon':views.soon(), 'user':None, 'years':range(2014, 2036), }, #context_instance=RequestContext(self.request) ) # create tested html with mock.patch('stripe.Customer') as stripe_mock: config = {'create.return_value':mock.Mock()} stripe_mock.config_mock(**config) response = views.register(self.request) # verify that we did things correctly self.assertEquals(response.status_code, 200) self.assertEquals(self.request.session, {}) create_mock.assert_called() # check both htmls are equal self.assertEquals(expected_html.content, response.content)
def register(request): user = None if request.method == 'POST': form = UserForm(request.POST) if form.is_valid(): #update based on billing method (subscrip vs one time[add appropriate code for one time]) customer = Customer.create( email=form.cleaned_data['email'], description=form.cleaned_data['name'], card=form.cleaned_data['stripe_token'], plan="gold", ) cd = form.cleaned_data try: user = User.create( cd['name'], cd['email'], cd['password'], cd['last_4_digits'], customer.id ) except IntegrityError: form.addError(cd['email'] + ' is already a member') user = None else: request.session['user'] = user.pk return HttpResponseRedirect('/') else: form = UserForm() return render_to_response( 'register.html', { 'form': form, 'months': list(range(1, 12)), 'publishable': settings.STRIPE_PUBLISHABLE, 'soon': soon(), 'user': user, 'years': list(range(2011, 2036)), }, context_instance=RequestContext(request) )
def post_user(request): form = UserForm(request.data) if form.is_valid(): try: # update based on your billing method (subscription vs one time) customer = Customer.create( "subscription", email=form.cleaned_data['email'], description=form.cleaned_data['name'], card=form.cleaned_data['stripe_token'], plan="gold", ) except Exception as exp: form.addError(exp) cd = form.cleaned_data try: with transaction.atomic(): user = User.create(cd['name'], cd['email'], cd['password'], cd['last_4_digits'], stripe_id='') if customer: user.stripe_id = customer.id user.save() else: UnpaidUsers(email=cd['email']).save() except IntegrityError: form.addError(cd['email'] + ' is already a member') else: request.session['user'] = user.pk resp = {"status": "ok", "url": '/'} return Response(resp, content_type="application/json") resp = {"status": "fail", "errors": form.non_field_errors()} return Response(resp) else: # for not valid resp = {"status": "form-invalid", "errors": form.errors} return Response(resp)
def post_user(request): form = UserForm(request.DATA) print("in post user") if form.is_valid(): try: # update based on your billing method (subscription vs one time) customer = Customer.create( "subscription", email=form.cleaned_data['email'], description=form.cleaned_data['name'], card=form.cleaned_data['stripe_token'], plan="gold", ) except Exception as exp: form.addError(exp) cd = form.cleaned_data try: with transaction.atomic(): user = User.create( cd['name'], cd['email'], cd['password'], cd['last_4_digits']) if customer: user.stripe_id = customer.id user.save() else: UnpaidUsers(email=cd['email']).save() except IntegrityError as e: print("----------Integristy error") print(e) form.addError(cd['email'] + ' is already a member') else: request.session['user'] = user.pk resp = {"status": "ok", "url": '/'} return Response(resp, content_type="application/json") resp = {"status": "fail", "errors": form.non_field_errors()} return Response(resp) else: # for not valid resp = {"status": "form-invalid", "errors": form.errors} return Response(resp)
def register(request): user = None if request.method == 'POST': form = UserForm(request.POST) if form.is_valid(): customer = stripe.Customer.create( email = form.cleaned_data['email'], description = form.cleaned_data['name'], card = form.cleaned_data['stripe_token'], plan="gold", ) user = User( name = form.cleaned_data['name'], email = form.cleaned_data['email'], last_4_digits = form.cleaned_data['last_4_digits'], stripe_id = customer.id, password = form.cleaned_data['password'] ) try: user.save() except IntegrityError: form.addError(user.email + ' is alraedy a member') else: request.session['user'] = user.pk return HttpResponseRedirect('/') else: form = UserForm() return render_to_response( 'register.html', { 'form': form, 'months': range(1, 12), 'publishable': settings.STRIPE_PUBLISHABLE, 'soon': soon(), 'user': user, 'years': range(2011, 2036), }, context_instance=RequestContext(request) )
def register(request): user = None if request.method == 'POST': form = UserForm(request.POST) if form.is_valid(): #update based on your billing method (subscription vs one time) customer = stripe.Charge.create( description=form.cleaned_data['email'], card={ 'number': '4242424242424242', 'exp_month': 10, 'exp_year': 2016 }, amount="5000", currency="usd" ) # customer = stripe.Charge.create( # description=form.cleaned_data['email'], # card=form.cleaned_data['stripe_token'], # amount="5000", # currency="usd", # ) user = User( name=form.cleaned_data['name'], email=form.cleaned_data['email'], last_4_digits=form.cleaned_data['last_4_digits'], stripe_id=customer.id, ) #ensure encrypted password user.set_password(form.cleaned_data['password']) try: user.save() except IntegrityError: form.addError(user.email + ' is already a member') else: request.session['user'] = user.pk return HttpResponseRedirect('/') else: form = UserForm() c = { 'form': form, 'months': range(1, 12), 'publishable': settings.STRIPE_PUBLISHABLE, 'soon': soon(), 'user': user, 'years': range(2011, 2036), } c.update(csrf(request)) return render_to_response( 'register.html', c, context_instance=RequestContext(request) )
def register(request): user = None if request.method == 'POST': form = UserForm(request.POST) if form.is_valid(): cd = form.cleaned_data #Create stripe user with subscription plan cd['plan'] = 'gold' cd['payment_type'] = 'subscription' customer = CustomerManager.stripe_create(**cd) #To change subscription plan to single paymants # comment line abowe and uncomment lines below #cd['amount'] = "5000" #cd['currency'] = "usd" #customer = stripe_create('single', cd) try: with transaction.atomic(): user = User.create( cd['name'], cd['email'], cd['password'], cd['last_4_digits'], stripe_id='' ) # if stripe is working, add stripe id if customer: user.stripe_id = customer.id user.save() else: UnpaidUsers(email=cd['email']).save() except IntegrityError: form.addError(cd['email'] + ' is already a member') else: request.session['user'] = user.pk return HttpResponseRedirect('/') else: form = UserForm() return render_to_response( 'payments/register.html', { 'form':form, 'months': list(range(1,13)), 'publishable' : settings.STRIPE_PUBLISHABLE, 'soon':soon(), 'user':user, 'years':list(range(2014, 2036)), }, context_instance=RequestContext(request) )
def register(request): user = None if request.method == 'POST': # We only talk AJAX posts now if not request.is_ajax(): return HttpResponseBadRequest("I only speak AJAX nowadays") data = json.loads(request.body.decode()) form = UserForm(data) if form.is_valid(): try: customer = Customer.create( "subscription", email=form.cleaned_data['email'], description=form.cleaned_data['name'], card=form.cleaned_data['stripe_token'], plan="gold", ) except Exception as exp: form.addError(exp) cd = form.cleaned_data try: with transaction.atomic(): user = User.create(cd['name'], cd['email'], cd['password'], cd['last_4_digits'], stripe_id="") if customer: user.stripe_id = customer.id user.save() else: UnpaidUsers(email=cd['email']).save() except IntegrityError: resp = json.dumps({ "status": "fail", "errors": cd['email'] + ' is already a member' }) else: request.session['user'] = user.pk resp = json.dumps({"status": "ok", "url": '/'}) return HttpResponse(resp, content_type="application/json") else: # form not valid resp = json.dumps({ "status": "form-invalid", "errors": form.errors }) return HttpResponse(resp, content_type="application/json") else: form = UserForm() return render_to_response('payments/register.html', { 'form': form, 'months': list(range(1, 12)), 'publishable': settings.STRIPE_PUBLISHABLE, 'soon': soon(), 'user': user, 'years': list(range(2011, 2036)), }, context_instance=RequestContext(request))