Пример #1
0
def main(global_config, **settings):
    """ This function returns a Pyramid WSGI application.
    """
    config = Configurator(settings=settings)
    config.include('pyramid_chameleon')
    config.include('pyramid_mako')
    config.include("cornice")
    config.include('pyramid_mailer')
    config.registry['mailer'] = Mailer.from_settings(settings)
    config_db(config, settings)
    config_routes(config)
    config_auth_policy(config, settings)

    config.add_static_view('static', 'static', cache_max_age=3600)
    config.add_route('home', '/home')
    config.scan()

    # Added these lines
    ## Pull in Angular App as python package, must have includeme() in __init__.py
    config.include('app')
    ## These pull along with static.py mount the angular app at /
    config.add_route('catchall_static', '/*subpath')
    config.add_view('server.static.static_view', route_name='catchall_static')

    return config.make_wsgi_app()
Пример #2
0
def main(global_config, **settings):
    """ This function returns a Pyramid WSGI application.
    """
    config = Configurator(settings=settings)
    config.include('pyramid_chameleon')
    config.include('pyramid_mako')
    config.include("cornice")
    config.include('pyramid_mailer')
    config.registry['mailer'] = Mailer.from_settings(settings)
    config_db(config, settings)
    config_routes(config)
    config_auth_policy(config, settings)

    config.add_static_view('static', 'static', cache_max_age=3600)
    config.add_route('home', '/home')
    config.scan()

    # Added these lines
    ## Pull in Angular App as python package, must have includeme() in __init__.py
    config.include('app')
    ## These pull along with static.py mount the angular app at /
    config.add_route('catchall_static', '/*subpath')
    config.add_view('server.static.static_view', route_name='catchall_static')

    return config.make_wsgi_app()
Пример #3
0
    def __init__(self,**kwargs):
        """ we're going to wrap the pyramid_mailer.mailer.Mailer class , but figure out some sendmail functionality first """

        sendmail_app = None
        sendmail_template = None
        if 'sendmail_app' in kwargs:
            sendmail_app = kwargs['sendmail_app']
        if 'sendmail_template' in kwargs:
            sendmail_template = kwargs['sendmail_template']
        if sendmail_app :
            self.sendmail_mailer = SendmailMailer( sendmail_app , sendmail_template )
        else:
            self.sendmail_mailer = SendmailMailer()
        self.sendmail_delivery = SendmailDelivery(self.sendmail_mailer)

        ## ok, let the superclass take over
        pyramid_mailer_Mailer.__init__( self , **kwargs )
Пример #4
0
 def test_rebind(self):
     from pyramid_mailer import Mailer
     class Dummy(object):
         pass
     mailer = Mailer()
     registry = DummyRegistry(mailer)
     request = Dummy()
     request.registry = registry
     request.tm = object()
     result = self._get_mailer(request)
     self.assertNotEqual(result, mailer)
     self.assertTrue(result.transaction_manager is request.tm)
Пример #5
0
def send_zim_url(settings, email, zim_url):
    """Send an email with a link to one zim file.

    :param settings:
        A pyramid settings object, used by pyramid_mailer.
    :param email:
        The email of the recipient.
    :param zim_url:
        The URL of the zim file.
    """
    mailer = Mailer.from_settings(settings)
    msg = ZimReadyMessage(email, zim_url)
    mailer.send_immediately(msg)
Пример #6
0
def include_package(config):
    """Pyramid package include"""

    # add translations
    config.add_translation_dirs('pyams_mail:locales')

    config.scan()

    settings = config.registry.settings
    mailers = settings.get('pyams_mail.mailers')
    if mailers:
        for prefix in mailers.split():
            config.registry.registerUtility(
                Mailer.from_settings(settings, prefix),
                IMailer,
                name=settings['{0}name'.format(prefix)])
Пример #7
0
def includeme(config):
    settings = config.get_settings()

    settings.setdefault('tm.manager_hook', 'pyramid_tm.explicit_manager')

    config.include('pyramid_services')
    config.include('pyramid_tm')
    config.include('pyramid_retry')

    engine = get_engine(settings)
    dbmaker = get_session_factory(engine)
    config.registry['dbmaker'] = dbmaker

    def db_factory(context, request):
        return get_tm_session(dbmaker, request.tm)

    config.register_service_factory(db_factory, name='db')

    def account_factory(context, request):
        db = request.find_service(name='db')
        svc = AccountService(db)
        return svc

    config.register_service_factory(account_factory, AccountService)

    mailer = Mailer.from_settings(settings)

    def mailer_factory(context, request):
        return mailer.bind(transaction_manager=request.tm)

    config.register_service_factory(mailer_factory, name='mailer')

    def mail_service_factory(context, request):
        mailer = request.find_service(name='mailer')
        svc = MailService(settings=settings, mailer=mailer)
        return svc

    config.register_service_factory(mail_service_factory, MailService)

    def login_factory(context, request):
        db = request.find_service(name='db')
        svc = LoginService(db)
        return svc

    config.register_service_factory(login_factory, LoginService)
