From 4b1fcc6964346558efb5b1706b46f6f394047d63 Mon Sep 17 00:00:00 2001 From: Chneemann Date: Sat, 17 May 2025 06:41:48 +0200 Subject: [PATCH] feat: improve Django admin interface and update last_login on user login --- backend/auth_app/views.py | 6 +++++ backend/user_app/admin.py | 47 +++++++++++++++++++++++---------------- 2 files changed, 34 insertions(+), 19 deletions(-) diff --git a/backend/auth_app/views.py b/backend/auth_app/views.py index 873a009..1428ea8 100644 --- a/backend/auth_app/views.py +++ b/backend/auth_app/views.py @@ -12,6 +12,7 @@ from django.core.mail import EmailMultiAlternatives from django.template.loader import render_to_string from user_app.models import CustomUser from django.db.models import Q +from django.utils.timezone import now class LoginView(APIView): serializer_class = LoginSerializer @@ -27,7 +28,12 @@ class LoginView(APIView): if user: if not user.is_active: return Response({'error': 'Account is inactive, please check your mails'}, status=status.HTTP_403_FORBIDDEN) + + user.last_login = now() + user.save(update_fields=['last_login']) + return self._create_token_response(user) + return Response({'error': 'Unable to login with provided credentials.'}, status=status.HTTP_401_UNAUTHORIZED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) diff --git a/backend/user_app/admin.py b/backend/user_app/admin.py index a482702..aa653ec 100644 --- a/backend/user_app/admin.py +++ b/backend/user_app/admin.py @@ -1,23 +1,32 @@ from django.contrib import admin +from django.contrib.auth.admin import UserAdmin as BaseUserAdmin +from django.contrib.auth.models import Group from .models import CustomUser -from .forms import CustomUserCreationForm -from django.contrib.auth.admin import UserAdmin @admin.register(CustomUser) -class CustomUserAdmin(UserAdmin): - add_form = CustomUserCreationForm - - fieldsets = ( - *UserAdmin.fieldsets, - ( - 'Individual data', - { - 'fields': ( - 'favorite_videos', - 'watched_videos', - 'verify_email_token', - ) - } - ) - ) - \ No newline at end of file +class UserAdmin(BaseUserAdmin): + model = CustomUser + + list_display = ('username', 'email', 'last_login', 'date_joined', 'is_active') + list_filter = ('is_active',) + search_fields = ('email', 'username') + ordering = ('username',) + + fieldsets = ( + (None, {'fields': ('username', 'password')}), + ('Personal info', {'fields': ('first_name', 'last_name', 'email')}), + ('Permissions', {'fields': ('is_active', 'is_staff', 'is_superuser')}), + ('Important dates', {'fields': ('last_login', 'date_joined')}), + ('Individual data',{'fields': ('favorite_videos', 'watched_videos', 'verify_email_token')}) + ) + + add_fieldsets = ( + (None, { + 'classes': ('wide',), + 'fields': ('username', 'email', 'password1', 'password2', 'is_active', 'is_staff'), + }), + ) + + list_editable = ('is_active',) + +admin.site.unregister(Group) \ No newline at end of file