예제 #1
0
    def post(self, request):
        u_redirect = email_and_search(request, 'recovery')
        if u_redirect is not None:
            return u_redirect

        username_to_pass = request.POST.get('username_for_pass')

        try:
            user = get_user_model().objects.get(username=username_to_pass)
        except get_user_model().DoesNotExist:
            messages.error(request, 'No such user')
            return render(request, 'account/recovery.html')

        try:
            code = VarificationCode.objects.get(user=user)
            code.delete()
        except VarificationCode.DoesNotExist:
            pass

        pass_key = VarificationCode(user=user,
                                    hash_key=hash_key(6),
                                    attempt_amount=0)
        pass_key.save()

        send_mail('bot', str(pass_key), '*****@*****.**', [user.email])

        return redirect('recovery_confirm', user)
예제 #2
0
    def post(self, request, username):
        u_redirect = email_and_search(request, 'recovery_confirm')
        if u_redirect is not None:
            return u_redirect

        context = generate_context(request)

        pass_key_confirm = request.POST.get('pass_key_confirm')
        user = get_user_model().objects.get(username=username)
        pass_key = VarificationCode.objects.get(user=user)

        context['username'] = username

        if pass_key_confirm == str(pass_key):
            request.session['_username'] = username
            return redirect('password_change')

        if pass_key.attempt_amount > 2:
            pass_key.delete()
            messages.error(request, 'Too many attempts')
            return redirect('recovery')

        pass_key.attempt_amount += 1
        pass_key.save()
        messages.error(request, 'Invalid code')

        return render(request, 'account/recovery-confirm.html', context)
예제 #3
0
    def post(self, request):
        u_redirect = email_and_search(request, 'profile')
        if u_redirect is not None:
            return u_redirect

        user = request.user
        form = forms.ProfileForm(request.POST, request.FILES, instance=user)
        if form.is_valid():
            new_user = form.save(commit=False)
            new_user.email = user.email
            new_user.save()
        else:
            messages.error(request, 'Enter the valid Phone')

        return redirect('profile')
예제 #4
0
    def post(self, request):
        u_redirect = email_and_search(request, 'wishlist')
        if u_redirect is not None:
            return u_redirect

        user = request.user
        post = request.POST

        for key, value in post.items():  # updating wish list
            if key[:5] == 'clear':
                models.FavoriteItem.objects.filter(user=user).delete()

            if key[:6] == 'delete':
                item = Item.objects.get(name=key[7:])
                models.FavoriteItem.objects.get(user=user, item=item).delete()
        return redirect('wishlist')
예제 #5
0
    def post(self, request):
        u_redirect = email_and_search(request, 'cart')
        if u_redirect is not None:
            return u_redirect

        request.session['_coupon'] = request.POST.get('coupon')

        post = request.POST
        user = request.user
        items = models.CartItem.objects.filter(user=user)

        for key, value in post.items():  # updating items in cart
            if key[:5] == 'clear':
                items.delete()

            if key[:6] == 'delete':
                item = Item.objects.get(name=key[7:])
                models.CartItem.objects.get(user=user, item=item).delete()

            if key[:6] == 'amount':
                item = Item.objects.get(name=key[7:])
                add_item = models.CartItem.objects.get(user=user, item=item)
                add_item.amount = value if int(value) <= 20 else 20

                add_item.save()

            if key[:4] == 'make':
                order = Order(user=user)
                order.save()
                for item in items:
                    order_item = OrderItem(item=item.item, amount=item.amount)
                    order_item.save()
                    order.items.add(order_item.id)
                    order.save()
                items.delete()
                return redirect('checkout')
        try:
            models.Coupon.objects.get(name=request.session.get('_coupon'))
            messages.success(request, 'Coupon applied')
        except models.Coupon.DoesNotExist:
            pass

        return redirect('cart')
예제 #6
0
파일: views.py 프로젝트: glebabusya/shop
    def post(self, request, item_id):
        email_redirect = email_and_search(request, 'comments')
        if email_redirect is not None:
            return email_redirect
        form = forms.CommentForm(request.POST)
        user = request.user
        print(dir(user))
        print(user.groups.all())
        item = models.Item.objects.get(id=item_id)
        try:
            models.Comment.objects.get(user=request.user, item=item)
        except models.Comment.DoesNotExist:
            if form.is_valid():
                print(user)
                data = form.cleaned_data
                print(data)
                comment = models.Comment(user=user, item=item, comment=data['comment'], rating=data['rating'])
                comment.save()

        return redirect('item', item_id)
예제 #7
0
    def post(self, request):
        u_redirect = email_and_search(request, 'recovery_confirm')
        if u_redirect is not None:
            return u_redirect

        context = generate_context(request)

        form = forms.ChangePasswordForm(request.POST)
        username = request.session.get('_username')

        context['form'] = form
        context['username'] = username

        if form.is_valid():
            new_password = form.cleaned_data['password']
            user = get_user_model().objects.get(username=username)
            user.set_password(new_password)
            user.save()
            return redirect('registration')

        return render(request, 'account/password-change.html', context)
예제 #8
0
    def post(self, request):
        u_redirect = email_and_search(request, 'registration')
        if u_redirect is not None:
            return u_redirect

        context = generate_context(request)

        login_form = forms.LoginForm(request.POST)
        registration_form = forms.RegistrationForm(request.POST)

        context['registration_form'] = registration_form
        context['login_form'] = login_form

        if login_form.is_valid():  # login
            data = login_form.cleaned_data
            user = authenticate(username=data['user_login'],
                                password=data['user_password'])
            if user is not None:
                login(request, user)
                return redirect('profile')
            else:
                messages.error(request, 'Incorrect password')

        if registration_form.is_valid():  # registration
            data = registration_form.cleaned_data
            try:
                user = get_user_model().objects.create_user(
                    username=data['username'],
                    email=data['mail'],
                    password=data['password'])
                user.save()
                return redirect('profile')
            except IntegrityError:
                messages.error(request,
                               'Пользователь с такими данными уже существует')

        return render(request, 'account/registration.html', context)
예제 #9
0
파일: views.py 프로젝트: glebabusya/shop
    def post(self, request, item_id):
        u_redirect = email_and_search(request, 'item')
        if u_redirect is not None:
            return u_redirect

        add_to_wishlist = request.POST.get('wishlist') == 'To Wishist'

        amount_to_cart = request.POST.get('selection')

        if add_to_wishlist:
            if request.user.is_authenticated:
                adding_to_wishlist(user=request.user, item=models.Item.objects.get(id=item_id))
                messages.info(request, '<i class="fa fa-check-circle-o" aria-hidden="true"></i> Added to Wishlist')
            else:
                messages.error(request, '<i class="fa fa-ban" aria-hidden="true"></i> Login or Register')

        if isinstance(amount_to_cart, str):
            if request.user.is_authenticated:
                adding_to_cart(user=request.user, item=models.Item.objects.get(id=item_id), amount=int(amount_to_cart))

                messages.success(request, '<i class="fa fa-check-circle-o" aria-hidden="true"></i> Added to Cart')
            else:
                messages.error(request, '<i class="fa fa-ban" aria-hidden="true"></i> Login or Register')
        return redirect('item', item_id)
예제 #10
0
    def post(self, request):
        u_redirect = email_and_search(request, 'orders')
        if u_redirect is not None:
            return u_redirect

        return redirect('orders')