# DRF Rack # Библиотека классов расширений для Django REST Framework # # Автор: Николай В. Анохин # Все права защищены. Лицензия: MIT """ Описание класса UpdatedAtMixin """ from datetime import datetime from django.db import models from django.utils import timezone from django.utils.translation import gettext_lazy as _ 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 = timezone.now() if save: self.save() class Meta: """ Конфигурация класса """ abstract = True