def test_user_details_form_fails_with_incorrect_email(self): form = UserDetailsForm({ 'first_name': self.user.first_name, 'last_name': self.user.last_name, 'email': 'test_email.com', }, instance=self.user) self.assertFalse(form.is_valid())
def test_changing_user_first_name(self): form = UserDetailsForm({ 'first_name': 'Elizabeth', 'last_name': self.user.last_name, 'email': self.user.email, }, instance=self.user) self.assertTrue(form.is_valid()) # save details form.save() # check if new name is user's name now self.assertTrue('Elizabeth', self.user.first_name)
def add_user_details(request, next): # Check if next was provided as variable if next == None: # If not get request origin next = request.GET.get('next', '/') """Add or edit user details""" # Get active user active_user = request.user # Check if details already exist try: # If so create form with details current_user_details = user_details.objects.get(user=active_user) accounts_form = UserDetailsForm(instance=current_user_details) except: # If not create empty form accounts_form = UserDetailsForm({'user': active_user.id}) current_user_details = None # Check if a form was submitted if request.method == 'POST': # Get request origin from form next = request.POST.get('next', '/') # If so get the posted form accounts_form = UserDetailsForm( request.POST, instance=current_user_details) if accounts_form.is_valid(): # Save data to the database current_user_details = accounts_form.save() messages.success(request, 'Your details have been saved') # return to origin return redirect(next) return render(request, 'userdetails.html', {'accounts_form': accounts_form, 'next': next, 'title': 'Please provide your shipping details'})
def profile_edit(request, template='accounts/profile_edit.html'): d = {} if request.method == 'GET': form = UserDetailsForm(instance = request.user) else: form = UserDetailsForm(request.POST, request.FILES, instance = request.user) if form.is_valid(): user = form.save() profile = user.get_profile() profile.save() user.save() messages.add_message(request, messages.SUCCESS, 'Your account has been updated') return redirect(reverse('profile_edit')) d['form'] = form return render(request, template, d)
def user_edit(request): if not request.user.is_authenticated(): return HttpResponseRedirect(reverse('index')) if request.method == "POST": form = UserDetailsForm(request.POST, instance=request.user, label_suffix='') if form.is_valid(): form.save() snapshot_user_details(request.user, password='******') return HttpResponseRedirect(reverse('account')) else: form = UserDetailsForm(instance=request.user, label_suffix='') menu = {'parent': 'account'} return render(request, 'user_edit.html', { 'menu': menu, 'form': form, })
def user_profile(request): """Display profile page""" next = request.GET.get('next', '/') # Get active user active_user = request.user user_form = UserUpdateForm(instance=active_user) # Check if details already exist try: # If so create form with details current_user_details = user_details.objects.get(user=active_user) details_form = UserDetailsForm(instance=current_user_details) except: # If not create empty form details_form = UserDetailsForm({'user': active_user.id}) current_user_details = None # Check if this order exists try: user_orders = orders.objects.filter(user=active_user) # if not show the list and rais an error message except: user_orders = None ordered_items = order_items.objects.all() return render(request, 'profile.html', {'active_user': active_user, 'user_details': current_user_details, 'user_form': user_form, 'details_form': details_form, 'orders': user_orders, 'ordered_items': ordered_items, 'title': 'Profile for ' + active_user.first_name + ' ' + active_user.last_name, 'next': next })
def allDetails(request): userId = request.user.id user = request.user # user primary details userInfo = User.objects.get(pk=userId) form1 = UserPrimaryForm(prefix='userInfo', instance=userInfo) # # user details try: details = userDetail.objects.filter(user_id=userId).first() except userDetail.DoesNotExist: details = None form2 = UserDetailsForm(prefix='userDetails', instance=details) # user evaluation try: orgDetails = AdminPanel.objects.get(user=user) except Evaluation.DoesNotExist: orgDetails = None form3 = OrgForm(prefix='eval', instance=orgDetails) context = {'form1': form1, 'form2': form2, 'form3': form3} return context
def accountInfo(request): print(request.user.id) user = request.user if request.method == "POST": userId = request.user.id try: userInfo = User.objects.get(pk=userId) except: userInfo = None form1 = UserPrimaryForm(request.POST or None, prefix='userInfo', instance=userInfo) try: details = userDetail.objects.get(user_id=userId) except: details = None form2 = UserDetailsForm(request.POST or None, prefix='userDetails', instance=details) try: orgDetails = AdminPanel.objects.get(user=user) except: orgDetails = None form3 = OrgForm(request.POST or None, prefix='eval', instance=orgDetails) if form1.is_valid() and form2.is_valid() and form3.is_valid(): print("Admin : All forms are cleared") form1.save() update = form2.save(commit=False) update.user_id = request.user.id form2.save() update = form3.save(commit=False) update.user_id = request.user.id form3.save() context = allDetails(request) return render(request, 'admin_account_info.html', context) context = allDetails(request) return render(request, 'admin_account_info.html', context) else: context = allDetails(request) return render(request, 'admin_account_info.html', context)
def check_out(request): next = request.GET.get('next', '/') if not request.user.is_authenticated: messages.error(request, "Please register before checking out") return redirect('accounts:register_user') # Get logged in user active_user = request.user # Get cart contents cart = request.session.get('cart', {}) total = 0 try: current_user_details = user_details.objects.get(user=active_user) except: # If not show shipping details form messages.error(request, "Please provide your shipping details") return redirect('accounts:shipping_details') # Attach user details to form accounts_form = UserDetailsForm(instance=current_user_details) # Check if a form was submitted if request.method == "POST": # Get both forms accounts_form = UserDetailsForm( request.POST, instance=current_user_details) payment_form = PaymentForm(request.POST) # If shipping details were changed update and return if accounts_form.is_valid(): current_user_details = accounts_form.save() messages.success(request, 'Updated shipping details') return redirect('checkout:check_out') # if payment form is valid create order if payment_form.is_valid(): order = orders(user=active_user, date=timezone.now(), shipping=current_user_details.shipping.price, address1=current_user_details.address1, address2=current_user_details.address2, postcode=current_user_details.postcode, city=current_user_details.city, country=current_user_details.country, telephone=current_user_details.telephone, ) order.save() # Add shipping cost to total total = current_user_details.shipping.price # Create order items for order for id, quantity in cart.items(): work = get_object_or_404(work_items, pk=id) # Check if there is a discount if work.shop_settings.on_sale == True: price = work.shop_settings.discount_price else: price = work.shop_settings.price total += quantity * price order_item = order_items( order=order, work_item=work, quantity=quantity, price=price ) order_item.save() # Make payment try: customer = stripe.Charge.create( amount=int(total * 100), currency="EUR", description=request.user.email, card=payment_form.cleaned_data['stripe_id'], ) except stripe.error.CardError: messages.error(request, "Your card was declined!") if customer.paid: messages.error(request, "You have successfully paid") order.paid = True order.total = total order.save() # Adjust the stock for sold items for id, quantity in cart.items(): work = get_object_or_404(work_items, pk=id) work.shop_settings.stock -= quantity work.shop_settings.save() request.session['cart'] = {} try: send_mail( 'Thank you for your order', 'I will prepare the package with the greatest care and sent you an e-mail with the tracking code when I shipped it. If there is anything you would want to change or inform me about, please do not hesitate to send me an email.', '*****@*****.**', [active_user.email], fail_silently=False, ) send_mail( 'New order in the shop', 'A new order is waiting to be shipped.', '*****@*****.**', ['*****@*****.**'], fail_silently=False, ) except: pass return redirect(reverse('shop:all_shop_works')) else: order.paid = False order.save() messages.error(request, "Unable to take payment") else: print(payment_form.errors) messages.error( request, "We were unable to take a payment with that card!") else: for id, quantity in cart.items(): # Get work object work = get_object_or_404(work_items, pk=id) # Check if there is a discount if work.shop_settings.on_sale == True: price = work.shop_settings.discount_price else: price = work.shop_settings.price total += quantity * price payment_form = PaymentForm() return render(request, "checkout.html", {'total': total, 'user': active_user, 'user_details': current_user_details, 'accounts_form': accounts_form, 'payment_form': payment_form, 'publishable': settings.STRIPE_PUBLISHABLE, 'next': next})
def test_user_details_form_fails_without_last_name(self): form = UserDetailsForm({ 'first_name': self.user.first_name, 'email': self.user.email, }, instance=self.user) self.assertFalse(form.is_valid())