Работа с Enum полями

This commit is contained in:
2026-07-30 20:12:39 +03:00
parent abd999d245
commit 50f6638416
26 changed files with 601 additions and 38 deletions

View File

@@ -13,3 +13,4 @@ from .crypto_manager import CryptoManager
from .locale_manager import LocaleManager
from .request_manager import RequestManager
from .session_manager import SessionManager
from .workspace_manager import WorkspaceManager

View File

@@ -23,6 +23,7 @@ class AccountManager:
Проверяет возможность авторизации Аккаунта
:param account: Аккаунт
:return: Причина отказа в авторизации или None, если авторизация возможна
"""
@@ -30,7 +31,7 @@ class AccountManager:
return AuthRejectReason.INVALID_USERNAME_OR_PASSWORD
if not account.is_active:
return AuthRejectReason.ACCOUNT_IS_NOT_ACTIVE
if account.joined_at is None:
if not account.joined_at:
return AuthRejectReason.REGISTRATION_IS_NOT_COMPLETE
return None
@@ -56,7 +57,7 @@ class AccountManager:
:return: Аккаунт или None, если Аккаунт не найден
"""
return AccountModel.objects.filter(username=username).first()
return AccountModel.objects.filter(username=username).select_related("workspace").first()
@classmethod
def restore_account(cls, account: AccountModel) -> None:

View File

@@ -75,7 +75,7 @@ class SessionManager[T:SessionModel]:
"""
model = cls._get_session_model_class()
session = model.objects.filter(token__exact=token).first()
session = model.objects.filter(token__exact=token).select_related("account__workspace").first()
if session is not None and not session.is_expired():
return session

View File

@@ -0,0 +1,29 @@
# DRF Rack
# Библиотека классов расширений для Django REST Framework
#
# Автор: Николай В. Анохин <n.anokhin@xeaf.net>
# Все права защищены. Лицензия: MIT
"""
Описание класса AccountManager
"""
from net.xeaf.rack.models import WorkspaceModel
class WorkspaceManager:
"""
Реализует методы работы с Рабочими пространствами
"""
@classmethod
def find_by_slug(cls, slug: str) -> WorkspaceModel | None:
"""
Поиск Рабочего пространства по его идентификатору
:param slug: Идентификатор Рабочего пространства
:return: Рабочее пространство или None
"""
return WorkspaceModel.objects.filter(slug=slug).first()