Классы миксинов перенесены в проект

This commit is contained in:
2026-07-11 15:12:30 +03:00
parent 5d30e8cbaf
commit 760480536c
9 changed files with 485 additions and 2 deletions

View File

@@ -11,3 +11,6 @@
from .created_at_mixin import CreatedAtMixin
from .deleted_at_mixin import DeletedAtMixin
from .expired_at_mixin import ExpiresAtMixin
from .slug_mixin import SlugMixin
from .updated_at_mixin import UpdatedAtMixin
from .uuid_id_mixin import UuidIdMixin

View File

@@ -17,7 +17,7 @@ from django.utils.translation import gettext_lazy as _
class ExpiresAtMixin(models.Model):
"""
Реализует свойство даты и времени истечения
Добавляет к модели свойство даты и времени истечения
"""
expires_at = models.DateTimeField(

View File

@@ -0,0 +1,34 @@
# DRF Rack
# Библиотека классов расширений для Django REST Framework
#
# Автор: Николай В. Анохин <n.anokhin@xeaf.net>
# Все права защищены. Лицензия: MIT
"""
Описание класса SlugMixin
"""
from django.db import models
from django.utils.translation import gettext_lazy as _
class SlugMixin(models.Model):
"""
Добавляет к модели свойство Идентификатор
"""
slug = models.SlugField(
max_length=36,
editable=True,
blank=False,
null=False,
verbose_name=_("rack.mixin.slug"),
)
""" Текстовый идентификатор """
class Meta:
"""
Конфигурация класс
"""
abstract = True

View File

@@ -0,0 +1,69 @@
# DRF Rack
# Библиотека классов расширений для Django REST Framework
#
# Автор: Николай В. Анохин <n.anokhin@xeaf.net>
# Все права защищены. Лицензия: 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

View File

@@ -0,0 +1,34 @@
# DRF Rack
# Библиотека классов расширений для Django REST Framework
#
# Автор: Николай В. Анохин <n.anokhin@xeaf.net>
# Все права защищены. Лицензия: MIT
"""
Описание класса UuidIdMixin
"""
import uuid
from django.db import models
from django.utils.translation import gettext_lazy as _
class UuidIdMixin(models.Model):
"""
Добавляет к модели свойство уникального идентификатора типа UUID
"""
id = models.UUIDField(
primary_key=True,
default=uuid.uuid4,
editable=False,
verbose_name=_("rack.mixin.id"))
""" Уникальный идентификатор """
class Meta:
"""
Параметры конфигурации класса
"""
abstract = True