Pyramid Configuration directive from Ptah. An example:
auth_policy = AuthTktAuthenticationPolicy('secret') session_factory = UnencryptedCookieSessionFactoryConfig('secret') def main(global_config, **settings): """ This is your application startup.""" config = Configurator(settings=settings, session_factory = session_factory, authentication_policy = auth_policy) config.include('ptah') config.ptah_init_settings() config.ptah_init_sql()
This directive creates new SQLAlchemy engine and bind session and declarative base.
param prefix: INI settings prefix, default is sqlalchemy. Example:
[app:ptah] sqlalchemy.url = sqlite:///%(here)s/var/db.sqlite
Initialize settings management system and load settings from system settings. Also it sends ptah.events.SettingsInitializing and then ptah.events.SettingsInitialized. By default it reads info from config.registry.settings. Its possible to pass custom settings as first parameter.
param settings: Custom settings config = Configurator() config.include('ptah') # initialize ptah setting management system config.ptah_initialize_settings() .. config.ptah_initialize_settings({'ptah.managers': '["*"]'})
Initialize and enable ptah management subsystem.
param name: Management ui prefix. Default is ptah-manage. param access_manager: Set custom access manager. param managers: List of user logins with access rights to ptah management ui. param manager_role: Specific role with access rights to ptah management ui. param disable_modules: List of modules names to hide in manage ui param enable_modules: List of modules names to enable in manage ui Also it possible to enable and configure management subsystem with settings in ini file:
[app:ptah] ptah.manage = "ptah-manage" ptah.managers = ["*"] ptah.manager_role = ... ptah.disable_modules = ...
Set mailer object. Mailer interface is compatible with repoze.sendmail and pyramid_mailer. By default stub mailer is beeing used.
param mailer: Mailer object
Register auth checker. Checker function interface ptah.interfaces.auth_checker
param checker: Checker function config = Configurator() config.include('ptah') def my_checker(info): ... config.ptah_auth_checker(my_checker)
Register auth provider. Authentication provider interface ptah.interfaces.AuthProvider
Register principal searcher function. Principal searcher function interface ptah.interfaces.principal_searcher()
Register resolver for given schema. Resolver function interface ptah.interfaces.resolver()
param schema: uri schema param resolver: Callable object that accept one parameter. config = Configurator() config.include('ptah') def my_resolver(uri): .... config.ptah_uri_resolver('custom-schema', my_resolver)
Register password changer function for specific user uri schema. Password changer interface ptah.intefaces.password_changer()
param schema: Principal uri schema. param changer: Function config = Configurator() config.include('ptah') config.ptah_password_changer('custom-schema', custom_changer)
Registers a layout.
param name: Layout name param context: Specific context for this layout. param root: Root object param parent: A parent layout. None means no parent layout. param renderer: A pyramid renderer param route_name: A pyramid route_name. Apply layout only for specific route param use_global_views: Apply layout to all routes. even is route doesnt use use_global_views. param view: Layout implementation (same as for pyramid view) config = Configurator() config.include('ptah') config.ptah_layout( 'page', parent='page', renderer='ptah:template/page.pt') config.add_view(' index.html', wrapper=ptah.wrap_layout(), renderer = '...')
Register snippet. Snippet is very similar to pyramid view. It doesnt availble with pyramid traversing. It doesnt have security.
param name: Snippet name param context: Snippet context param view: View implementation param renderer: Pyramid renderer config = Configurator() config.include('ptah') config.ptah_snippet('test', view=snippet, renderer='.../test.pt')
Execute active populate steps.
config = Configurator() config.include('ptah') config.ptah_populate()
Register populate step. Step interface ptah.interfaces.populate_step.
param name: Step name param factory: Step callable factory param title: Snippet context param active: View implementation param requires: List of step names that should be executed before this step. config = Configurator() config.include('ptah') def create_db_schemas(registry): ... config.ptah_populate_step('ptah-create-db-schemas', factory=create_db_schemas, title='Create db scehams', active=True, requires=())
Execute all registered database migration scripts. Check Data migration chapter for detailed description.
config = Configurator() config.include('ptah') config.ptah_migrate()