Initial commit

This commit is contained in:
Richard
2026-07-31 10:08:13 +02:00
parent 652943fb7e
commit a69f31649c
7192 changed files with 924319 additions and 0 deletions
+59
View File
@@ -0,0 +1,59 @@
import uuid
from django.contrib.auth.models import AbstractUser
from django.db import models
from django.conf import settings
class User(AbstractUser):
email = models.EmailField(unique=True)
display_name = models.CharField(max_length=150, blank=True, default='')
skills = models.ManyToManyField('events.Skill', blank=True, related_name='users')
is_admin_user = models.BooleanField(default=False)
is_approved = models.BooleanField(default=True, help_text="Vom Admin freigeschaltet")
def get_display_name(self):
return self.display_name or self.username or self.email
def __str__(self):
status_str = " (Ausstehend)" if not self.is_approved else ""
return f"{self.get_display_name()} ({self.email}){status_str}"
class RegistrationDomainRule(models.Model):
domain = models.CharField(max_length=150, unique=True, help_text="z. B. verein.de oder @beispiel.org")
is_active = models.BooleanField(default=True)
created_at = models.DateTimeField(auto_now_add=True)
def clean_domain(self):
domain = self.domain.strip().lower()
if not domain.startswith('@'):
domain = '@' + domain
return domain
def save(self, *args, **kwargs):
self.domain = self.clean_domain()
super().save(*args, **kwargs)
def __str__(self):
return f"{self.domain} ({'Aktiv' if self.is_active else 'Inaktiv'})"
class RegistrationRestrictionSetting(models.Model):
is_restriction_enabled = models.BooleanField(default=False)
require_admin_approval = models.BooleanField(default=False, help_text="Neue Registrierungen müssen von einem Admin freigeschaltet werden")
@classmethod
def get_solo(cls):
obj, _ = cls.objects.get_or_create(pk=1)
return obj
def __str__(self):
return f"Domain-Einschränkung: {self.is_restriction_enabled}, Admin-Freischaltung: {self.require_admin_approval}"
class GuestClaimToken(models.Model):
token = models.UUIDField(default=uuid.uuid4, unique=True, editable=False)
signup = models.ForeignKey('events.ShiftSignup', on_delete=models.CASCADE, related_name='claim_tokens')
guest_name = models.CharField(max_length=150)
created_by = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='created_claim_tokens')
is_claimed = models.BooleanField(default=False)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f"Claim Token for {self.guest_name} ({self.token})"