Exemple #1
0
def register(request):
    if request.method == 'POST':
        form = ShopUserRegisterForm(request.POST, request.FILES)
        if form.is_valid():
            user = form.save()  # приводит к сохранению в базу данных
            if send_verify_mail(user):
                print('Сообщение успешно отправлено!')
                return HttpResponseRedirect(reverse('authapp:login'))
            else:
                print('Ошибка: сообщение не отправлено.')
                return HttpResponseRedirect(reverse('authapp:login'))
    else:
        form = ShopUserRegisterForm()
        content = {'title': 'Регистрация', 'form': form}
        return render(request, 'authapp/register.html', content)

    content = {
        'title': 'Регистрация пользователя',
        'form': form,
        'main_menu': main_menu(),
        'info_pages': footer_menu(),
        'basket': get_basket(request),
    }

    return render(request, 'authapp/register.html', content)
Exemple #2
0
def login(request):
    # если не делать условие, то когда не будет next - будет ошибка
    next = request.GET['next'] if 'next' in request.GET.keys() else None
    if request.method == 'POST':
        # форма заполнится данными
        form = ShopUserLoginForm(
            data=request.POST
        )  # data используется для работы с AuthenticationForm
        if form.is_valid(
        ):  # проверили валидность введенных данных и вывод сообщений об ошибках
            username = request.POST['username']  # получаем логин и пароль
            password = request.POST['password']
            user = auth.authenticate(username=username, password=password)
            if user and user.is_active:  # активирован ли аккаунт
                next = request.POST['next'] if 'next' in request.POST.keys(
                ) else None
                auth.login(request, user)
                return HttpResponseRedirect(
                    '/' if not next else next)  # первый вариант редиректа
    else:
        form = ShopUserLoginForm()
    context = {
        'title': 'Авторизация на сайте',
        'form': form,
        'next': next,
        'main_menu': main_menu(),
        'info_pages': footer_menu(),
        'basket': get_basket(request),
    }
    return render(request, 'authapp/login.html', context)
Exemple #3
0
def index(request):
    context = {
        'page_title': 'корзина',
        'basket': get_basket(request),

    }
    return render(request, 'basketapp/index.html', context)
Exemple #4
0
def index(request):
    content = {
        'title': 'Корзина',
        'header1_page': 'Корзина товаров',
        'main_menu': main_menu(),
        'info_pages': footer_menu(),
        'basket': get_basket(request),
    }
    return render(request, 'basketapp/index.html', content)
Exemple #5
0
def main(request):
    main_links = get_json('main_links')
    title = 'главная'
    basket = get_basket(request.user)

    context = {
        'title': title,
        'main_links': main_links,
        'products': Product.objects.all()[:3],
        'basket': basket,
    }
    return render(request, 'index.html', context)
Exemple #6
0
def basket_update(request, pk, quantity):
    if request.is_ajax():
        basket_obj = get_object_or_404(Basket, pk=pk)
        quantity = int(quantity)
        if quantity > 0:
            basket_obj.quantity = quantity
            basket_obj.save()
        else:
            basket_obj.delete()

        result = render_to_string('basketapp/includes/inc__basket_list.html',
                                  context={'basket': get_basket(request)})

        return JsonResponse({'result': result})
Exemple #7
0
def basket(request):
    title = "корзина"
    basket_items = Basket.objects.filter(user=request.user)
    basket = get_basket(request.user)
    hot_product = get_hot_product()
    same_products = get_same_products(hot_product)
    content = {
        "title": title,
        "basket_items": basket_items,
        "media_url": settings.MEDIA_URL,
        "project_settings": settings,
        "basket": basket,
        "same_products": same_products,
        'hot_product': hot_product
    }
    return render(request, "mainapp/cart.html", content)
Exemple #8
0
def basket_remove_all(request):
    '''
    принимает пост ajax пост запрос от basket
    и удаляет объек товара в корзине полностью
    '''
    if request.method == 'POST':
        basket = get_basket(request.user)
        pk = request.POST['pk']
        basket_item = OrderItem.objects.get(pk=pk)
        basket_item.delete()
        items = OrderItem.objects.filter(basket=basket)
        content = {"basket":basket, "items":items,}
        result = render_to_string('basketapp/basket_inc.html', content)
    else:
        return Http404
    return JsonResponse({'result': result})
Exemple #9
0
def basket_add(request, pk):
    basket = get_basket(user=request.user)

    product = get_object_or_404(Product, pk=pk)

    old_basket_item = OrderItem.objects.filter(basket=basket, product=product)
    if old_basket_item:
        old_basket_item[0].quantity += 1
        old_basket_item[0].save()
    else:
        product = get_object_or_404(Product, pk=pk)
        new_basket_item = OrderItem(basket=basket, product=product)
        new_basket_item.quantity = 1
        new_basket_item.save()

    return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
Exemple #10
0
def basket_remove(request, pk):
    basket = get_basket(user=request.user)

    product = get_object_or_404(Product, pk=pk)

    old_basket_item = OrderItem.objects.filter(basket=basket, product=product)
    if not old_basket_item:
        pass
    else:
        if old_basket_item[0].quantity == 1:
            old_basket_item.delete()
        else:
            old_basket_item[0].quantity -= 1
            old_basket_item[0].save()

    return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
