Пример #1
0
def main(global_config, **settings):
    """ This function returns a Pyramid WSGI application.
    """
    engine = engine_from_config(settings, 'sqlalchemy.')
    initialize_sql(engine)
    session_factory = session_factory_from_settings(settings)
    init_storage_from_settings(settings)
    init_notifications_from_settings(settings)
    authentication_policy = PyroneSessionAuthenticationPolicy()
    authorization_policy = ACLAuthorizationPolicy()
    config = Configurator(settings=settings, session_factory=session_factory,
        root_factory='pyrone.resources.RootFactory',
        authentication_policy=authentication_policy,
        authorization_policy=authorization_policy,
        locale_negotiator=locale_negotiator)
    config.include('pyramid_mako')
    config.add_translation_dirs('pyrone:locale/')
    config.add_request_method(get_user, 'user', reify=True)  # reify=True means that result is cached per request
    config.scan()
    config.add_static_view('static', 'pyrone:static')
    routes = [
        {'name': 'static_favicon_png', 'pattern': '/favicon.png'},
        {'name': 'static_favicon_ico', 'pattern': '/favicon.ico'},
        {'name': 'blog_latest', 'pattern': '/'},
        {'name': 'blog_latest_rss', 'pattern': '/rss/latest'},
        {'name': 'blog_tag_articles', 'pattern': '/tag/{tag}', '_slashed': True},
        {'name': 'blog_write_article', 'pattern': '/write'},
        {'name': 'blog_go_article', 'pattern': '/article/{article_id:\d+}'},
        {'name': 'blog_view_article', 'pattern': '/{shortcut_date:\d\d\d\d/\d\d/\d\d}/{shortcut}', '_slashed': True},
        {'name': 'blog_view_moderation_queue', 'pattern': '/comments/moderation'},
        {'name': 'blog_edit_article_ajax', 'pattern': '/article/{article_id:\d+}/edit/ajax'},
        {'name': 'blog_edit_article', 'pattern': '/article/{article_id:\d+}/edit'},
        {'name': 'blog_preview_article', 'pattern': '/preview/article'},
        {'name': 'blog_article_delete_ajax', 'pattern': '/article/{article_id:\d+}/delete/ajax'},
        {'name': 'blog_edit_comment_ajax', 'pattern': '/comment/{comment_id:\d+}/edit/ajax'},
        {'name': 'blog_approve_comment_ajax', 'pattern': '/comment/{comment_id:\d+}/approve/ajax'},
        {'name': 'blog_delete_comment_ajax', 'pattern': '/comment/{comment_id:\d+}/delete/ajax'},
        {'name': 'blog_edit_comment_fetch_ajax', 'pattern': '/comment/{comment_id:\d+}/fetch/ajax'},
        {'name': 'blog_add_article_comment', 'pattern': '/article/{article_id:\d+}/comment'},
        {'name': 'blog_add_article_comment_ajax', 'pattern': '/article/{article_id:\d+}/comment/ajax'},

        {'name': 'account_my_profile', 'pattern': '/me'},
        {'name': 'account_save_my_profile_ajax', 'pattern': '/me/save/ajax'},
        {'name': 'account_login', 'pattern': '/login'},
        {'name': 'account_logout', 'pattern': '/logout'},
        {'name': 'account_verify_email', 'pattern': '/verify-email'},
        {'name': 'account_twitter_init', 'pattern': '/login/twitter/init'},
        {'name': 'account_twitter_finish', 'pattern': '/login/twitter/finish'},
        {'name': 'account_my_subscriptions', 'pattern': '/me/subscriptions'},

        {'name': 'blog_download_file', 'pattern': '/files/f/{filename}'},
        {'name': 'blog_download_file_preview', 'pattern': '/files/p/{filename}'},

        {'name': 'admin_settings', 'pattern': '/admin/settings'},
        {'name': 'admin_settings_save_ajax', 'pattern': '/admin/settings/save/ajax'},
        {'name': 'admin_settings_widget_pages', 'pattern': '/admin/settings/widget/pages'},
        {'name': 'admin_settings_widget_pages_save_ajax', 'pattern': '/admin/settings/widget/pages/save/ajax'},
        {'name': 'admin_list_files', 'pattern': '/admin/files'},
        {'name': 'admin_upload_file', 'pattern': '/admin/file/upload'},
        {'name': 'admin_upload_file_check_ajax', 'pattern': '/admin/file/upload/check'},
        {'name': 'admin_edit_file_props', 'pattern': '/admin/file/{file_id:\d+}/edit'},
        {'name': 'admin_edit_file_props_check_ajax', 'pattern': '/admin/file/{file_id:\d+}/edit/check'},
        {'name': 'admin_delete_files_ajax', 'pattern': '/admin/files/delete/ajax'},
        {'name': 'admin_list_accounts', 'pattern': '/admin/accounts'},
        {'name': 'admin_list_visitors_emails', 'pattern': '/admin/visitors-emails'},
        {'name': 'admin_visitor_email_edit_ajax', 'pattern': '/admin/visitor-email/edit/ajax'},
        {'name': 'admin_visitors_emails_delete_ajax', 'pattern': '/admin/visitors-emails/delete/ajax'},
        {'name': 'admin_delete_accounts_ajax', 'pattern': '/admin/accounts/delete/ajax'},
        {'name': 'admin_list_backups', 'pattern': '/admin/backups'},
        {'name': 'admin_upload_backup', 'pattern': '/admin/backups/upload'},
        {'name': 'admin_delete_backups_ajax', 'pattern': '/admin/backups/delete/ajax'},
        {'name': 'admin_restore_backup', 'pattern': '/admin/backup/{backup_id}/restore'},
        {'name': 'admin_download_backup', 'pattern': '/admin/backup/{backup_id}/download'},
        {'name': 'admin_backup_now', 'pattern': '/admin/backup/now'}
    ]
    for r in routes:
        add_route(config, **r)

    config.add_subscriber('pyrone.subscribers.add_renderer_globals', 'pyramid.events.BeforeRender')
    config.add_subscriber('pyrone.subscribers.add_localizer', 'pyramid.events.NewRequest')

    return config.make_wsgi_app()
