updated to selfdelete inheritance

This commit is contained in:
2026-04-19 01:36:03 +02:00
parent 043e866ac9
commit 5280a87e8b
7 changed files with 151 additions and 58 deletions

View File

@@ -1,11 +1,15 @@
import uuid
from django.db import models
from django.conf import settings
from vontor_cz.custom_fields import WebPImageField
from vontor_cz.models import SoftDeleteModel
# Create your models here.
class Hub(models.Model):
class Hub(SoftDeleteModel):
AUTHOR_FIELD = 'owner'
name = models.CharField(max_length=255, unique=True)
description = models.TextField(blank=True, null=True)
@@ -25,12 +29,45 @@ class Hub(models.Model):
blank=True
)
#TODO:
is_public = models.BooleanField(default=True)
transfer_to = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.SET_NULL,
null=True,
blank=True,
related_name='pending_hub_transfers'
)
transfer_token = models.UUIDField(null=True, blank=True, unique=True)
def create_transfer(self, new_owner):
self.transfer_to = new_owner
self.transfer_token = uuid.uuid4()
self.save(update_fields=['transfer_to', 'transfer_token'])
def verify_transfer(self, input_token, triggering_user):
"""Requires uuid and triggering user must match the transfer_to field"""
if self.transfer_token and str(self.transfer_token) == str(input_token) and self.transfer_to == triggering_user:
self.owner = self.transfer_to
self.transfer_to = None
self.transfer_token = None
self.save(update_fields=['owner', 'transfer_to', 'transfer_token'])
return True
return raiseExceptions("Invalid transfer token or user does not match transfer_to field")
def cancel_transfer(self):
self.transfer_to = None
self.transfer_token = None
self.save(update_fields=['transfer_to', 'transfer_token'])
def __str__(self):
return self.name
class HubPermission(models.Model):
class HubPermission(SoftDeleteModel):
hub = models.ForeignKey(Hub, on_delete=models.CASCADE, related_name='moderators')
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)