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"]