feat: improve Django admin interface and update last_login on user login

This commit is contained in:
Chneemann 2025-05-17 06:41:48 +02:00
parent 255784c327
commit 4b1fcc6964
2 changed files with 34 additions and 19 deletions

View file

@ -12,6 +12,7 @@ from django.core.mail import EmailMultiAlternatives
from django.template.loader import render_to_string from django.template.loader import render_to_string
from user_app.models import CustomUser from user_app.models import CustomUser
from django.db.models import Q from django.db.models import Q
from django.utils.timezone import now
class LoginView(APIView): class LoginView(APIView):
serializer_class = LoginSerializer serializer_class = LoginSerializer
@ -27,7 +28,12 @@ class LoginView(APIView):
if user: if user:
if not user.is_active: if not user.is_active:
return Response({'error': 'Account is inactive, please check your mails'}, status=status.HTTP_403_FORBIDDEN) 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 self._create_token_response(user)
return Response({'error': 'Unable to login with provided credentials.'}, status=status.HTTP_401_UNAUTHORIZED) return Response({'error': 'Unable to login with provided credentials.'}, status=status.HTTP_401_UNAUTHORIZED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

View file

@ -1,23 +1,32 @@
from django.contrib import admin 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 .models import CustomUser
from .forms import CustomUserCreationForm
from django.contrib.auth.admin import UserAdmin
@admin.register(CustomUser) @admin.register(CustomUser)
class CustomUserAdmin(UserAdmin): class UserAdmin(BaseUserAdmin):
add_form = CustomUserCreationForm model = CustomUser
list_display = ('username', 'email', 'last_login', 'date_joined', 'is_active')
list_filter = ('is_active',)
search_fields = ('email', 'username')
ordering = ('username',)
fieldsets = ( fieldsets = (
*UserAdmin.fieldsets, (None, {'fields': ('username', 'password')}),
( ('Personal info', {'fields': ('first_name', 'last_name', 'email')}),
'Individual data', ('Permissions', {'fields': ('is_active', 'is_staff', 'is_superuser')}),
{ ('Important dates', {'fields': ('last_login', 'date_joined')}),
'fields': ( ('Individual data',{'fields': ('favorite_videos', 'watched_videos', 'verify_email_token')})
'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)