Пример #1
0
    def __init__(self, schema: Schema, request: Request, *args,
                 **kwargs) -> None:

        # Domain depends on request, so it must be created here
        domains = {
            'colander':
            Domain(request=request,
                   dirname=COLANDER_TRANSLATION_DIR,
                   domain='colander'),
            'deform':
            Domain(request=request,
                   dirname=DEFORM_TRANSLATION_DIR,
                   domain='deform'),
            'messages':
            Domain(request=request,
                   dirname=EKKLESIA_PORTAL_TRANSLATION_DIR,
                   domain='messages')
        }

        def translator(term):
            domain = domains.get(term.domain)
            if domain is None:
                return term
            return domain.gettext(term)

        renderer = deform.ZPTRendererFactory(DEFORM_TEMPLATE_DIRS,
                                             translator=translator)
        super().__init__(schema, *args, renderer=renderer, **kwargs)
Пример #2
0
    def __init__(self, schema: Schema, request: morepath.Request, *args,
                 **kwargs) -> None:
        # Domain depends on request, so it must be created here
        domains = {
            'colander':
            Domain(request=request,
                   dirname=COLANDER_TRANSLATION_DIR,
                   domain='colander'),
            'deform':
            Domain(request=request,
                   dirname=DEFORM_TRANSLATION_DIR,
                   domain='deform'),
            'messages':
            Domain(request=request,
                   dirname=request.app.translation_dir,
                   domain='messages')
        }

        def translator(term):
            domain = domains.get(term.domain)
            if domain is None:
                return term.interpolate()
            else:
                translated = domain.gettext(term)
                return term.interpolate(translated)

            return domain.gettext(term)

        renderer = deform.ZPTRendererFactory(
            self.__class__.deform_template_dirs, translator=translator)
        super().__init__(schema, *args, renderer=renderer, **kwargs)
Пример #3
0
def includeme(config):
    """
    Initialize the model for a Pyramid library.

    Activate this setup using ``config.include('garasu_i18n')``.

    """
    settings = config.get_settings()

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

    config.set_locale_negotiator(custom_locale_negotiator)

    # combine deform
    if asbool(settings.get('garasu_i18n.deform', False)):
        deform_template_dir = resource_filename('deform', 'templates/')

        zpt_renderer = deform.ZPTRendererFactory(
            [deform_template_dir], translator=translate)

        deform.Form.set_default_renderer(zpt_renderer)

        config.add_translation_dirs('deform:locale/')
        config.add_translation_dirs('colander:locale/')

    config.add_route('locale', '/locale/{language}')

    translation_dirs = settings.get('garasu_i18n.translation_dirs')
    config.add_translation_dirs(translation_dirs)

    config.scan(__name__)
Пример #4
0
def main(global_config, **settings):
    """ This function returns a Pyramid WSGI application.
    """
    config = Configurator(settings=settings)
    config.include('pyramid_jinja2')
    config.add_static_view('static', 'static', cache_max_age=3600)
    config.add_route('home', '/')
    config.add_route('multiweek',
                     '/multiweek/{amountWeeks}',
                     pregenerator=pregen)
    config.add_route('multiweekPost', '/multiweekPost')
    config.add_route('multiweekForm', '/multiweekForm')
    config.add_route('multiweekDelete', '/multiweekDelete')
    config.add_static_view('static2', 'deform:static')
    config.scan('.views')
    config.add_translation_dirs(
        'colander:locale',
        'deform:locale',
    )

    def translator(term):
        return get_localizer(get_current_request()).translate(term)

    deform_template_dir = resource_filename('deform', 'templates/')
    zpt_renderer = deform.ZPTRendererFactory(
        [deform_template_dir],
        translator=translator,
    )
    deform.Form.set_default_renderer(zpt_renderer)
    return config.make_wsgi_app()
Пример #5
0
def configure_zpt_renderer(search_path=()):
    default_paths = deform.form.Form.default_renderer.loader.search_path
    paths = []
    for path in search_path:
        pkg, resource_name = path.split(':')
        paths.append(resource_filename(pkg, resource_name))
    deform.form.Form.default_renderer = deform.ZPTRendererFactory(
        tuple(paths) + default_paths, translator=translator)
