48 lines
1.8 KiB
Python
48 lines
1.8 KiB
Python
from .models import UserInformation
|
|
from django.contrib.auth.models import User
|
|
from typing import Optional
|
|
|
|
|
|
async def create_user_information(user: User, *, display_name: Optional[str] = None) -> UserInformation:
|
|
"""Async. Create a UserInformation object for the given user.
|
|
|
|
@param user: The user to create the UserInformation object for.
|
|
@param display_name: The display name for the user. If None, the user's username will be used.
|
|
@return: The created UserInformation object.
|
|
"""
|
|
user_information = await UserInformation.objects.acreate(user=user, display_name=user.username)
|
|
|
|
# Use the given display name if provided.
|
|
if display_name is not None:
|
|
user_information.display_name = display_name
|
|
await user_information.asave()
|
|
|
|
return user_information
|
|
|
|
|
|
async def get_user_information(user: User) -> UserInformation:
|
|
"""Async. Get the UserInformation object for the given user.
|
|
|
|
@param user: The user to get the UserInformation object for.
|
|
@return: The UserInformation object for the given user.
|
|
"""
|
|
return await UserInformation.objects.aget(user)
|
|
|
|
|
|
async def set_user_display_name(user: User, display_name: Optional[str] = None) -> UserInformation:
|
|
"""Async. Set the display name for the given user.
|
|
|
|
@param user: The user to set the display name for.
|
|
@param display_name: The display name to set for the user. If None, the user's username will be used.
|
|
@return: The UserInformation object for the given user.
|
|
"""
|
|
user_information = await UserInformation.objects.aget(user)
|
|
|
|
# Set the display name to the given display name, or the user's username if None.
|
|
if display_name is not None:
|
|
user_information.display_name = display_name
|
|
else:
|
|
user_information.display_name = user.username
|
|
|
|
await user_information.asave()
|
|
return user_information
|