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

71 lines
2.1 KiB
Python

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