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' %}
- - {% if messages %} - {% for message in messages %} - {% if message.tags == 'error' %} - - {% else %} - - {% endif %} - {% endfor %} - {% endif %} + {% include 'components/messages.html' %}
diff --git a/templates/blog/post_confirm_delete.html b/templates/blog/post_confirm_delete.html index c311ffc..e55ca90 100644 --- a/templates/blog/post_confirm_delete.html +++ b/templates/blog/post_confirm_delete.html @@ -1,9 +1,4 @@ -{% extends 'base.html' %} -{% load static %} -{% block title %} Post Confirm Delete {% endblock %} - -{% block content %}
@@ -16,7 +11,13 @@

"{{ post.title }}" ?

- Cancel + Cancel
@@ -24,6 +25,5 @@

"{{ post.title }}" ?

{% include 'components/latest_posts.html' %}
-{% endblock %} diff --git a/templates/blog/post_detail.html b/templates/blog/post_detail.html index 318f66a..e61e3c3 100644 --- a/templates/blog/post_detail.html +++ b/templates/blog/post_detail.html @@ -5,7 +5,14 @@

{{ post.title }}

- +

{{ post.description }}

@@ -19,19 +26,34 @@

{{ post.title }}

- + {% if request.user.is_authenticated %} {% if post|check_like:request.user %} ({{ post.like_count }}) @@ -45,7 +67,12 @@

{{ post.title }}

- + {% if request.user.is_authenticated %} {% if post|check_dislike:request.user %} ({{ post.dislike_count }}) @@ -61,13 +88,30 @@

{{ post.title }}

{% if request.user == post.author %}
{% endif %}
-
+ {% csrf_token %}
diff --git a/templates/blog/post_update.html b/templates/blog/post_update.html index 2cefd49..7099150 100644 --- a/templates/blog/post_update.html +++ b/templates/blog/post_update.html @@ -1,7 +1,9 @@
- + {% csrf_token %}
Update post: {{ post.title}} @@ -26,7 +28,12 @@
- Cancel + Cancel
diff --git a/templates/blog/profile.html b/templates/blog/profile.html index ad6c7bf..6b4ceff 100644 --- a/templates/blog/profile.html +++ b/templates/blog/profile.html @@ -33,7 +33,12 @@

{% if request.user == user %} {% endif %}
@@ -56,7 +61,13 @@

{{ post.title }}

{{ post.publisher_at }}

{{ post.description|truncatewords_html:30 }}

- Continue reading + Continue reading
{{ post.watching }} {{ post.like_count }} diff --git a/templates/blog/user_posts.html b/templates/blog/user_posts.html index 51e3859..02c878a 100644 --- a/templates/blog/user_posts.html +++ b/templates/blog/user_posts.html @@ -1,18 +1,22 @@
-
-
+
@@ -34,7 +38,12 @@
{{ message }}

{{ post.title }}

{{ post.publisher_at }}

{{ post.description|truncatewords_html:30 }}

- Continue reading + Continue reading
diff --git a/templates/components/headers.html b/templates/components/headers.html index 25dc244..b6416c9 100644 --- a/templates/components/headers.html +++ b/templates/components/headers.html @@ -146,6 +146,10 @@ hx-triget="#main-content" > +
+ + +
diff --git a/templates/components/messages.html b/templates/components/messages.html new file mode 100644 index 0000000..ecf4eff --- /dev/null +++ b/templates/components/messages.html @@ -0,0 +1,17 @@ +{% if messages %} +
+ {% for message in messages %} + {% if message.tags == 'error' %} + + {% else %} + + {% endif %} + {% endfor %} +
+{% endif %} \ No newline at end of file