Contents
Environmment¶
Environment stocks contextual variable. by default the environment is stocked
in the current Thread.
Use the current environment¶
The environment can be used whereever in the code.
Generic use¶
To get or set variable in environment, you must import the
EnvironmentManager:
from anyblok.environment import EnvironmentManager
Set a variable:
EnvironmentManager.set('my variable name', OneValue)
Get a variable:
EnvironmentManager.get('my variable name', default=OneDefaultValue)
Use in a Model¶
A facility are add in the registry_base. This class is inherited by all
the model.
Get the environment in Model method or classmethod:
self.Env # or cls.Env
Set a variable:
self.Env.set('my variable name', OneValue)
Get a variable:
self.Env.get('my variable name', default=OneDefaultValue)
Define a new environment type¶
If you do not want to stock the environment in the Thread, you must
implement a new type of environment.
This type is a simple class which have theses class methods:
- scoped_function_for_session
- setter
- getter
MyEnvironmentClass:
@classmethod
def scoped_function_for_session(cls):
...
@classmethod
def setter(cls, key, value):
...
@classmethod
def getter(cls, key, default):
...
return value
Declare your class as the Environment class:
EnvironmentManager.define_environment_cls(MyEnvironmentClass)
The classmethod scoped_function_for_session is passed at SQLAlchemy
scoped_session function see