Files
drf-rack/net/xeaf/rack/models/mixins/deleted_at_mixin.py

66 lines
1.7 KiB
Python

# DRF Rack
# Библиотека классов расширений для Django REST Framework
#
# Автор: Николай В. Анохин <n.anokhin@xeaf.net>
# Все права защищены. Лицензия: MIT
"""
Описание класса DeletedAtMixin
"""
from django.db import models
from django.utils import timezone
from django.utils.translation import gettext_lazy as _
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 = timezone.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