Enhance UserAdmin save logic to auto-generate email from mobile or user ID; improve token creation logging and user existence check
All checks were successful
Build and Push Docker Images / Build and Push Docker Images (push) Successful in 4m18s

This commit is contained in:
i701 2025-06-08 14:32:30 +05:00
parent 4db9d7fabd
commit 38d80709db
Signed by: i701
GPG Key ID: 54A0DA1E26D8E587
2 changed files with 34 additions and 0 deletions

View File

@ -1,5 +1,8 @@
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
@ -63,6 +66,14 @@ class UserAdmin(BaseUserAdmin):
("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 = (

View File

@ -44,6 +44,29 @@ def authenticate_by_token(callback_token):
def create_callback_token_for_user(user, token_type):
logger.info(
f"Attempting to create token for user: {user}, user.pk: {user.pk if user else 'None'}"
)
if user and user.pk:
try:
# Explicitly check if the user exists in the database
User.objects.get(pk=user.pk)
logger.info(
f"User with pk {user.pk} confirmed to exist in DB before token creation."
)
except User.DoesNotExist:
logger.error(
f"CRITICAL: User with pk {user.pk} DOES NOT EXIST in DB right before token creation for {user}!"
)
return None
# You might want to return None or raise an exception here to prevent the IntegrityError
# For example: return None
else:
logger.error(
f"CRITICAL: Invalid user object passed to create_callback_token_for_user: {user}"
)
# return None
token = None
token_type = token_type.upper()