50 lines
1.5 KiB
Python
50 lines
1.5 KiB
Python
from django.db import models
|
|
from django.conf import settings
|
|
from vontor_cz.custom_fields import WebPImageField
|
|
|
|
# Create your models here.
|
|
|
|
|
|
class Hub(models.Model):
|
|
name = models.CharField(max_length=255, unique=True)
|
|
description = models.TextField(blank=True, null=True)
|
|
|
|
owner = models.ForeignKey(
|
|
settings.AUTH_USER_MODEL,
|
|
on_delete=models.SET_NULL,
|
|
null=True,
|
|
related_name='owned_hubs'
|
|
)
|
|
|
|
icon = WebPImageField(upload_to='hub_icons/', null=True, blank=True)
|
|
banner = WebPImageField(upload_to='hub_banners/', null=True, blank=True)
|
|
|
|
members = models.ManyToManyField(
|
|
settings.AUTH_USER_MODEL,
|
|
related_name='hubs',
|
|
blank=True
|
|
)
|
|
|
|
#TODO:
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
class HubPermission(models.Model):
|
|
hub = models.ForeignKey(Hub, on_delete=models.CASCADE, related_name='moderators')
|
|
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
|
|
|
|
changing_name = models.BooleanField(default=False)
|
|
changing_description = models.BooleanField(default=False)
|
|
changing_icon = models.BooleanField(default=False)
|
|
changing_banner = models.BooleanField(default=False)
|
|
|
|
managing_members = models.BooleanField(default=False)
|
|
managing_posts = models.BooleanField(default=False)
|
|
managing_chats = models.BooleanField(default=False)
|
|
|
|
class Meta:
|
|
unique_together = ('hub', 'user')
|
|
|
|
def __str__(self):
|
|
return f"{self.user} moderates {self.hub}" |