feat: improve Django admin interface and update last_login on user login
This commit is contained in:
parent
255784c327
commit
4b1fcc6964
2 changed files with 34 additions and 19 deletions
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
)
|
||||
}
|
||||
)
|
||||
)
|
||||
|
||||
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)
|
||||
Loading…
Reference in a new issue