47 lines
1.5 KiB
Python
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)
|