Работа с Enum полями
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
29
net/xeaf/rack/managers/workspace_manager.py
Normal file
29
net/xeaf/rack/managers/workspace_manager.py
Normal 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()
|
||||
Reference in New Issue
Block a user