# Path: studio/lib/auth.py
# def AuthMiddleware(app):
#     """
#     Add authentication and authorization middleware to the ``app``.
#     """
#     # url_for mustn't be used here because AuthMiddleware is built once at startup,
#     # url path can be reconstructed only on http requests (based on environ)
#     basic_redirect_form = BasicRedirectFormPlugin(login_form_url="/signin",
#                                                   login_handler_path="/login",
#                                                   post_login_url="/",
#                                                   logout_handler_path="/logout",
#                                                   post_logout_url="/signin",
#                                                   rememberer_name="cookie")
# 
#     return setup_sql_auth(
#             app,
#             user_class = model.User,
#             group_class = model.Group,
#             permission_class = model.Permission,
#             dbsession = model.meta.Session,
#             form_plugin = basic_redirect_form,
#             cookie_secret = config['cookie_secret'],
#             translations = {
#                 'user_name': 'login',
#                 'users': 'users',
#                 'group_name': 'name',
#                 'groups': 'groups',
#                 'permission_name': 'name',
#                 'permissions': 'permissions',
#                 'validate_password': 'validate_password'},
#             )
# 
# Path: studio/model/meta.py

# 
# Path: studio/config/environment.py
# def load_environment(global_conf, app_conf):
#     """Configure the Pylons environment via the ``pylons.config``
#     object
#     """
#     # Pylons paths
#     root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
#     paths = dict(root=root,
#                  controllers=os.path.join(root, 'controllers'),
#                  static_files=os.path.join(root, 'public'),
#                  templates=[os.path.join(root, 'templates')])
# 
#     # Initialize config with the basic options
#     config.init_app(global_conf, app_conf, package='studio', paths=paths)
# 
#     # Defines custom config parameters
#     config['resources_dir'] = os.path.join(root, 'resources')
#     # path to mapserver dir containing default fonts and symbols
#     config['mapserver_dir'] = os.path.join(config['resources_dir'], 'mapserver')
#     # path to default directory datastore
#     config['default_datastore_dir'] = os.path.join(config['resources_dir'], 'default_datastore')
#     # path to the template including the <script> tags
#     config['js_tmpl'] = os.path.join(paths['templates'][0], 'index.html')
# 
#     # Convert the debug variable from the config to a boolean value
#     config['debug'] = asbool(config['debug'])
# 
#     config['routes.map'] = make_map()
#     config['pylons.app_globals'] = app_globals.Globals()
#     config['pylons.h'] = studio.lib.helpers
# 
#     # Create the Mako TemplateLookup, with the default auto-escaping
#     config['pylons.app_globals'].mako_lookup = TemplateLookup(
#         directories=paths['templates'],
#         error_handler=handle_mako_error,
#         module_directory=os.path.join(app_conf['cache_dir'], 'templates'),
#         input_encoding='utf-8', output_encoding='utf-8',
#         imports=['from webhelpers.html import escape'],
#         default_filters=['escape'])
#     
#     # Setup SQLAlchemy database engine
#     engine = engine_from_config(config, 'sqlalchemy.')
#     init_model(engine)
#     
#     # CONFIGURATION OPTIONS HERE (note: all config options will override
#     # any Pylons config options)


from beaker.middleware import CacheMiddleware, SessionMiddleware
from paste.cascade import Cascade
from paste.registry import RegistryManager
from paste.urlparser import StaticURLParser
from paste.deploy.converters import asbool
from pylons import config
from pylons.middleware import ErrorHandler, StatusCodeRedirect
from pylons.wsgiapp import PylonsApp
from routes.middleware import RoutesMiddleware
from studio.lib.auth import AuthMiddleware
from studio.model import meta
from studio.config.environment import load_environment
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Studio.  If not, see <http://www.gnu.org/licenses/>.
#

"""Pylons middleware initialization"""


def make_app(global_conf, full_stack=True, **app_conf):
    """Create a Pylons WSGI application and return it

    ``global_conf``
        The inherited configuration for this application. Normally from
        the [DEFAULT] section of the Paste ini file.

    ``full_stack``
        Whether or not this application provides a full WSGI stack (by
        default, meaning it handles its own exceptions and errors).
        Disable full_stack when this application is "managed" by
        another WSGI middleware.

    ``app_conf``
        The application's local configuration. Normally specified in
        the [app:<name>] section of the Paste ini file (where <name>
        defaults to main).

    """
    # Configure the Pylons environment

