i701 38d80709db
All checks were successful
Build and Push Docker Images / Build and Push Docker Images (push) Successful in 4m18s
Enhance UserAdmin save logic to auto-generate email from mobile or user ID; improve token creation logging and user existence check
2025-06-08 14:32:30 +05:00

134 lines
3.4 KiB
Python

from typing import Any
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.forms.models import ModelForm
from django.http.request import HttpRequest
from api.models import User, Atoll, Island, TemporaryUser
from django.contrib.auth.models import Permission
class UserAdmin(BaseUserAdmin):
list_display = (
"username",
"email",
"first_name",
"last_name",
"verified",
"is_active",
"is_staff",
"mobile",
"address",
"wallet_balance",
"acc_no",
"id_card",
"dob",
"atoll",
"island",
"terms_accepted",
"policy_accepted",
)
fieldsets = (
(None, {"fields": ("username", "password")}),
(
"Personal info",
{
"fields": (
"first_name",
"last_name",
"email",
"mobile",
"address",
"verified",
"wallet_balance",
"acc_no",
"id_card",
"dob",
"atoll",
"island",
"terms_accepted",
"policy_accepted",
)
},
),
(
"Permissions",
{
"fields": (
"is_active",
"is_staff",
"is_superuser",
"groups",
"user_permissions",
)
},
),
("Important dates", {"fields": ("last_login", "date_joined")}),
)
def save_model(self, request, obj, form, change):
if not obj.email:
if obj.mobile:
obj.email = f"{obj.mobile}@sarlink.net"
else:
obj.email = f"user_{obj.pk or 'new'}@sarlink.net"
super().save_model(request, obj, form, change)
class TemporaryUserAdmin(admin.ModelAdmin):
list_display = (
"t_username",
"t_email",
"t_first_name",
"t_last_name",
"t_verified",
"t_mobile",
"t_address",
"t_wallet_balance",
"otp_verified",
"t_acc_no",
"t_id_card",
"t_dob",
"t_atoll",
"t_island",
"t_terms_accepted",
"t_policy_accepted",
)
fieldsets = (
(None, {"fields": ("t_username",)}),
(
"Personal info",
{
"fields": (
"t_first_name",
"t_last_name",
"t_email",
"t_mobile",
"t_address",
"t_verified",
"otp_verified",
"t_wallet_balance",
"t_acc_no",
"t_id_card",
"t_dob",
"t_atoll",
"t_island",
"t_terms_accepted",
"t_policy_accepted",
)
},
),
)
search_fields = ("t_username", "t_email", "t_mobile", "t_id_card")
# Re-register UserAdmin
admin.site.register(User, UserAdmin)
admin.site.register(Permission)
admin.site.register(Atoll)
admin.site.register(Island)
admin.site.register(TemporaryUser, TemporaryUserAdmin)
# TokenAdmin.raw_id_fields = ["user"]