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 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)
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
fieldsets = (
|
list_display = ('username', 'email', 'last_login', 'date_joined', 'is_active')
|
||||||
*UserAdmin.fieldsets,
|
list_filter = ('is_active',)
|
||||||
(
|
search_fields = ('email', 'username')
|
||||||
'Individual data',
|
ordering = ('username',)
|
||||||
{
|
|
||||||
'fields': (
|
|
||||||
'favorite_videos',
|
|
||||||
'watched_videos',
|
|
||||||
'verify_email_token',
|
|
||||||
)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
|
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