ConceptPortal-public/rsconcept/backend/apps/library/models/Subscription.py

45 lines
1.3 KiB
Python
Raw Normal View History

''' Models: Subscription. '''
2024-05-24 18:31:14 +03:00
from django.db.models import CASCADE, ForeignKey, Model
from apps.users.models import User
2024-05-24 18:31:14 +03:00
class Subscription(Model):
''' User subscription to library item. '''
user: ForeignKey = ForeignKey(
verbose_name='Пользователь',
to=User,
on_delete=CASCADE
)
item: ForeignKey = ForeignKey(
verbose_name='Элемент',
to='library.LibraryItem',
on_delete=CASCADE
)
class Meta:
''' Model metadata. '''
2024-05-24 15:40:28 +03:00
verbose_name = 'Подписка'
verbose_name_plural = 'Подписки'
unique_together = [['user', 'item']]
def __str__(self) -> str:
return f'{self.user} -> {self.item}'
@staticmethod
2024-08-06 23:14:09 +03:00
def subscribe(user: int, item: int) -> bool:
''' Add subscription. '''
2024-08-06 23:14:09 +03:00
if Subscription.objects.filter(user_id=user, item_id=item).exists():
return False
2024-08-06 23:14:09 +03:00
Subscription.objects.create(user_id=user, item_id=item)
return True
@staticmethod
2024-08-06 23:14:09 +03:00
def unsubscribe(user: int, item: int) -> bool:
''' Remove subscription. '''
2024-08-06 23:14:09 +03:00
sub = Subscription.objects.filter(user_id=user, item_id=item).only('pk')
if not sub.exists():
return False
sub.delete()
return True