chore: splitted views file into separated files

This commit is contained in:
2024-11-30 13:28:44 +01:00
parent e40cdee31b
commit e6680463ec
12 changed files with 99 additions and 98 deletions
-3
View File
@@ -1,3 +0,0 @@
from django.test import TestCase
# Create your tests here.
+3 -5
View File
@@ -1,7 +1,8 @@
from django.urls import path
from web.views import index, product_detail, add_cart_item, delete_cart_item, login, logout, register, reset_password
from web.components.views import list_products, cart_dropdown
from web.views.components import cart_dropdown, list_products
from web.views.users import login, logout, register, reset_password
from web.views.web import add_cart_item, delete_cart_item, index, product_detail
app_name = "web"
@@ -9,17 +10,14 @@ app_name = "web"
urlpatterns = [
path("", index, name="index"),
path("products/<int:pk>/<str:slug>/", product_detail, name="product_detail"),
# users
path("login/", login, name="login"),
path("logout/", logout, name="logout"),
path("register/", register, name="register"),
path("reset-password/", reset_password, name="reset-password"),
# components
path("web/components/products/", list_products, name="list_products"),
path("web/components/cart-dropdown/", cart_dropdown, name="cart_dropdown"),
# api
path("web/add-cart-item/", add_cart_item, name="add_cart_item"),
path("web/delete-cart-item/<int:pk>/", delete_cart_item, name="delete_cart_item"),
@@ -1,7 +1,8 @@
from django.shortcuts import render
from django.views.generic import TemplateView
from shop.filters import ProductFilter
from shop.models import Product, Cart, ProductPrice
from shop.models import Cart, Product, ProductPrice
from web.mixins import FilteredQuerysetMixin, PaginatedQuerysetMixin
from web.settings import ANONYMOUS_CART_ID_COOKIE_NAME
from web.utils import get_or_create_cart
@@ -9,7 +10,9 @@ from web.utils import get_or_create_cart
class ListProducts(TemplateView, FilteredQuerysetMixin, PaginatedQuerysetMixin):
template_name = "web/list_products.html"
queryset = Product.objects.all().prefetch_related('images', )
queryset = Product.objects.all().prefetch_related(
"images",
)
filter_class = ProductFilter
def get_context_data(self, **kwargs):
+68
View File
@@ -0,0 +1,68 @@
from django.contrib.auth import login as login_user
from django.contrib.auth import logout as logout_user
from django.shortcuts import redirect, render, reverse
from django.views.generic import TemplateView, View
from users.forms import LoginForm
class RedirectionMixin:
redirect_to = ""
def get_redirection(self):
return reverse(self.redirect_to)
class LoginView(View, RedirectionMixin):
template_name = "users/login.html"
redirect_to = "web:index"
login_form_class = LoginForm
def get_login_form(self, request):
return self.login_form_class(data=request.POST)
def get(self, request, *args, **kwargs):
if request.user.is_authenticated:
return redirect(self.get_redirection())
login_form = self.login_form_class()
return render(request, self.template_name, {"form": login_form})
def post(self, request, *args, **kwargs):
login_form = self.get_login_form(request)
if login_form.is_valid():
login_user(request, login_form.get_user())
if not login_form.cleaned_data.get("remember_me"):
request.session.set_expiry(0)
return redirect(self.get_redirection())
return render(request, self.template_name, {"form": login_form}, status=400)
class LogoutView(View, RedirectionMixin):
redirect_to = "web:index"
def get(self, request, *args, **kwargs):
logout_user(request)
return redirect(self.get_redirection())
def post(self, request, *args, **kwargs):
logout_user(request)
return redirect(self.get_redirection())
class RegisterView(TemplateView):
template_name = "web/register.html"
class ResetPasswordView(TemplateView):
template_name = "web/reset-password.html"
login = LoginView.as_view()
logout = LogoutView.as_view()
register = RegisterView.as_view()
reset_password = ResetPasswordView.as_view()
+4 -72
View File
@@ -1,74 +1,11 @@
from django.shortcuts import get_object_or_404
from django.http.response import HttpResponse
from django.shortcuts import get_object_or_404
from django.views.decorators.http import require_http_methods
from shop.models import Product, CartItem
from web.utils import get_or_create_cart
from web.settings import ANONYMOUS_CART_ID_COOKIE_NAME
from django.contrib.auth import login as login_user
from django.contrib.auth import logout as logout_user
from django.shortcuts import redirect, render, reverse
from django.views.generic import TemplateView, View
from users.forms import LoginForm
class RedirectionMixin:
redirect_to = ""
def get_redirection(self):
return reverse(self.redirect_to)
class LoginView(View, RedirectionMixin):
template_name = "users/login.html"
redirect_to = "web:index"
login_form_class = LoginForm
def get_login_form(self, request):
return self.login_form_class(data=request.POST)
def get(self, request, *args, **kwargs):
if request.user.is_authenticated:
return redirect(self.get_redirection())
login_form = self.login_form_class()
return render(request, self.template_name, {"form": login_form})
def post(self, request, *args, **kwargs):
login_form = self.get_login_form(request)
if login_form.is_valid():
login_user(request, login_form.get_user())
if not login_form.cleaned_data.get('remember_me'):
request.session.set_expiry(0)
return redirect(self.get_redirection())
return render(request, self.template_name, {"form": login_form}, status=400)
class LogoutView(View, RedirectionMixin):
redirect_to = "web:index"
def get(self, request, *args, **kwargs):
logout_user(request)
return redirect(self.get_redirection())
def post(self, request, *args, **kwargs):
logout_user(request)
return redirect(self.get_redirection())
class RegisterView(TemplateView):
template_name = "web/register.html"
class ResetPasswordView(TemplateView):
template_name = "web/reset-password.html"
from shop.models import CartItem, Product
from web.settings import ANONYMOUS_CART_ID_COOKIE_NAME
from web.utils import get_or_create_cart
class IndexView(TemplateView):
@@ -139,8 +76,3 @@ def delete_cart_item(request, pk, *args, **kwargs):
index = IndexView.as_view()
product_detail = ProductDetail.as_view()
login = LoginView.as_view()
logout = LogoutView.as_view()
register = RegisterView.as_view()
reset_password = ResetPasswordView.as_view()