Add the "provider" concept, let them configure db sessions

more to come...
This commit is contained in:
Lance Edgar 2022-03-06 18:49:09 -06:00
parent 57f3b942e5
commit c4e872c94c
2 changed files with 65 additions and 2 deletions

View file

@ -2,7 +2,7 @@
################################################################################
#
# Rattail -- Retail Software Framework
# Copyright © 2010-2020 Lance Edgar
# Copyright © 2010-2022 Lance Edgar
#
# This file is part of Rattail.
#
@ -45,6 +45,7 @@ import tailbone.db
from tailbone.auth import TailboneAuthorizationPolicy
from tailbone.config import csrf_token_name, csrf_header_name
from tailbone.util import get_effective_theme, get_theme_template_path
from tailbone.providers import get_all_providers
def make_rattail_config(settings):
@ -115,6 +116,8 @@ def make_pyramid_config(settings, configure_csrf=True):
"""
Make a Pyramid config object from the given settings.
"""
rattail_config = settings['rattail_config']
config = settings.pop('pyramid_config', None)
if config:
config.set_root_factory(Root)
@ -132,7 +135,6 @@ def make_pyramid_config(settings, configure_csrf=True):
# maybe require CSRF token protection
if configure_csrf:
rattail_config = settings['rattail_config']
config.set_default_csrf_options(require_csrf=True,
token=csrf_token_name(rattail_config),
header=csrf_header_name(rattail_config))
@ -152,6 +154,11 @@ def make_pyramid_config(settings, configure_csrf=True):
else:
config.include('pyramid_retry')
# configure DB sessions associated with transaction manager
providers = get_all_providers(rattail_config)
for provider in six.itervalues(providers):
provider.configure_db_sessions(rattail_config, config)
# Add some permissions magic.
config.add_directive('add_tailbone_permission_group', 'tailbone.auth.add_permission_group')
config.add_directive('add_tailbone_permission', 'tailbone.auth.add_permission')