# Path: studio/lib/auth.py
# def AuthMiddleware(app):
#     """
#     Add authentication and authorization middleware to the ``app``.
#     """
#     # url_for mustn't be used here because AuthMiddleware is built once at startup,
#     # url path can be reconstructed only on http requests (based on environ)
#     basic_redirect_form = BasicRedirectFormPlugin(login_form_url="/signin",
#                                                   login_handler_path="/login",
#                                                   post_login_url="/",
#                                                   logout_handler_path="/logout",
#                                                   post_logout_url="/signin",
#                                                   rememberer_name="cookie")
# 
#     return setup_sql_auth(
#             app,
#             user_class = model.User,
#             group_class = model.Group,
#             permission_class = model.Permission,
#             dbsession = model.meta.Session,
#             form_plugin = basic_redirect_form,
#             cookie_secret = config['cookie_secret'],
#             translations = {
#                 'user_name': 'login',
#                 'users': 'users',
#                 'group_name': 'name',
#                 'groups': 'groups',
#                 'permission_name': 'name',
#                 'permissions': 'permissions',
#                 'validate_password': 'validate_password'},
#             )
# 
# Path: studio/model/meta.py

# 
# Path: studio/config/environment.py
# def load_environment(global_conf, app_conf):
#     """Configure the Pylons environment via the ``pylons.config``
#     object
#     """
#     # Pylons paths
#     root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
#     paths = dict(root=root,
#                  controllers=os.path.join(root, 'controllers'),
#                  static_files=os.path.join(root, 'public'),
#                  templates=[os.path.join(root, 'templates')])
# 
#     # Initialize config with the basic options
#     config.init_app(global_conf, app_conf, package='studio', paths=paths)
# 
#     # Defines custom config parameters
#     config['resources_dir'] = os.path.join(root, 'resources')
#     # path to mapserver dir containing default fonts and symbols
#     config['mapserver_dir'] = os.path.join(config['resources_dir'], 'mapserver')
#     # path to default directory datastore
#     config['default_datastore_dir'] = os.path.join(config['resources_dir'], 'default_datastore')
#     # path to the template including the <script> tags
#     config['js_tmpl'] = os.path.join(paths['templates'][0], 'index.html')
# 
#     # Convert the debug variable from the config to a boolean value
#     config['debug'] = asbool(config['debug'])
# 
#     config['routes.map'] = make_map()
#     config['pylons.app_globals'] = app_globals.Globals()
#     config['pylons.h'] = studio.lib.helpers
# 
#     # Create the Mako TemplateLookup, with the default auto-escaping
#     config['pylons.app_globals'].mako_lookup = TemplateLookup(
#         directories=paths['templates'],
#         error_handler=handle_mako_error,
#         module_directory=os.path.join(app_conf['cache_dir'], 'templates'),
#         input_encoding='utf-8', output_encoding='utf-8',
#         imports=['from webhelpers.html import escape'],
#         default_filters=['escape'])
#     
#     # Setup SQLAlchemy database engine
#     engine = engine_from_config(config, 'sqlalchemy.')
#     init_model(engine)
#     
#     # CONFIGURATION OPTIONS HERE (note: all config options will override
#     # any Pylons config options)


# Path: studio/config/middleware.py
from beaker.middleware import CacheMiddleware, SessionMiddleware
from paste.cascade import Cascade
from paste.registry import RegistryManager
from paste.urlparser import StaticURLParser
from paste.deploy.converters import asbool
from pylons import config
from pylons.middleware import ErrorHandler, StatusCodeRedirect
from pylons.wsgiapp import PylonsApp
from routes.middleware import RoutesMiddleware
from studio.lib.auth import AuthMiddleware
from studio.model import meta
from studio.config.environment import load_environment

# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Studio.  If not, see <http://www.gnu.org/licenses/>.
#

"""Pylons middleware initialization"""


def make_app(global_conf, full_stack=True, **app_conf):
    """Create a Pylons WSGI application and return it

    ``global_conf``
        The inherited configuration for this application. Normally from
        the [DEFAULT] section of the Paste ini file.

    ``full_stack``
        Whether or not this application provides a full WSGI stack (by
        default, meaning it handles its own exceptions and errors).
        Disable full_stack when this application is "managed" by
        another WSGI middleware.

    ``app_conf``
        The application's local configuration. Normally specified in
        the [app:<name>] section of the Paste ini file (where <name>
        defaults to main).

    """
    # Configure the Pylons environment

    load_environment(global_conf, app_conf)