multiuser/subscriptions/notifications
This commit is contained in:
39
accounts/models.py
Normal file
39
accounts/models.py
Normal file
@@ -0,0 +1,39 @@
|
||||
from django.db import models
|
||||
from django.contrib.auth.models import AbstractUser
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
class User(AbstractUser):
|
||||
"""
|
||||
Custom User Model mit zusätzlichen Feldern und Berechtigungen.
|
||||
Normale User können nur ihre eigenen Daten bearbeiten.
|
||||
Admin-User können alles.
|
||||
"""
|
||||
email = models.EmailField(_("email address"), unique=True)
|
||||
bio = models.TextField(max_length=500, blank=True)
|
||||
is_admin = models.BooleanField(default=False)
|
||||
|
||||
# Jellyfin fields
|
||||
jellyfin_user_id = models.CharField(max_length=100, blank=True, null=True)
|
||||
jellyfin_token = models.CharField(max_length=500, blank=True, null=True)
|
||||
jellyfin_server = models.CharField(max_length=200, blank=True, null=True)
|
||||
|
||||
def check_jellyfin_admin(self):
|
||||
"""Check if user is Jellyfin admin on the server"""
|
||||
from accounts.utils import JellyfinClient
|
||||
if not self.jellyfin_user_id or not self.jellyfin_token:
|
||||
return False
|
||||
try:
|
||||
client = JellyfinClient()
|
||||
return client.is_admin(self.jellyfin_user_id, self.jellyfin_token)
|
||||
except:
|
||||
# Im Fehlerfall den lokalen Status verwenden
|
||||
return self.is_admin
|
||||
|
||||
@property
|
||||
def is_jellyfin_admin(self):
|
||||
"""Check if user is admin either locally or on Jellyfin server"""
|
||||
return self.is_admin or self.check_jellyfin_admin()
|
||||
|
||||
class Meta:
|
||||
verbose_name = _("user")
|
||||
verbose_name_plural = _("users")
|
Reference in New Issue
Block a user