예제 #1
0
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
    })
예제 #2
0
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
    })
예제 #3
0
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
        })
예제 #4
0
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
    })
예제 #5
0
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))
예제 #6
0
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)
예제 #7
0
 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())
예제 #8
0
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,
    })
예제 #9
0
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
    })
예제 #10
0
 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()
예제 #11
0
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})
예제 #12
0
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)
예제 #14
0
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)
예제 #15
0
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)
예제 #16
0
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)
예제 #17
0
파일: views.py 프로젝트: osya/tryTen
 def get_object(self, queryset=None):
     user = get_user_model().objects.get(
         pk=self.request.session['_auth_user_id'])
     return UserForm(instance=user)
예제 #18
0
 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
예제 #19
0
 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 == '*****@*****.**'