Пример #6
0
def configure_zpt_renderer(search_path=()):
    """Initialize ZPT widget rendering for Deform forms.

    See https://github.com/Pylons/pyramid_deform/blob/master/pyramid_deform/__init__.py#L437
    """

    default_paths = deform.form.Form.default_renderer.loader.search_path
    paths = []
    for path in search_path:
        pkg, resource_name = path.split(':')
        paths.append(resource_filename(pkg, resource_name))
    deform.form.Form.default_renderer = deform.ZPTRendererFactory(
        tuple(paths) + default_paths)
Пример #7
0
def includeme(config):

    config.add_translation_dirs(
        'colander:locale',
        'deform:locale',
    )

    def translator(term):
        return get_localizer(get_current_request()).translate(term)

    deform_template_dir = resource_filename('deform', 'templates/')
    zpt_renderer = deform.ZPTRendererFactory([deform_template_dir],
                                             translator=translator)
    deform.Form.set_default_renderer(zpt_renderer)

    config.add_static_view('sacrud_deform_static', 'sacrud_deform:static')
Пример #8
0
def login_view(request):
    deform_static.need()

    search_path = ('myShop/templates/deform/', )
    renderer = deform.ZPTRendererFactory(search_path)
    schema = LoginFormSchema(validator=password_validator)
    form = deform.Form(schema, buttons=('submit', ), renderer=renderer)

    if 'submit' in request.POST:
        try:
            appstruct = form.validate(request.POST.items())
        except deform.ValidationFailure, e:
            return {'title': 'login', 'form': e.render()}

        user = appstruct['login']

        headers = remember(request, user.id)
        return HTTPFound(location='/', headers=headers)
Пример #9
0
def configure_zpt_renderer(search_path=(), translator=None):
    """Initialize ZPT widget rendering for Deform forms.

    Include given package asset paths in the paths Deform uses to
    look up widgets.

    Example:

    .. code-block:: python

        from pyramid.threadlocal import get_current_request

        #
        # Set up Chameleon templates (ZTP) rendering paths
        #

        def translator(term):
            # i18n localizing function
            return get_localizer(get_current_request()).translate(term)

        # Configure renderer
        configure_zpt_renderer(("deformdemo:custom_widgets",), translator)


    :param search_path: List of additional search paths for widget templates.

    :param translator: Translator function to localizing i18n strings
    """

    # Don't let the user to slip in a string
    assert type(search_path) in (tuple, list)

    # Add more paths to besides the default one
    default_paths = deform.form.Form.default_renderer.loader.search_path
    paths = []
    for path in search_path:
        pkg, resource_name = path.split(':')
        paths.append(resource_filename(pkg, resource_name))

    deform.form.Form.default_renderer = deform.ZPTRendererFactory(
        tuple(paths) + default_paths, translator=translator)
Пример #10
0
def configure_zpt_renderer(search_path=()):
    """Initialize ZPT widget rendering for Deform forms.

    Include given package asset paths in the paths Deform uses to
    look up widgets.

    Example:

    .. code-block:: python

        configure_zpt_renderer()

    :param search_path: List of additional search paths for widget templates.
    """

    default_paths = deform.form.Form.default_renderer.loader.search_path
    paths = []
    for path in search_path:
        pkg, resource_name = path.split(':')
        paths.append(resource_filename(pkg, resource_name))

    deform.form.Form.default_renderer = deform.ZPTRendererFactory(tuple(paths) + default_paths)
Пример #11
0
my_search_path = (deform_templates, c3smembership_templates)

_ = TranslationStringFactory('c3sadoportal')


def translator(term):
    return get_localizer(get_current_request()).translate(term)


my_template_dir = resource_filename('c3sadoportal', 'templates/')
deform_template_dir = resource_filename('deform', 'templates/')

zpt_renderer = deform.ZPTRendererFactory(
    [
        my_template_dir,
        deform_template_dir,
    ],
    translator=translator,
)
# the zpt_renderer above is referred to within the demo.ini file by dotted name

DEBUG = False
LOGGING = True

if LOGGING:  # pragma: no cover
    import logging
    log = logging.getLogger(__name__)


