{{ post.title }}
- +{{ post.description }}
@@ -19,19 +26,34 @@From f62d9b2160eae58de4bc3f88e22a9ed8d6d41b5f Mon Sep 17 00:00:00 2001 From: Akromjon <152626511+RustamovAkrom@users.noreply.github.com> Date: Fri, 15 Nov 2024 11:13:49 +0500 Subject: [PATCH 1/2] add users testing --- apps/users/models.py | 2 +- apps/users/tests.py | 26 +++++++++++++++++--------- apps/users/views.py | 17 ++++++++--------- 3 files changed, 26 insertions(+), 19 deletions(-) diff --git a/apps/users/models.py b/apps/users/models.py index d1842b5..7c7b22d 100644 --- a/apps/users/models.py +++ b/apps/users/models.py @@ -4,7 +4,7 @@ from django.db import models -class User(AbstractUser, TimestempedAbstractModel): +class User(TimestempedAbstractModel, AbstractUser): email = models.EmailField(_("email address"), unique=True) @property diff --git a/apps/users/tests.py b/apps/users/tests.py index a8dca2a..2aba761 100644 --- a/apps/users/tests.py +++ b/apps/users/tests.py @@ -1,15 +1,23 @@ from django.test import TestCase +from django.urls import reverse from .models import User, UserProfile class TestUsers(TestCase): - def setUp(self) -> None: - User.objects.create( - username="User", - email="user@example.com", - password="password" - ) - return super().setUp() - - \ No newline at end of file + + def test_user_register_page(self): + response = self.client.get(reverse("users:register")) + + self.assertEqual(response.status_code, 200) + self.assertTemplateUsed(response, "auth/register.html") + self.assertContains(response, "Register") + # self.assertRedirects(response, reverse("users:login")) + + def test_user_login_page(self): + response = self.client.get(reverse("users:login")) + + self.assertEqual(response.status_code, 200) + self.assertTemplateUsed(response, "auth/login.html") + self.assertContains(response, "Login") + # self.assertRedirects(response, reverse("blog:home")) \ No newline at end of file diff --git a/apps/users/views.py b/apps/users/views.py index 6d42695..22cc3c8 100644 --- a/apps/users/views.py +++ b/apps/users/views.py @@ -1,5 +1,5 @@ from django.shortcuts import render, redirect, get_object_or_404 -from django.urls import reverse +from django.urls import reverse, reverse_lazy from django.contrib.auth.mixins import LoginRequiredMixin from django.contrib import messages from django.views import View @@ -31,11 +31,11 @@ def post(self, request): if form.is_valid(): form.save() messages.success(request, "User succesfully registered") - return redirect(reverse("users:login")) + return redirect(reverse_lazy("users:login")) messages.warning(request, "Invalid registration fields!") - return render(request, "auth/register.html", {"form": form}) - + return redirect(reverse_lazy("auth:register")) + class LoginPageView(CustomHtmxMixin, View): template_name = "auth/login.html" @@ -59,7 +59,7 @@ def post(self, request): if user is not None: - response = redirect(reverse("blog:home")) + response = redirect(reverse_lazy("blog:home")) # Login for jwt response = get_jwt_login_response(response, user) @@ -67,11 +67,10 @@ def post(self, request): messages.success(request, f"You are logged in as { username }") return response - else: - messages.error(request, "Invalid username or password.") - return redirect(reverse("users:login")) + messages.error(request, "Invalid username or password.") - return render(request, "auth/login.html", {"form": form}) + return redirect(reverse_lazy("users:login")) + class LogoutPageView(CustomHtmxMixin, LoginRequiredMixin, View): From 8973e781da06eccb840da92ca603dff05879b4ee Mon Sep 17 00:00:00 2001 From: Akromjon <152626511+RustamovAkrom@users.noreply.github.com> Date: Fri, 15 Nov 2024 16:17:43 +0500 Subject: [PATCH 2/2] fix: change htmx configurations --- apps/blog/utils.py | 13 +----- apps/blog/views.py | 2 +- templates/base.html | 17 +------ templates/blog/post_confirm_delete.html | 14 +++--- templates/blog/post_detail.html | 60 +++++++++++++++++++++---- templates/blog/post_update.html | 11 ++++- templates/blog/profile.html | 15 ++++++- templates/blog/user_posts.html | 25 +++++++---- templates/components/headers.html | 4 ++ templates/components/messages.html | 17 +++++++ 10 files changed, 123 insertions(+), 55 deletions(-) create mode 100644 templates/components/messages.html diff --git a/apps/blog/utils.py b/apps/blog/utils.py index 9f568b7..afca9f0 100644 --- a/apps/blog/utils.py +++ b/apps/blog/utils.py @@ -16,20 +16,11 @@ def get_search_model_queryset( ) return search_query - # search_for_title = model_queryset.filter(title__icontains=search_query) - # if not search_for_title: - # search_for_content = model_queryset.filter(content__icontains=search_query) - # if not search_for_content: - # queryset = search_for_content - # else: - # queryset = search_for_content - # else: - # queryset = search_for_title - # return queryset + def get_pagination_obj(model_queryset: QuerySet, page: int = 1, size: int = 4) -> Page: - paginator = Paginator(model_queryset.order_by("id"), size) + paginator = Paginator(model_queryset.order_by("-created_at"), size) try: page_obj = paginator.page(page) diff --git a/apps/blog/views.py b/apps/blog/views.py index 32310c9..a4862b0 100644 --- a/apps/blog/views.py +++ b/apps/blog/views.py @@ -166,7 +166,7 @@ def get(self, request): context = { "title": "My posts", "template_htmx": self.template_htmx, - "posts": posts + "posts": posts.order_by("-created_at") } return render(request, self.template_name, context) diff --git a/templates/base.html b/templates/base.html index d338962..c9d7a0a 100644 --- a/templates/base.html +++ b/templates/base.html @@ -21,22 +21,7 @@ {% include 'components/headers.html' %}
{{ post.description }}
@@ -19,19 +26,34 @@