def checkout_success(request, order_number): """Checkout success page""" save_info = request.session.get('save_info') order = get_object_or_404(Order, order_number=order_number) if request.user.is_authenticated: account = UserAccount.objects.get(user=request.user) # Attach the order to user's profile order.user_account = account order.save() # Save user info if save_info: account_data = { 'default_phone_number': order.phone_number, 'default_street_address1': order.street_address1, 'default_street_address2': order.street_address2, 'default_town_or_city': order.town_or_city, 'default_county': order.county, 'default_postcode_zipcode': order.postcode_zipcode, 'default_country': order.country, } user_account_form = UserAccountForm(account_data, instance=account) if user_account_form.is_valid(): user_account_form.save() messages.success( request, f'Order Successful! \ Your order number is {order_number}. A confirmation \ email will be sent to {order.email}.') if 'bag' in request.session: del request.session['bag'] template = 'checkout/checkout_success.html' context = { 'order': order, } return render(request, template, context)
def account_edit(request): account = request.user if request.method == 'POST': form = UserAccountForm(request.POST, instance=account) if form.is_valid(): form.save() return HttpResponseRedirect(reverse('overview')) else: form = UserAccountForm(instance=account) return render_to_response("account.html", { 'account_form': form, }, context_instance=RequestContext(request))
def create_account(request): if request.method == 'POST': form = UserAccountForm(request.POST) if form.is_valid(): form.save() messages.success( request, 'Account created Successfully.Proceed now to Login') else: messages.error(request, 'Error Exists in your form Fields') else: form = UserAccountForm() return render(request, 'signup.html', {'form': form})
def login(request): if request.method == "POST": account_form = UserAccountForm(request.POST) if account_form.is_valid(): user = auth.authenticate(username=request.POST['username'], password=request.POST['password']) if user: auth.login(user=user, request=request) messages.success(request, "You have successfully logged in!") return render(request, 'index.html') else: account_form.add_error( None, "Your username or password is incorrect") else: account_form = UserAccountForm() return render(request, 'login.html', {"account_form": account_form})
def account(request): try: profile = request.user.useraccount except UserAccount.DoesNotExist: profile = UserAccount(user=request.user) my_form = UserAccountForm() if request.method == "POST": form = UserAccountForm(request.POST, instance=profile) if form.is_valid(): form.save() messages.success(request, ' Account Details Submitted Successfully') else: messages.error(request, 'Oops!!! There are Some Errors in your Form') else: form = UserAccountForm(instance=profile) return render(request, 'accounts/account_details.html', { 'form': form, })
def profile(request): """ Render the profile page and load/save UserAccountForm. """ if request.method == 'POST': form = UserAccountForm(request.POST, instance=request.user) if form.is_valid(): form.save() messages.success(request, "Your details have been updated") return redirect(reverse('profile')) else: messages.error(request, "We've been unable to update your details") else: form = UserAccountForm(instance=request.user) args = {'form': form, 'my_courses': request.user.module_set.all()} args.update(csrf(request)) return render(request, 'accounts/profile.html', args)
def create_account(request): if request.method == 'POST': form = UserAccountForm(request.POST) admin_count = User.objects.filter(is_superuser=True).count() if admin_count > 0: messages.error( request, "You are not allowed to register to this application") else: if form.is_valid(): fs = form.save(commit=False) fs.is_superuser = True fs.save() form = UserAccountForm() messages.success( request, 'System Administrator Account Created Successfully.Proceed now to login' ) else: messages.error( request, 'Data not entered correctly.Please enter a valid data') else: form = UserAccountForm() return render(request, 'sys_admin/create_account.html', {'form': form})
def checkout(request): stripe_publishable_key = settings.STRIPE_PUBLISHABLE_KEY stripe_secret_key = settings.STRIPE_SECRET_KEY if request.method == 'POST': cart = request.session.get('cart', {}) form_data = { 'first_name': request.POST['first_name'], 'last_name': request.POST['last_name'], 'email': request.POST['email'], 'phone_number': request.POST['phone_number'], 'country': request.POST['country'], 'postcode': request.POST['postcode'], 'town_or_city': request.POST['town_or_city'], 'street_address1': request.POST['street_address1'], 'street_address2': request.POST['street_address2'], 'county': request.POST['county'], } order_form = OrderForm(form_data) # If the payment is successful if order_form.is_valid(): order = order_form.save() # Iterate through the cart items to create the order_line_items for item_id, quantity in cart.items(): try: game = Game.objects.get(id=item_id) order_line_item = OrderLineItem( order=order, game=game, quantity=quantity, ) order_line_item.save() except: messages.error(request) order.delete() return redirect(reverse('view_cart')) request.session['save_info'] = 'save-info' in request.POST messages.info(request, 'Payment successful! \r You will receive an email with the order details.') request.session["cart"] = {} send_confirmation_email(order) if request.user.is_authenticated: account = UserAccount.objects.get(user=request.user) save_info = request.session.get('save_info') order.user_account = account order.save() # Save the user's info if save_info: user_data = { 'default_first_name': order.first_name, 'default_last_name': order.last_name, 'default_phone_number': order.phone_number, 'default_country': order.country, 'default_postcode': order.postcode, 'default_town_or_city': order.town_or_city, 'default_street_address1': order.street_address1, 'default_street_address2': order.street_address2, 'default_county': order.county, } user_account_form = UserAccountForm(user_data, instance=account) if user_account_form.is_valid(): user_account_form.save() return redirect(reverse("games")) # Should return to {% url 'order_history' %} # If the payment fails else: messages.info(request, 'Sorry, we were unable to process the payment.') else: # GET cart = request.session.get('cart', {}) if not cart: messages.info(request, "Your cart is empty") return redirect(reverse('games')) current_cart = cart_contents(request) total = current_cart['grand_total'] stripe_total = round(total * 100) stripe.api_key = stripe_secret_key # Stripe payment intent intent = stripe.PaymentIntent.create( amount=stripe_total, currency=settings.STRIPE_CURRENCY, ) # Prefill the form with the user's information, if he is authenticated if request.user.is_authenticated: try: account = UserAccount.objects.get(user=request.user) order_form = OrderForm(initial={ 'first_name': account.default_first_name, 'last_name': account.default_last_name, 'email': account.user.email, 'phone_number': account.default_phone_number, 'country': account.default_country, 'postcode': account.default_postcode, 'town_or_city': account.default_town_or_city, 'street_address1': account.default_street_address1, 'street_address2': account.default_street_address2, 'county': account.default_county, }) except UserAccount.DoesNotExist: order_form = OrderForm() else: order_form = OrderForm() if not stripe_publishable_key: messages.info(request, 'Stripe public key is missing.') template = 'checkout/checkout.html' context = { 'order_form': order_form, 'stripe_publishable_key': stripe_publishable_key, 'client_secret': intent.client_secret, } return render(request, template, context)
def login_form_test(self): login_form = UserAccountForm({ 'username': '******', 'password': '******', }) self.assertTrue(login_form.is_valid())
def login_form_requires_password(self): login_form = UserAccountForm({ 'email': '*****@*****.**', }) self.assertFalse(login_form.is_valid())