Пример #2
0
def main(global_config, **settings):
    """ This function returns a Pyramid WSGI application.
    """
    engine = engine_from_config(settings, "sqlalchemy.")
    initialize_sql(engine)
    session_factory = session_factory_from_settings(settings)
    init_storage_from_settings(settings)
    init_notifications_from_settings(settings)
    authentication_policy = PyroneSessionAuthenticationPolicy()
    authorization_policy = ACLAuthorizationPolicy()
    config = Configurator(
        settings=settings,
        session_factory=session_factory,
        root_factory="pyrone.resources.RootFactory",
        authentication_policy=authentication_policy,
        authorization_policy=authorization_policy,
        locale_negotiator=locale_negotiator,
    )
    config.include("pyramid_mako")
    config.add_translation_dirs("pyrone:locale/")
    config.set_request_property(get_user, "user", reify=True)  # reify=True means that result is cached per request
    config.scan()
    config.add_static_view("static", "pyrone:static")
    routes = [
        {"name": "static_favicon_png", "pattern": "/favicon.png"},
        {"name": "static_favicon_ico", "pattern": "/favicon.ico"},
        {"name": "blog_latest", "pattern": "/"},
        {"name": "blog_latest_rss", "pattern": "/rss/latest"},
        {"name": "blog_tag_articles", "pattern": "/tag/{tag}", "_slashed": True},
        {"name": "blog_write_article", "pattern": "/write"},
        {"name": "blog_go_article", "pattern": "/article/{article_id:\d+}"},
        {"name": "blog_view_article", "pattern": "/{shortcut_date:\d\d\d\d/\d\d/\d\d}/{shortcut}", "_slashed": True},
        {"name": "blog_view_moderation_queue", "pattern": "/comments/moderation"},
        {"name": "blog_edit_article_ajax", "pattern": "/article/{article_id:\d+}/edit/ajax"},
        {"name": "blog_edit_article", "pattern": "/article/{article_id:\d+}/edit"},
        {"name": "blog_preview_article", "pattern": "/preview/article"},
        {"name": "blog_article_delete_ajax", "pattern": "/article/{article_id:\d+}/delete/ajax"},
        {"name": "blog_edit_comment_ajax", "pattern": "/comment/{comment_id:\d+}/edit/ajax"},
        {"name": "blog_approve_comment_ajax", "pattern": "/comment/{comment_id:\d+}/approve/ajax"},
        {"name": "blog_delete_comment_ajax", "pattern": "/comment/{comment_id:\d+}/delete/ajax"},
        {"name": "blog_edit_comment_fetch_ajax", "pattern": "/comment/{comment_id:\d+}/fetch/ajax"},
        {"name": "blog_add_article_comment", "pattern": "/article/{article_id:\d+}/comment"},
        {"name": "blog_add_article_comment_ajax", "pattern": "/article/{article_id:\d+}/comment/ajax"},
        {"name": "account_my_profile", "pattern": "/me"},
        {"name": "account_save_my_profile_ajax", "pattern": "/me/save/ajax"},
        {"name": "account_login", "pattern": "/login"},
        {"name": "account_logout", "pattern": "/logout"},
        {"name": "account_verify_email", "pattern": "/verify-email"},
        {"name": "account_twitter_init", "pattern": "/login/twitter/init"},
        {"name": "account_twitter_finish", "pattern": "/login/twitter/finish"},
        {"name": "account_my_subscriptions", "pattern": "/me/subscriptions"},
        {"name": "blog_download_file", "pattern": "/files/f/{filename}"},
        {"name": "blog_download_file_preview", "pattern": "/files/p/{filename}"},
        {"name": "admin_settings", "pattern": "/admin/settings"},
        {"name": "admin_settings_save_ajax", "pattern": "/admin/settings/save/ajax"},
        {"name": "admin_settings_widget_pages", "pattern": "/admin/settings/widget/pages"},
        {"name": "admin_settings_widget_pages_save_ajax", "pattern": "/admin/settings/widget/pages/save/ajax"},
        {"name": "admin_list_files", "pattern": "/admin/files"},
        {"name": "admin_upload_file", "pattern": "/admin/file/upload"},
        {"name": "admin_upload_file_check_ajax", "pattern": "/admin/file/upload/check"},
        {"name": "admin_edit_file_props", "pattern": "/admin/file/{file_id:\d+}/edit"},
        {"name": "admin_edit_file_props_check_ajax", "pattern": "/admin/file/{file_id:\d+}/edit/check"},
        {"name": "admin_delete_files_ajax", "pattern": "/admin/files/delete/ajax"},
        {"name": "admin_list_accounts", "pattern": "/admin/accounts"},
        {"name": "admin_list_visitors_emails", "pattern": "/admin/visitors-emails"},
        {"name": "admin_visitor_email_edit_ajax", "pattern": "/admin/visitor-email/edit/ajax"},
        {"name": "admin_visitors_emails_delete_ajax", "pattern": "/admin/visitors-emails/delete/ajax"},
        {"name": "admin_delete_accounts_ajax", "pattern": "/admin/accounts/delete/ajax"},
        {"name": "admin_list_backups", "pattern": "/admin/backups"},
        {"name": "admin_upload_backup", "pattern": "/admin/backups/upload"},
        {"name": "admin_delete_backups_ajax", "pattern": "/admin/backups/delete/ajax"},
        {"name": "admin_restore_backup", "pattern": "/admin/backup/{backup_id}/restore"},
        {"name": "admin_download_backup", "pattern": "/admin/backup/{backup_id}/download"},
        {"name": "admin_backup_now", "pattern": "/admin/backup/now"},
    ]
    for r in routes:
        add_route(config, **r)

    config.add_subscriber("pyrone.subscribers.add_renderer_globals", "pyramid.events.BeforeRender")
    config.add_subscriber("pyrone.subscribers.add_localizer", "pyramid.events.NewRequest")

    return config.make_wsgi_app()
Пример #3
0
def _initTestingDB():
    from sqlalchemy import create_engine
    from pyrone.models import initialize_sql
    session = initialize_sql(create_engine('sqlite://'))
    return session