Классы миксинов перенесены в проект
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -17,7 +17,7 @@ from django.utils.translation import gettext_lazy as _
|
||||
|
||||
class ExpiresAtMixin(models.Model):
|
||||
"""
|
||||
Реализует свойство даты и времени истечения
|
||||
Добавляет к модели свойство даты и времени истечения
|
||||
"""
|
||||
|
||||
expires_at = models.DateTimeField(
|
||||
|
||||
34
net/xeaf/rack/models/mixins/slug_mixin.py
Normal file
34
net/xeaf/rack/models/mixins/slug_mixin.py
Normal 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
|
||||
69
net/xeaf/rack/models/mixins/updated_at_mixin.py
Normal file
69
net/xeaf/rack/models/mixins/updated_at_mixin.py
Normal 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
|
||||
34
net/xeaf/rack/models/mixins/uuid_id_mixin.py
Normal file
34
net/xeaf/rack/models/mixins/uuid_id_mixin.py
Normal 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
|
||||
Reference in New Issue
Block a user