67 lines
1.7 KiB
Python
67 lines
1.7 KiB
Python
# DRF Rack
|
|
# Библиотека классов расширений для Django REST Framework
|
|
#
|
|
# Автор: Николай В. Анохин <n.anokhin@xeaf.net>
|
|
# Все права защищены. Лицензия: MIT
|
|
|
|
"""
|
|
Описание класса DeletedAtMixin
|
|
"""
|
|
|
|
from django.db import models
|
|
from django.utils.translation import gettext_lazy as _
|
|
|
|
from net.xeaf.rack.utils import DateUtils
|
|
|
|
|
|
class DeletedAtMixin(models.Model):
|
|
"""
|
|
Добавляет к модели свойство даты и времени удаления
|
|
"""
|
|
|
|
deleted_at = models.DateTimeField(
|
|
null=True,
|
|
blank=True,
|
|
editable=True,
|
|
verbose_name=_("rack.mixin.deleted_at"),
|
|
)
|
|
""" Дата и время удаления """
|
|
|
|
def soft_delete(self, save: bool = True) -> None:
|
|
"""
|
|
Помечает запись на удаление
|
|
|
|
:param save: Признак необходимости сохранения
|
|
"""
|
|
|
|
self.deleted_at = DateUtils.now()
|
|
if save:
|
|
self.save()
|
|
|
|
def undelete(self, save: bool = True) -> None:
|
|
"""
|
|
Снимает пометку удаленной записи
|
|
|
|
:param save: Признак необходимости сохранения
|
|
"""
|
|
|
|
self.deleted_at = None
|
|
if save:
|
|
self.save()
|
|
|
|
def is_deleted(self) -> bool:
|
|
"""
|
|
Возвращает признак удаленной записи
|
|
|
|
:return: True, если запись была удалена
|
|
"""
|
|
|
|
return self.deleted_at is not None
|
|
|
|
class Meta:
|
|
"""
|
|
Конфигурация класса
|
|
"""
|
|
|
|
abstract = True
|