2024-08-12 16:29:55 +01:00

68 lines
1.9 KiB
Python

# -*- encoding: utf-8 -*-
import logging
from django.contrib.auth.models import BaseUserManager
log = logging.getLogger(__name__)
class DiscordUserOAuth2Manager(BaseUserManager):
"""
Manager for the DiscordUser class.
"""
def create_user(self, discord_user_data: dict, **extra_fields):
"""
Create a user from their discord data.
Parameters
----------
discord_user_data : dict
The raw discord user data
Returns
-------
DiscordUser
The newly created DiscordUser instance.
"""
log.info("creating new user")
discord_user_data.update(extra_fields)
user = discord_user_data # shorthand
return self.create(
id=user["id"],
username=user["username"],
global_name=user["global_name"],
avatar=user["avatar"],
public_flags=user["public_flags"],
flags=user["flags"],
locale=user["locale"],
mfa_enabled=user["mfa_enabled"],
access_token=user["access_token"],
token_expires=user["token_expires"],
refresh_token=user["refresh_token"],
**extra_fields
)
def create_superuser(self, discord_user_data: dict, **extra_fields):
"""
Create a user from their discord data, but also make them a superuser.
"""
log.info("creating new superuser")
extra_fields.setdefault("is_staff", True)
extra_fields.setdefault("is_superuser", True)
extra_fields.setdefault("is_active", True)
if not extra_fields.get("is_staff"):
raise ValueError("Superuser must have is_staff=True")
if not extra_fields.get("is_superuser"):
raise ValueError("Superuser must have is_staff=True")
return self.create_user(discord_user_data, **extra_fields)