forked from Mirrors/Dispatcharr
39 lines
1.2 KiB
Python
39 lines
1.2 KiB
Python
# apps/accounts/models.py
|
|
from django.db import models
|
|
from django.contrib.auth.models import AbstractUser, Permission
|
|
|
|
|
|
class User(AbstractUser):
|
|
"""
|
|
Custom user model for Dispatcharr.
|
|
Inherits from Django's AbstractUser to add additional fields if needed.
|
|
"""
|
|
|
|
class UserLevel(models.IntegerChoices):
|
|
STREAMER = 0, "Streamer"
|
|
STANDARD = 1, "Standard User"
|
|
ADMIN = 10, "Admin"
|
|
|
|
avatar_config = models.JSONField(default=dict, blank=True, null=True)
|
|
channel_profiles = models.ManyToManyField(
|
|
"dispatcharr_channels.ChannelProfile",
|
|
blank=True,
|
|
related_name="users",
|
|
)
|
|
user_level = models.IntegerField(default=UserLevel.STREAMER)
|
|
custom_properties = models.JSONField(default=dict, blank=True, null=True)
|
|
|
|
def __str__(self):
|
|
return self.username
|
|
|
|
def get_groups(self):
|
|
"""
|
|
Returns the groups (roles) the user belongs to.
|
|
"""
|
|
return self.groups.all()
|
|
|
|
def get_permissions(self):
|
|
"""
|
|
Returns the permissions assigned to the user and their groups.
|
|
"""
|
|
return self.user_permissions.all() | Permission.objects.filter(group__user=self)
|