40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
# apps/accounts/models.py
|
|
|
|
import uuid
|
|
|
|
from django.conf import settings
|
|
from django.db import models
|
|
from django.contrib.auth.models import AbstractUser
|
|
|
|
class User(AbstractUser):
|
|
pass
|
|
|
|
class PlayerProfile(models.Model):
|
|
class Visibility(models.TextChoices):
|
|
PRIVATE = "private", "Privé"
|
|
LOCAL = "local", "Instance locale"
|
|
FEDERATED = "federated", "Public et fédéré"
|
|
|
|
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
|
|
user = models.OneToOneField(
|
|
settings.AUTH_USER_MODEL,
|
|
on_delete=models.CASCADE,
|
|
related_name="player_profile",
|
|
)
|
|
handle = models.SlugField(max_length=50, unique=True)
|
|
display_name = models.CharField(max_length=100)
|
|
bio = models.TextField(blank=True)
|
|
avatar = models.ImageField(upload_to="avatars/", blank=True)
|
|
|
|
visibility = models.CharField(
|
|
max_length=16,
|
|
choices=Visibility.choices,
|
|
default=Visibility.PRIVATE,
|
|
)
|
|
|
|
# Identifiant stable exposé à la fédération
|
|
public_id = models.UUIDField(default=uuid.uuid4, unique=True, editable=False)
|
|
|
|
created_at = models.DateTimeField(auto_now_add=True)
|
|
updated_at = models.DateTimeField(auto_now=True)
|