soter/soter/__init__.py

47 lines
1.5 KiB
Python

from pyramid.config import Configurator
from sqlalchemy import engine_from_config
from soter.models import initialize_sql
def main(global_config, **settings):
""" This function returns a Pyramid WSGI application.
"""
engine = engine_from_config(settings, 'sqlalchemy.')
initialize_sql(engine)
config = Configurator(settings=settings)
config.add_static_view('app', 'soter:static/app', cache_max_age=3600)
config.add_static_view('assets', 'soter:static/assets', cache_max_age=3600)
config.add_route('home', '/')
add_route(config,'picture', '/picture')
add_route(config,'album', '/album')
add_route(config,'user', '/user')
add_route(config,'group', '/group')
config.scan()
return config.make_wsgi_app()
def pluralize(word, num=None):
if num is None or num != 1:
if word.endswith('y'):
return word[:-1] + 'ies'
elif word[-1] in 'sx' or word[-2:] in ['sh', 'ch']:
return word + 'es'
elif word.endswith('an'):
return word[:-2] + 'en'
else:
return word + 's'
return word
def add_route(config, name, url, has_list=True, variable='id'):
config.add_route(name + '_' + variable, url + '/{' + variable + '}')
config.add_route(name, url)
if has_list:
config.add_route(name + '_list', pluralize(url))
config.add_route('api_' + name + '_' + variable, '/v1' + url + '/{' + variable + '}')
config.add_route('api_' + name, '/v1' + url)