def register_user(request): context_dict = {} registered = False if request.method == 'POST': # user_form = UserForm(data=request.POST) user_form = UserForm(request.POST) if user_form.is_valid(): user = user_form.save(commit=True) person = Person() person.username = user.username person.email = user.email person.save() user.set_password(user.password) user.save() registered = True context_dict = {'boldmessage': "User createlly correctly"} else: print user_form.errors else: user_form = UserForm() return render(request, 'webUser/register.html', { 'user_form': user_form, 'registered': registered })
def edit_profile(request): # метод для изменения информации о пользователе # используются две формы, которые отправляются на сервер одной кнопкой if request.method == 'POST': profile_form = UserProfileForm(request.POST, request.FILES, instance=request.user.profile) user_form = UserForm(request.POST, request.FILES, instance=request.user) if profile_form.is_valid() and user_form.is_valid(): profile_form.save() user_form.save() if info_is_completed(request.user): messages.success(request, 'Успешное изменение профиля!') return redirect('/my_profile/') else: messages.error(request, 'Необходимо ввести все поля формы') else: messages.error( request, 'Необходимо ввести корректные значения в поля формы!') else: profile_form = UserProfileForm(instance=request.user.profile) user_form = UserForm(instance=request.user) heading = "Здесь Вы можете изменить личную информацию профиля:" return render(request, 'data_input.html', { 'profile_form': profile_form, 'user_form': user_form, 'heading': heading })
def register(request): registered = False if request.method == "POST": user_form = UserForm(data=request.POST) profile_form = UserProfileInfoForm(data=request.POST) if user_form.is_valid() and profile_form.is_valid(): user = user_form.save() user.set_password(user.password) user.save() profile = profile_form.save(commit=False) profile.user = user if 'profile_pic' in request.FILES: profile.profile_pic = request.FILES['profile_pic'] profile.save() registered = True else: print(user_form.errors, profile_form.errors) else: user_form = UserForm() profile_form = UserProfileInfoForm() return render( request, 'profiles/register.html', { 'user_form': user_form, 'profile_form': profile_form, 'registered': registered })
def add_info(request): # функция, выводящая форму для ввода информации о пользователе # или перенаправляющая на страницу профиля при повторной авторизации пользователя if request.method == 'POST': profile_form = UserProfileForm(request.POST, request.FILES, instance=request.user.profile) user_form = UserForm(request.POST, request.FILES, instance=request.user) if profile_form.is_valid() and user_form.is_valid(): profile_form.save() user_form.save() if info_is_completed(request.user): messages.success(request, 'Успешное изменение профиля!') return redirect('/my_profile/') else: messages.error(request, 'Необходимо ввести все поля формы') else: messages.error( request, 'Необходимо ввести корректные значения в поля формы!') elif info_is_completed(request.user): return redirect('/my_profile/') else: profile_form = UserProfileForm(instance=request.user.profile) user_form = UserForm(instance=request.user) heading = "Пожалуйста, введите все свои данные в форму ниже:" return render(request, 'data_input.html', { 'profile_form': profile_form, 'user_form': user_form, 'heading': heading })
def profile_edit(request, template_name='profiles/profile_form.html'): """Edit profile.""" if request.POST: profile = Profile.objects.get(user=request.user) user_form = UserForm(request.POST, instance=request.user) profile_form = ProfileForm(request.POST, request.FILES, instance=profile) service_formset = ServiceFormSet(request.POST, instance=profile) link_formset = LinkFormSet(request.POST, instance=profile) if profile_form.is_valid() and user_form.is_valid( ) and service_formset.is_valid() and link_formset.is_valid(): profile_form.save() user_form.save() link_formset.save() service_formset.save() # return HttpResponseRedirect(reverse('profile_detail', kwargs={'username': request.user.username})) return HttpResponseRedirect(reverse('profiles-profile-edit')) else: from lib.util.form_errors import merge_form_errors form_errors = merge_form_errors([ user_form, profile_form, service_formset, link_formset, ]) context = { 'object': profile, 'action_form': ActionForm(), 'profile_form': profile_form, 'user_form': user_form, 'service_formset': service_formset, 'link_formset': link_formset, 'form_errors': form_errors, } else: profile = Profile.objects.get(user=request.user) link_formset = LinkFormSet(instance=profile) service_formset = ServiceFormSet(instance=profile) context = { 'object': profile, 'action_form': ActionForm(), 'profile_form': ProfileForm(instance=profile), 'user_form': UserForm(instance=request.user), 'service_formset': service_formset, 'link_formset': link_formset } return render_to_response(template_name, context, context_instance=RequestContext(request))
def checkout_success(request, order_number): save_info = request.session.get('save_info') order = get_object_or_404(Order, order_number=order_number) if request.user.is_authenticated: profile = UserProfile.objects.get(user=request.user) # connect profile to the order order.user = profile order.save() # Save the user's info if save_info: profile_data = { '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_form = UserForm(profile_data, instance=profile) if user_form.is_valid(): user_form.save() if 'cart' in request.session: del request.session['cart'] template = 'checkout/checkout_success.html' context = { 'order': order, } return render(request, template, context)
def test_update_account_form(self): login = self.client.login(username="******", password="******") user = self.test_user response = self.client.post(reverse("update_account_details")) form_data = {"username": "******"} form = UserForm(data=form_data) self.assertTrue(form.is_valid())
def user_register(request): if request.method == "GET": user_form = UserForm() profile_form = ProfileForm() elif request.method == "POST": user_form = UserForm(request.POST) profile_form = ProfileForm(request.POST) if user_form.is_valid() and profile_form.is_valid(): user = user_form.save( commit=False) # setting password done in forms.py user.alias = user.username user.save() # extra password thing # password = user.password # The form doesn't know to call this special method on user. # user.set_password(password) # user.save() # You must call authenticate before login. :( # end extra password thing profile = profile_form.save(commit=False) if Location.objects.count() > 0: profile.location = Location.objects.all()[0] profile.user = user profile.save() user = authenticate(username=request.POST['username'], password=request.POST['password']) login(request, user) messages.add_message( request, messages.SUCCESS, "Congratulations, {}, on creating your new account! You are now logged in." .format(user.username)) send_mail("Welcome to Share Lockers", """\ {}, Your account on sharelockers.come has been created! \ We look forward to seeing what you have to share. \ You might start by stocking some items to sell, or by adding items you have \ at home which you would be willing to sell. -ShareLockers Team""".format(user.username), settings.EMAIL_HOST_USER, [user.email], fail_silently=settings.EMAIL_SILENT) return redirect('view_index') return render(request, "profiles/register.html", { 'user_form': user_form, 'profile_form': profile_form, })
def update_profile(request): if request.method == 'POST': user_form = UserForm(request.POST, instance=request.user) profile_form = ProfileForm(request.POST, instance=request.user.profile) if user_form.is_valid() and profile_form.is_valid(): user_form.save() profile_form.save() messages.success(request, ('Ваш профиль был успешно обновлен!')) return redirect('profile') else: messages.error(request, ('Пожалуйста, исправьте ошибки.')) else: user_form = UserForm(instance=request.user) profile_form = ProfileForm(instance=request.user.profile) return render(request, 'profile.html', { 'user_form': user_form, 'profile_form': profile_form })
def test_email_validation_raises_error_on_update(self, admin_user): """ Test taht error will be raised if passed email belong to another user. """ form = UserForm(instance=admin_user) user = User.objects.create_user('somesome', '*****@*****.**') form.cleaned_data = {'email': user.email} with pytest.raises(ValidationError): form.clean_email()
def register(request): """ Registration page which shows a form for the user to complete """ registered = False if request.method == 'POST': user_form = UserForm(data=request.POST) if user_form.is_valid(): user = user_form.save() user.set_password(user.password) if user_form.cleaned_data['is_developer']: user.developer.active = True add_default_service(user.developer) if user_form.cleaned_data['is_provider']: user.provider.active = True # When a new provider is registered, # a new rabbitmq user should be added to the system initialize_rabbitmq_user(user) # TODO: create hyperledger fabric user if USE_FABRIC: r = fabric.invoke_new_monetary_account(user.username, '700') if 'jwt expired' in r.text or 'jwt malformed' in r.text or 'User was not found' in r.text: token = fabric.register_user() r = fabric.invoke_new_monetary_account(user.username, '700', token = token) user.save() user = authenticate(username=user_form.cleaned_data['username'], password=user_form.cleaned_data['password']) login(request, user) messages.success(request, "Successful Login") registered = True if user_form.cleaned_data['is_provider']: return render(request, 'providers_app/index.html') else: print(user_form.errors) else: user_form = UserForm() return render(request, 'profiles/registration.html', {'user_form': user_form, 'registered': registered})
def checkout_success(request, order_number): """ This view displays details of a users order. The view also updates the user profile if the save-info box has been ticked. The session basket is also cleared. The "checkout success" boolean is used to identify the order progress. """ save_info = request.session.get('save_info') order = get_object_or_404(Order, order_number=order_number) if request.user.is_authenticated: profile = UserProfile.objects.get(user=request.user) order.user_profile = profile order.save() if save_info: delivery_data = { 'default_phone_number': order.phone_number, 'default_address_1': order.address_1, 'default_address_2': order.address_2, 'default_city': order.city, 'default_county': order.county, 'default_country': order.country, 'default_postcode': order.postcode, } user_data = { 'first_name': order.full_name.split()[0], 'last_name': order.full_name.split()[-1], 'email': order.email, } user_profile_form = UserProfileForm(delivery_data, instance=profile) if user_profile_form.is_valid(): user_profile_form.save() user_form = UserForm(user_data, instance=request.user) if user_form.is_valid(): user_form.save() if 'basket' in request.session: del request.session['basket'] context = { 'order': order, 'checkout_success': True, } return render(request, 'checkout/checkout_success.html', context)
def checkout_success(request, order_number): """ Handle successful checkouts """ order = get_object_or_404(Order, order_number=order_number) order_id = order.id line_items = OrderLineItem.objects.filter(order=order_id) save_info = request.session.get('save_info') if request.user.is_authenticated: profile = UserProfile.objects.get(user=request.user) order.user_profile = profile profile.loyalty_points += order.loyalty_points profile.save() order.save() if save_info: profile_data = { 'default_phone_number': order.phone_number, '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_profile_form = UserForm(profile_data, instance=profile) if user_profile_form.is_valid(): user_profile_form.save() if 'bag' in request.session: del request.session['bag'] if 'discount' in request.session: del request.session['discount'] if 'loyalty' in request.session: del request.session['loyalty'] template = 'checkout/checkout_success.html' context = { 'order': order, 'line_items': line_items, } return render(request, template, context)
def checkout_completed(request, order_number): """ Handles a completed checkout, and attaches it to a user profile """ save_info = request.session.get('save_info') order = get_object_or_404(Order, order_number=order_number) if request.user.is_authenticated: profile = UserProfile.objects.get(user=request.user) order.user_profile = profile order.save() # handles the save user info tick-box if save_info: profile_data = { '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, 'default_country': order.country, } user_profile_form = UserForm(profile_data, instance=profile) if user_profile_form.is_valid(): user_profile_form.save() messages.success( request, f'Order successfully processed! \ Your order number is {order_number}. A confirmation \ email will be sent to {order.email}.') if 'basket' in request.session: del request.session['basket'] template = 'checkout/checkout_completed.html' context = { 'order': order, } return render(request, template, context)
def payment_success(request, order_number): """ Successful payments """ save_info = request.session.get('save_info') order = get_object_or_404(Payment, order_number=order_number) if request.user.is_authenticated: profile = UserProfile.objects.get(user=request.user) # Attach the user's profile to the order order.user_profile = profile order.save() # Save the user's info if save_info: profile_data = { 'email': order.email, 'phone_number': order.phone_number, 'country': order.country, 'street_address1': order.street_address1, 'street_address2': order.street_address2, 'town_or_city': order.town_or_city, 'county': order.county, 'postcode': order.postcode, } user_form = UserForm(profile_data, instance=profile) if user_form.is_valid(): user_form.save() messages.success(request, f'Booking successfully processed! \ Your order number is {order_number}. A confirmation \ email will be sent to {order.email} and your Expert will be in touch shortly by phone or email to book in a time and date.') if 'bag' in request.session: del request.session['bag'] template = 'payments/payment_success.html' context = { 'order': order, } return render(request, template, context)
def checkout_success(request, order_number): # Handle successful checkouts save_info = request.session.get('save-info') order = get_object_or_404(Order, order_number=order_number) if request.user.is_authenticated: profile = UserProfile.objects.get(user=request.user) order.user_profile = profile order.save() if save_info: profile_data = { 'default_full_name': order.full_name, 'default_email': order.email, 'default_phone_number': order.phone_number, 'default_street_address1': order.street_address1, 'default_street_address2': order.street_address1, 'default_town_or_city': order.town_or_city, 'default_county': order.county, 'default_postcode': order.postcode, 'default_country': order.country, } user_profile_form = UserForm(profile_data, instance=profile) if user_profile_form.is_valid(): user_profile_form.save() messages.success(request, f'Your order has been processes! \ Your order number is {order_number} and \ a confirmation has been sent to {order.email}.') if 'cart' in request.session: del request.session['cart'] template = 'checkout/checkout_success.html' context = { 'order': order, } return render(request, template, context)
def get_object(self, queryset=None): user = get_user_model().objects.get( pk=self.request.session['_auth_user_id']) return UserForm(instance=user)
def test_email_validation_not_raises_error(self, admin_user): """Test that error won't be raisedif passed email is user email.""" form = UserForm(instance=admin_user) form.cleaned_data = {'email': admin_user.email} email = form.clean_email() assert email == admin_user.email
def test_email_validation_not_raises_error_if_available(self, admin_user): """Test that error won't be raised if passed email is available""" form = UserForm(instance=admin_user) form.cleaned_data = {'email': '*****@*****.**'} email = form.clean_email() assert email == '*****@*****.**'