@view_config(renderer='../templates/login.pt', route_name='login')
def login_view(request):
Пример #12
0
factory for deform forms.
"""

from translationstring import TranslationStringFactory
from pyramid.i18n import (
    get_localizer, )
from pyramid.threadlocal import get_current_request
from pkg_resources import resource_filename
import deform

_ = TranslationStringFactory('c3smembership')


def translator(term):
    """
    Template translator.
    """
    return get_localizer(get_current_request()).translate(term)


MY_TEMPLATE_DIR = resource_filename('c3smembership', 'templates')
DEFORM_TEMPLATE_DIR = resource_filename('deform', 'templates')

ZPT_RENDERER = deform.ZPTRendererFactory(
    [
        MY_TEMPLATE_DIR,
        DEFORM_TEMPLATE_DIR,
    ],
    translator=translator,
)
Пример #13
0
def main(global_config, **settings):
    """ This function returns a Pyramid WSGI application.
    """
    passwords_config_path = helpers.get_passwords_config_path(
        global_config['__file__'])
    if os.path.isfile(passwords_config_path):
        passwords_settings = helpers.load_config(passwords_config_path)
        settings = helpers.dicts_merge(passwords_settings.get('app:main', {}),
                                       settings)

    sql_engine = engine_from_config(settings, 'sqlalchemy.')
    authentication_secret = settings.get('authentication_secret')

    if authentication_secret is None:
        raise Exception(
            'authentication_secret must be set at [conf_type]_passwords.ini!')

    # see http://docs.pylonsproject.org/projects/pyramid//en/latest/tutorials/wiki2/authorization.html
    authn_policy = AuthTktAuthenticationPolicy(secret=authentication_secret,
                                               hashalg='sha512',
                                               callback=User.get_groups)
    authz_policy = ACLAuthorizationPolicy()
    # DBSession.configure(bind=engine)p
    Base.metadata.bind = sql_engine
    session_factory = session_factory_from_settings(settings)
    config = Configurator(settings=settings,
                          root_factory='pyragrid.db.RootFactory')
    config.set_authentication_policy(authn_policy)
    config.set_authorization_policy(authz_policy)
    config.include('pyramid_chameleon')
    config.add_translation_dirs('colander:locale', 'deform:locale',
                                'pyragrid:locale')

    def translator(term):
        # return get_localizer(get_current_request()).translate(term)
        return get_current_request().localizer.translate(term)

    deform_template_dir = resource_filename('deform', 'templates/')
    zpt_renderer = deform.ZPTRendererFactory([deform_template_dir],
                                             translator=translator)
    deform.Form.set_default_renderer(zpt_renderer)

    payment_systems.load_by_config(config)

    static_cache_max_age = 3600
    # TODO hacky. maybe better copy resources with gulp task?
    config.add_static_view(
        'static/fonts/bootstrap',
        '../bower_components/bootstrap-sass-official/assets/fonts/bootstrap',
        cache_max_age=static_cache_max_age)
    config.add_static_view('static/bower_components',
                           '../bower_components',
                           cache_max_age=static_cache_max_age)
    # config.add_static_view('static/dist', '../static/dist', cache_max_age=static_cache_max_age)
    config.add_static_view('static',
                           'static',
                           cache_max_age=static_cache_max_age)
    config.add_static_view('resources',
                           'resources',
                           cache_max_age=static_cache_max_age)
    config.add_static_view('static_deform', 'deform:static')

    config.add_route('index', '/')
    config.add_route('profile_edit', '/profile/edit')
    config.add_route('vk_iframe_auth', '/vkIframeAuth')
    config.add_route('test', '/t')

    # TODO delete:
    config.add_route('add_user', '/users/add')
    config.add_route('delete_user', '/users/delete/{any_data}')

    config.add_route('login', '/login')
    config.add_route('logout', '/logout')

    config.add_route('register', '/register')
    config.add_route('register_success', '/register_success')

    config.add_route('email_check_code', '/checkEmail/{code}')

    config.add_route('article', '/article/{article_system_name}')
    config.add_route('article_revision', '/article/{article_system_name}')

    config.add_route('admin_index', '/admin')
    config.add_route('admin_test', '/test')

    config.add_route('admin_users', '/admin/users')
    config.add_route('admin_users_grid', '/admin/users/grid')
    config.add_route('admin_user_enable', '/admin/users/enable/{user_id}')
    config.add_route('admin_user_disable', '/admin/users/disable/{user_id}')
    config.add_route('admin_user_edit', '/admin/users/edit/{user_id}')

    config.add_route('admin_article_edit', '/admin/article/{article_id}/edit')
    config.add_route('admin_article_enable',
                     '/admin/article/{article_id}/enable')
    config.add_route('admin_article_disable',
                     '/admin/article/{article_id}/disable')
    config.add_route('admin_article_revisions',
                     '/admin/article/{article_id}/revisions')
    config.add_route(
        'admin_article_revision',
        '/admin/article/{article_id}/revision/{article_revision_id}')
    config.add_route(
        'admin_article_revision_activate',
        '/admin/article/{article_id}/revision/{article_revision_id}/activate')
    config.add_route('admin_article_new', '/admin/new/article')
    config.add_route('admin_articles', '/admin/articles')
    config.add_route('admin_articles_grid', '/admin/articles/grid')
    config.add_route('admin_article_revisions_grid',
                     '/admin/article/{article_id}/revisions/grid')

    config.add_route('admin_goods', '/admin/goods')
    config.add_route('admin_goods_grid', '/admin/goods/grid')
    config.add_route('admin_good_new', '/admin/new/good')
    config.add_route('admin_good_edit', '/admin/good/{id}/edit')
    config.add_route('admin_good_enable', '/admin/good/{id}/enable')
    config.add_route('admin_good_disable', '/admin/good/{id}/disable')

    config.add_route('test_mail', '/test/mail')
    config.add_route('test_render', '/test/render')
    config.add_route('test_notify', '/test/notify')
    config.add_route('test_view_notify', '/test/view_notify')
    config.add_route('test_url', '/test/url')
    config.add_route('test_ajax', '/test/ajax')
    config.add_route('test_redirect', '/test/redirect')
    config.add_route('test_bootgrid_edit', '/test/bootgrid')
    config.add_route('test_script_inclusion', '/test/script_inclusion')
    config.add_route('test_db_enum', '/test/db_enum')
    config.add_route('test_filetree', '/test/filetree')
    config.add_route('test_ajax_filetree', '/test/ajax_filetree')
    config.add_route('test_filedialog', '/test/filedialog')
    config.add_route('test_droparea', '/test/droparea')
    config.add_route('test_jquery_file_upload', '/test/jquery_file_upload')
    config.add_route('test_blocks', '/test/blocks')
    config.add_route('test_nunjucks', '/test/nunjucks')
    config.add_route('test_jac', '/test/jac')
    config.add_route('test_mobx', '/test/mobx')
    config.add_route('test_mobx_fetch', '/test/mobx_fetch')

    # urlList: '/uploads/list'
    # urlInfo: '/uploads/info'
    # urlOperations: '/uploads/manage'

    config.add_route('uploads_list', '/uploads/list')
    config.add_route('uploads_info', '/uploads/info')
    config.add_route('uploads_manage', '/uploads/manage')
    config.add_route('uploads_handle_droparea', '/uploads/handleDropArea')
    config.add_route('uploads_handle_jquery_file_upload',
                     '/uploads/handleJqueryFileUpload')

    config.add_route('order_status', '/order/{id}/status')

    config.add_route('good_one_click_buy', '/goods/{id}/one_click_buy')

    config.add_notfound_view(views_articles.view_custom_not_found,
                             append_slash=True)

    config.set_session_factory(session_factory)

    config.add_subscriber(add_renderer_globals, pyramid.events.BeforeRender)

    # config.registry['mailer'] = Mailer.from_settings(settings)

    # fix vk init:
    if pyramid.threadlocal.get_current_registry().settings is None:
        pyramid.threadlocal.get_current_registry().settings = settings

    config.scan(ignore=['pyragrid.payment_systems'])
    # TODO убрать настройку jinja2 env в конфиг

    app = config.make_wsgi_app()
    jinja2_env = pyramid_jinja2.get_jinja2_environment(config)
    jac_output_dir_path = os.path.join(os.path.dirname(__file__), 'static',
                                       'dist')
    #jinja2_env.compressor_output_dir = './pyragrid/static/dist'
    jinja2_env.compressor_output_dir = jac_output_dir_path
    jinja2_env.compressor_debug = True

    # BabelCompressor.binary = './node_modules/.bin/babel'
    BabelCompressor.binary = os.path.abspath(
        os.path.join(os.path.dirname(__file__), '..', 'node_modules', '.bin',
                     'babel'))
    BabelCompressor.cwd_for_presets_search = os.path.abspath(
        os.path.join(os.path.dirname(__file__), '..'))
    BabelCompressor.presets = [
        'es2015', 'stage-0', 'react', 'es2016', 'es2017'
    ]
    # wtf? adds lines like `require("babel-runtime/core-js/object/get-prototype-of")` to the code
    # TODO https://babeljs.io/docs/plugins/transform-runtime/
    # BabelCompressor.plugins = ['transform-runtime']

    jac_default_config = JacDefaultConfig()
    jinja2_env.compressor_classes = jac_default_config.get(
        'compressor_classes')
    jinja2_env.compressor_classes['text/babel'] = BabelCompressor

    return app
Пример #14
0
def main(global_config, **settings):
    """ 
	Esta função retorna uma aplicação WSGI Pyramid
    """
    session_factory = session_factory_from_settings(settings)

    config = Configurator(
        root_factory=RootFactory,
        settings=settings,
        session_factory=session_factory,
    )
    config.include('pyramid_mako')
    config.add_plim_renderer('.slim', mako_settings_prefix='mako.')

    #configuração de autenticação para sessões
    authn_policy = AuthTktAuthenticationPolicy(
        secret='2398ry289$#T$#Tnykki4jh3t4t34239ryh9',
        callback=groupfinder,
        include_ip=True,
        hashalg='sha512',
        timeout=21600,
    )
    authz_policy = ACLAuthorizationPolicy()
    config.set_authentication_policy(authn_policy)
    config.set_authorization_policy(authz_policy)

    config.add_translation_dirs(
        'colander:locale',
        'deform:locale',
    )

    def translator(term):
        return get_localizer(get_current_request()).translate(term)

    deform_dir = resource_filename('deform', 'templates/')
    deform_dir2 = resource_filename('deform_bootstrap', 'templates/')
    deform_dir3 = resource_filename('projeto', 'templates/')
    zpt_renderer = deform.ZPTRendererFactory(
        [deform_dir3, deform_dir2, deform_dir], translator=translator)
    deform.Form.set_default_renderer(zpt_renderer)

    config.add_static_view('static', 'projeto:static', cache_max_age=3600)
    config.add_static_view('deform_static', 'deform:static')
    config.add_static_view('deform_bootstrap', 'deform_bootstrap:static')

    #camminho das páginas
    config.add_route('inicial', '/')
    config.add_route('listaUsr', '/listarUsr')
    config.add_route('listaAtv', '/listarAtv')
    config.add_route('cadastro', '/cadastrar')
    config.add_route('configuracao', '/configurar')
    config.add_route('contato', '/contato')
    config.add_route('login', '/login')
    config.add_route('logout', '/logout')
    config.add_route('sobre', '/sobre')
    config.add_route('perfilUsr', '/usuario/{id}')
    config.add_route('usuario', '/usuario')
    config.add_route('mapa', '/mapa')
    config.add_route('orcamento', '/orcamento')
    config.add_route('orcamentoId', '/orcamento/{id}')
    config.add_route('inserir_ponto', '/inserir_ponto')
    config.add_route('privacidade', '/privacidade')
    config.add_route('termos', '/termos')
    config.add_route('r_senha', '/r_senha')
    config.add_route('rcad_senha', '/rcad_senha')
    config.add_route('loginTwitter', '/loginTwitter')
    config.add_route('authTwitter', '/authTwitter')
    config.add_route('authTwitterAcc', '/authTwitterAcc')
    config.add_route('loginTwitterAuth', '/loginTwitterAuth')
    config.add_route('loginFacebook', '/loginFacebook')
    config.add_route('authFacebook', '/authFacebook')
    config.add_route('loginAuthFace', '/loginAuthFace')
    config.add_route('denuncia', '/orcamento/{id}/{tmidia}/{idM}')
    config.scan()
    return config.make_wsgi_app()
import os

import colander
import deform
from jinja2 import Environment, FileSystemLoader
from pkg_resources import resource_filename

env = Environment(loader=FileSystemLoader('templates'))

deform_path = os.path.abspath('templates/deform')
deform_templates = resource_filename('deform', 'templates')
print(deform_templates)
print(deform_path)
search_path = (deform_path, deform_templates)
renderer = deform.ZPTRendererFactory(search_path)


class Contact(colander.MappingSchema):
    email = colander.SchemaNode(colander.String(), validator=colander.Email())
    name = colander.SchemaNode(colander.String())
    message = colander.SchemaNode(colander.String(),
                                  widget=deform.widget.TextAreaWidget())


def custom_template_form(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/html')])
    from webob import Request
    request = Request(environ)

    form = deform.Form(Contact(), buttons=('submit', ), renderer=renderer)
    template = env.get_template('simple_with_css.html')