flask_more_smorest.perms.user_registry
User model registry for Flask-More-Smorest.
Provides a single registry for all user-related models, serving as the canonical integration point for the permissions system.
Quick Start:
# Use all default models (no imports needed) from flask_more_smorest.perms import init_fms init_fms()
# Or register custom user model with defaults for others from flask_more_smorest.perms import init_fms from myapp.models import User init_fms(user=User)
# Or register all models explicitly from flask_more_smorest.perms import init_fms from myapp.models import User, UserRole, Token, Domain, UserSetting init_fms(
user=User, role=UserRole, token=Token, domain=Domain, setting=UserSetting,
)
Resolution Order: 1. Explicitly registered model 2. Default model (auto-loaded by init_fms) 3. Error (model not registered)
Functions
Clear all registered user models and custom getter. |
|
Ensure init_fms has registered models before mapper configuration. |
|
|
Return the registered Domain model and enforce the expected type. |
|
Return the registered UserRole model and enforce the expected type. |
|
Return the registered UserSetting model and enforce the expected type. |
|
Return the registered Token model and enforce the expected type. |
|
Return the registered User model and enforce the expected type. |
Get the registered get_current_user function. |
|
|
|
|
|
|
|
|
|
|
|
|
Initialize Flask-More-Smorest perms integration. |
- flask_more_smorest.perms.user_registry.init_fms(user=None, role=None, token=None, domain=None, setting=None, get_current_user=None)[source]
Initialize Flask-More-Smorest perms integration.
This is the primary integration point. It registers models and helper functions in a single call. Missing models are filled with defaults.
The first call initializes models + helpers. Later calls may only update helper functions (model changes are rejected).
- Return type:
- flask_more_smorest.perms.user_registry.ensure_models_initialized()[source]
Ensure init_fms has registered models before mapper configuration.
- Return type:
- flask_more_smorest.perms.user_registry.get_user_model(expected=None)[source]
- Overloads:
expected (type[UserT]) → type[UserT]
expected (None) → type[AbstractUser]
Get the registered User model class.
- Parameters:
expected (
type[TypeVar(UserT, bound= AbstractUser)] |None) – Optional expected User subclass for typed return.- Returns:
Registered User model class
- Raises:
RuntimeError – If no User model is registered or expected doesn’t match.
- Return type:
type[UserT] | type[AbstractUser]
- flask_more_smorest.perms.user_registry.get_role_model(expected=None)[source]
- Overloads:
expected (type[RoleT]) → type[RoleT]
expected (None) → type[AbstractUserRole]
Get the registered UserRole model class.
- Parameters:
expected (
type[TypeVar(RoleT, bound= AbstractUserRole)] |None) – Optional expected UserRole subclass for typed return.- Returns:
Registered UserRole model class
- Raises:
RuntimeError – If no UserRole model is registered or expected doesn’t match.
- Return type:
type[RoleT] | type[AbstractUserRole]
- flask_more_smorest.perms.user_registry.get_token_model(expected=None)[source]
- Overloads:
expected (type[TokenT]) → type[TokenT]
expected (None) → type[AbstractToken]
Get the registered Token model class.
- Parameters:
expected (
type[TypeVar(TokenT, bound= AbstractToken)] |None) – Optional expected Token subclass for typed return.- Returns:
Registered Token model class
- Raises:
RuntimeError – If no Token model is registered or expected doesn’t match.
- Return type:
type[TokenT] | type[AbstractToken]
- flask_more_smorest.perms.user_registry.get_domain_model(expected=None)[source]
- Overloads:
expected (type[DomainT]) → type[DomainT]
expected (None) → type[AbstractDomain]
Get the registered Domain model class.
- Parameters:
expected (
type[TypeVar(DomainT, bound= AbstractDomain)] |None) – Optional expected Domain subclass for typed return.- Returns:
Registered Domain model class
- Raises:
RuntimeError – If no Domain model is registered or expected doesn’t match.
- Return type:
type[DomainT] | type[AbstractDomain]
- flask_more_smorest.perms.user_registry.get_setting_model(expected=None)[source]
- Overloads:
expected (type[SettingT]) → type[SettingT]
expected (None) → type[AbstractUserSetting]
Get the registered UserSetting model class.
- Parameters:
expected (
type[TypeVar(SettingT, bound= AbstractUserSetting)] |None) – Optional expected UserSetting subclass for typed return.- Returns:
Registered UserSetting model class
- Raises:
RuntimeError – If no UserSetting model is registered or expected doesn’t match.
- Return type:
type[SettingT] | type[AbstractUserSetting]
- flask_more_smorest.perms.user_registry.expect_user_model(expected)[source]
Return the registered User model and enforce the expected type.
- flask_more_smorest.perms.user_registry.expect_role_model(expected)[source]
Return the registered UserRole model and enforce the expected type.
- flask_more_smorest.perms.user_registry.expect_token_model(expected)[source]
Return the registered Token model and enforce the expected type.
- flask_more_smorest.perms.user_registry.expect_domain_model(expected)[source]
Return the registered Domain model and enforce the expected type.
- flask_more_smorest.perms.user_registry.expect_setting_model(expected)[source]
Return the registered UserSetting model and enforce the expected type.
- flask_more_smorest.perms.user_registry.get_current_user_func()[source]
Get the registered get_current_user function.
- Return type:
Callable[[],AbstractUser|None] |None- Returns:
Registered function or None
- flask_more_smorest.perms.user_registry.clear_registration()[source]
Clear all registered user models and custom getter.
Resets the registry to its initial state, forcing fallback to defaults (if imported). Useful for testing.
Example:
def test_with_custom_user(): init_fms(user=MyUser) # ... test ... clear_registration() # Reset for next test
- Return type: