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 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)

View file

@ -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
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 = (
*UserAdmin.fieldsets,
(
'Individual data',
{
'fields': (
'favorite_videos',
'watched_videos',
'verify_email_token',
)
}
)
(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)