Exemple #11
0
def basket_edit(request, product_pk, quantity):
    if request.is_ajax():
        quantity = int(quantity)
        new_basket_item = Basket.objects.get(pk=int(product_pk))

        if quantity > 0:
            new_basket_item.quantity = quantity
            new_basket_item.save()
        else:
            new_basket_item.delete()

        context = {
            'basket': get_basket(request.user),
        }
        result = render_to_string('basketapp/includes/inc__basket_list.html',
                                  context)

        return JsonResponse({'result': result})
Exemple #12
0
def update(request):
    if request.method == 'POST':
        # в instance передаем существующий объект пользователя для редактирования
        form = ShopUserUpdateForm(request.POST,
                                  request.FILES,
                                  instance=request.user)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(reverse('auth:update'))
    else:
        form = ShopUserUpdateForm(instance=request.user)
    content = {
        'title': 'Редактирование данных',
        'form': form,
        'main_menu': main_menu(),
        'info_pages': footer_menu(),
        'basket': get_basket(request),
    }
    return render(request, 'authapp/update.html', content)
Exemple #13
0
def basket_update(request, pk, quantity):
    if request.is_ajax():
        basket_obj = get_object_or_404(Basket, pk=pk)
        quantity = int(quantity)
        if quantity > 0:
            basket_obj.quantity = quantity
            basket_obj.save()
        else:
            basket_obj.delete()
        content = {
            'title': 'Корзина',
            'header1': 'Корзина',
            'main_menu': main_menu(),
            'info_pages': footer_menu(),
            'basket': get_basket(request),
        }
        result = render_to_string('basketapp/includes/inc__basket_list.html',
                                  content)
        return JsonResponse({
            'result': result,
        })
Exemple #14
0
def edit(request):
    title = 'Редактирование'

    if request.method == 'POST':
        edit_form = ShopUserEditForm(request.POST,
                                     request.FILES,
                                     instance=request.user)

        if edit_form.is_valid():
            edit_form.save()
            return HttpResponseRedirect(reverse('auth:edit'))
    else:
        edit_form = ShopUserEditForm(instance=request.user)

    context = {
        'title': title,
        'edit_form': edit_form,
        'date_time': datetime.date.today,
        'basket': get_basket(request),
    }
    return render(request, 'authapp/edit.html', context)
Exemple #15
0
def basket_edit(request, pk, value=0):
    if request.is_ajax():
        basket = get_basket(user=request.user)
        old_basket_item = get_object_or_404(OrderItem, pk=pk)
        if old_basket_item:
            if value == 0:
                OrderItem.objects.filter(pk=pk).delete()
            else:
                old_basket_item.quantity = value
                old_basket_item.save()
        else:
            product = get_object_or_404(Product, pk=pk)
            new_basket_item = OrderItem(basket=basket, product=product)
            new_basket_item.quantity = 1
            new_basket_item.save()
        items = OrderItem.objects.filter(basket=basket)
        content = {"basket":basket, "items":items,}
        result = render_to_string('basketapp/basket_inc.html', content)
    else:
        return Http404


    return JsonResponse({'result': result})
Exemple #16
0
def verify(request, email, activation_key):
    content = {
        'title': 'Активация пользователя',
        'main_menu': main_menu(),
        'info_pages': footer_menu(),
        'basket': get_basket(request),
    }
    try:
        user = ShopUser.objects.get(email=email)
        if user.activation_key == activation_key and not user.is_activation_key_expired(
        ):
            user.is_active = True
            user.save()
            auth.login(request,
                       user,
                       backend='django.contrib.auth.backends.ModelBackend')
            return render(request, 'authapp/verification.html', content)
        else:
            print(f'При активации пользователя {user} произошла ошибка.')
            return render(request, 'authapp/verification.html', content)
    except Exception as e:
        print(f'Ошибка при активации пользователя: {e.args}')
        return render(request, 'authapp/verification.html', content)
Exemple #17
0
def update(request):
    if request.method == 'POST':
        form = ShopUserUpdateForm(request.POST,
                                  request.FILES,
                                  instance=request.user)
        # она заполняется данными из связанной модели
        profile_form = ShopUserProfileEditForm(
            request.POST, instance=request.user.shopuserprofile)
        if form.is_valid() and profile_form.is_valid():
            form.save()
            return HttpResponseRedirect(reverse('auth:update'))
    else:
        form = ShopUserUpdateForm(instance=request.user)
        profile_form = ShopUserProfileEditForm(
            instance=request.user.shopuserprofile)
    content = {
        'title': 'Редактирование данных',
        'form': form,
        'profile_form': profile_form,
        'main_menu': main_menu(),
        'info_pages': footer_menu(),
        'basket': get_basket(request),
    }
    return render(request, 'authapp/update.html', content)
Exemple #18
0
def index(request):
    context = {'page_title': 'basket', 'basket': get_basket(request.user)}
    return render(request, 'basketapp/index.html', context)
Exemple #19
0
def basket_view(request):
    basket = get_basket(user=request.user)
    items = OrderItem.objects.filter(basket=basket)
    content = {"basket":basket, "items":items,}
    return render(request, 'basketapp/basket.html', content)