Пример #8
0
def get_mailer():
    return Mailer().from_settings(get_mailer_settings(), '')
Пример #9
0
def includeme(config):

    # Override deform templates
    # Initialisation must take place from within dom-ready! Else
    # deform.js and/or jquery is not loaded, because we use requirejs
    def translator(term):
        return get_localizer(get_current_request()).translate(term)

    deform_templates = resource_filename('deform', 'templates')
    search_path = (resource_filename('pym', 'deform_templates'),
        deform_templates)
    deform.Form.set_zpt_renderer(search_path, translator=translator)

    # Init resource root
    config.set_root_factory(res.models.root_factory)

    # Init session
    session_factory = session_factory_from_settings(config.registry.settings)
    config.set_session_factory(session_factory)

    from .auth import group_finder
    from .auth.models import get_current_user

    # Init Auth and Authz
    auth_pol = SessionAuthenticationPolicy(
        callback=group_finder
    )
    authz_pol = ACLAuthorizationPolicy()
    config.add_request_method(get_current_user, 'user', reify=True)
    config.set_authentication_policy(auth_pol)
    config.set_authorization_policy(authz_pol)
    config.set_default_permission('view')

    # i18n
    config.add_translation_dirs('pym:locale/')
    config.add_translation_dirs('deform:locale/')
    config.set_locale_negotiator(i18n.locale_negotiator)
    config.add_request_method(i18n.get_locale, 'locale', reify=True)
    # This sets the translation string factory and domain
    # for use in templates. See pym.subscribers.add_localizer().
    i18n.tsf = TranslationStringFactory('pym')

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

    # Mako
    config.include('pyramid_mako')
    # Chameleon needed if we use deform
    #config.include('pyramid_chameleon')

    # Init DB
    models.init(config.registry.settings, 'db.pym.sa.', invalidate_caches=True)

    # Run scan() which also imports db models
    config.scan('pym')

    # Static assets for this project
    config.add_static_view('static-pym', 'pym:static')
    config.add_static_view('static-deform', 'deform:static')

    init_auth(config.registry.settings['rc'])

    # View predicates from pyramid_duh
    config.include(duh_view)
    # Redis
    config.include('pyramid_redis')
Пример #10
0
def includeme(config):

    # Override deform templates
    # Initialisation must take place from within dom-ready! Else
    # deform.js and/or jquery is not loaded, because we use requirejs
    def translator(term):
        return get_localizer(get_current_request()).translate(term)

    deform_templates = resource_filename('deform', 'templates')
    search_path = (resource_filename('pym',
                                     'deform_templates'), deform_templates)
    deform.Form.set_zpt_renderer(search_path, translator=translator)

    # Init resource root
    config.set_root_factory(res.models.root_factory)

    # Init session
    session_factory = session_factory_from_settings(config.registry.settings)
    config.set_session_factory(session_factory)

    from .auth import group_finder
    from .auth.models import get_current_user

    # Init Auth and Authz
    auth_pol = SessionAuthenticationPolicy(callback=group_finder)
    authz_pol = ACLAuthorizationPolicy()
    config.add_request_method(get_current_user, 'user', reify=True)
    config.set_authentication_policy(auth_pol)
    config.set_authorization_policy(authz_pol)
    config.set_default_permission('view')

    # i18n
    config.add_translation_dirs('pym:locale/')
    config.add_translation_dirs('deform:locale/')
    config.set_locale_negotiator(i18n.locale_negotiator)
    config.add_request_method(i18n.get_locale, 'locale', reify=True)
    # This sets the translation string factory and domain
    # for use in templates. See pym.subscribers.add_localizer().
    i18n.tsf = TranslationStringFactory('pym')

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

    # Mako
    config.include('pyramid_mako')
    # Chameleon needed if we use deform
    #config.include('pyramid_chameleon')

    # Init DB
    models.init(config.registry.settings, 'db.pym.sa.', invalidate_caches=True)

    # Run scan() which also imports db models
    config.scan('pym')

    # Static assets for this project
    config.add_static_view('static-pym', 'pym:static')
    config.add_static_view('static-deform', 'deform:static')

    init_auth(config.registry.settings['rc'])

    # View predicates from pyramid_duh
    config.include(duh_view)
    # Redis
    config.include('pyramid_redis')