mirror of
https://github.com/IRBorisov/ConceptPortal.git
synced 2025-06-26 04:50:36 +03:00
59 lines
1.5 KiB
Python
59 lines
1.5 KiB
Python
![]() |
''' Models: Editor. '''
|
||
|
from typing import TYPE_CHECKING
|
||
|
|
||
|
from django.db.models import (
|
||
|
Model, ForeignKey,
|
||
|
CASCADE, DateTimeField
|
||
|
)
|
||
|
|
||
|
from apps.users.models import User
|
||
|
|
||
|
|
||
|
if TYPE_CHECKING:
|
||
|
from .LibraryItem import LibraryItem
|
||
|
|
||
|
|
||
|
class Editor(Model):
|
||
|
''' Editor list. '''
|
||
|
item: ForeignKey = ForeignKey(
|
||
|
verbose_name='Схема',
|
||
|
to='rsform.LibraryItem',
|
||
|
on_delete=CASCADE
|
||
|
)
|
||
|
editor: ForeignKey = ForeignKey(
|
||
|
verbose_name='Редактор',
|
||
|
to=User,
|
||
|
on_delete=CASCADE,
|
||
|
null=True
|
||
|
)
|
||
|
time_create: DateTimeField = DateTimeField(
|
||
|
verbose_name='Дата добавления',
|
||
|
auto_now_add=True
|
||
|
)
|
||
|
|
||
|
class Meta:
|
||
|
''' Model metadata. '''
|
||
|
verbose_name = 'Редактор'
|
||
|
verbose_name_plural = 'Редакторы'
|
||
|
unique_together = [['item', 'editor']]
|
||
|
|
||
|
def __str__(self) -> str:
|
||
|
return f'{self.item}: {self.editor}'
|
||
|
|
||
|
@staticmethod
|
||
|
def add(user: User, item: 'LibraryItem') -> bool:
|
||
|
''' Add Editor for item. '''
|
||
|
if Editor.objects.filter(editor=user, item=item).exists():
|
||
|
return False
|
||
|
Editor.objects.create(editor=user, item=item)
|
||
|
return True
|
||
|
|
||
|
@staticmethod
|
||
|
def remove(user: User, item: 'LibraryItem') -> bool:
|
||
|
''' Remove Editor. '''
|
||
|
editor = Editor.objects.filter(editor=user, item=item)
|
||
|
if not editor.exists():
|
||
|
return False
|
||
|
editor.delete()
|
||
|
return True
|