Beispiel #1
0
    def setUp(self):
        super(ScriptTests, self).setUp()

        fd, self.conf_file_path = tempfile.mkstemp()
        os.write(fd, CONFIG.encode('ascii'))
        mdb = MongoDB(MONGO_URI)
        self.db = mdb.get_database()
 def setUp(self):
     self.config = testing.setUp()
     mdb = MongoDB(MONGO_URI)
     self.db = mdb.get_database()
     self.pm = PasswordsManager(self.db)
     self.user_id = self.db.users.insert({'name': 'John'}, safe=True)
     self.user = self.db.users.find_one({'_id': self.user_id}, safe=True)
 def setUp(self):
     self.config = testing.setUp()
     self.config.include('yithlibraryserver')
     self.config.include('yithlibraryserver.user')
     self.request = testing.DummyRequest()
     self.request.session = {}
     mdb = MongoDB(MONGO_URI)
     self.request.db = mdb.get_database()
    def setUp(self):
        self.config = testing.setUp()
        mdb = MongoDB(MONGO_URI)
        self.db = mdb.get_database()
        self.freezer = freeze_time('2013-01-02 10:11:02')
        self.freezer.start()

        self.request = testing.DummyRequest()
        self.request.db = self.db
    def setUp(self):
        self.config = testing.setUp()
        mdb = MongoDB(MONGO_URI)
        self.db = mdb.get_database()
        os.environ['YITH_FAKE_DATETIME'] = '2013-1-2-10-11-02'

        self.request = testing.DummyRequest()
        self.request.datetime_service = FakeDatetimeService(self.request)
        self.request.db = self.db
 def setUp(self):
     self.config = testing.setUp()
     mdb = MongoDB(MONGO_URI)
     self.db = mdb.get_database()
 def setUp(self):
     self.config = testing.setUp()
     self.config.include('yithlibraryserver.user')
     mdb = MongoDB(MONGO_URI)
     self.db = mdb.get_database()
Beispiel #8
0
def main(global_config, **settings):
    """ This function returns a Pyramid WSGI application.
    """
    # read pyramid_mailer options
    for key, default in (
        ('host', 'localhost'),
        ('port', '25'),
        ('username', None),
        ('password', None),
        ('default_sender', '*****@*****.**')
    ):
        option = 'mail_' + key
        settings[option] = read_setting_from_env(settings, option, default)

    # read admin_emails option
    settings['admin_emails'] = read_setting_from_env(settings, 'admin_emails', '').split()

    # read Google Analytics code
    settings['google_analytics_code'] = read_setting_from_env(
        settings, 'google_analytics_code', None)

    # read the auth secret
    settings['auth_tk_secret'] = read_setting_from_env(
        settings, 'auth_tk_secret', None)
    if settings['auth_tk_secret'] is None:
        raise ConfigurationError('The auth_tk_secret configuration '
                                 'option is required')

    # read the Mongodb URI
    settings['mongo_uri'] = read_setting_from_env(settings, 'mongo_uri', None)
    if settings['mongo_uri'] is None:
        raise ConfigurationError('The mongo_uri configuration '
                                 'option is required')

    # Available languages
    available_languages = read_setting_from_env(settings, 'available_languages', 'en es')

    settings['available_languages'] = [
        lang for lang in available_languages.split(' ') if lang
    ]

    # Public URL root
    settings['public_url_root'] = read_setting_from_env(
        settings, 'public_url_root', 'http://localhost:6543/')

    # Google, Facebook and Microsoft Live Connect settings for pyramid_sna
    settings['google_scope'] = 'https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile'
    settings['google_callback'] = 'yithlibraryserver.sna_callbacks.google_callback'
    settings['facebook_scope'] = 'email'
    settings['facebook_callback'] = 'yithlibraryserver.sna_callbacks.facebook_callback'
    settings['liveconnect_callback'] = 'yithlibraryserver.sna_callbacks.liveconnect_callback'

    # webassets
    settings['webassets.base_dir'] = 'yithlibraryserver:static'
    settings['webassets.base_url'] = 'static'
    settings['webassets.static_view'] = 'True'
    here = os.path.dirname(os.path.abspath(__file__))
    manifest_path = ('static', 'build', 'manifest.json')
    settings['webassets.manifest'] = 'json:%s' % os.path.join(here, *manifest_path)

    # main config object
    config = Configurator(
        settings=settings,
        root_factory=RootFactory,
        authorization_policy=ACLAuthorizationPolicy(),
        authentication_policy=AuthTktAuthenticationPolicy(
            settings['auth_tk_secret'],
            wild_domain=False,
            hashalg='sha512',
        ),
        locale_negotiator=locale_negotiator,
    )
    config.add_renderer('json', json_renderer)
    config.add_static_view('static', 'static', cache_max_age=3600)

    # Chameleon setup
    config.include('pyramid_chameleon')

    # Beaker (sessions) setup
    config.include('pyramid_beaker')

    # Webassets
    config.include('pyramid_webassets')

    # Setup of stuff used only in the tests
    if 'testing' in settings and asbool(settings['testing']):
        config.include('pyramid_mailer.testing')

        # add test only views to make it easy to login and add
        # things to the session during the tests
        from yithlibraryserver.testing import view_test_login
        from yithlibraryserver.testing import view_test_add_to_session

        config.add_route('test_login', '/__login/{user}')
        config.add_view(view_test_login,
                        route_name='test_login')
        config.add_route('test_add_to_session', '/__session')
        config.add_view(view_test_add_to_session,
                        route_name='test_add_to_session')

    else:  # pragma: no cover
        config.include('pyramid_mailer')

    # Google/Facebook authentication
    config.include('pyramid_sna')

    config.include('pyramid_tm')

    # Mongodb setup
    mongodb = MongoDB(settings['mongo_uri'])
    config.registry.settings['mongodb'] = mongodb
    config.registry.settings['db_conn'] = mongodb.get_connection()

    # CORS support setup
    config.registry.settings['cors_manager'] = CORSManager(
        read_setting_from_env(settings, 'cors_allowed_origins', ''))

    # Routes
    config.include('yithlibraryserver.backups')
    config.include('yithlibraryserver.contributions')
    config.include('yithlibraryserver.oauth2')
    config.include('yithlibraryserver.password')

    # Translation directories
    config.add_translation_dirs('yithlibraryserver:locale/')

    # the user package needs to be included before twitter,
    # facebook and google
    config.include('yithlibraryserver.user')

    config.include('yithlibraryserver.twitter')

    if config.registry.settings['facebook_auth_enabled']:
        config.add_identity_provider('Facebook')

    if config.registry.settings['google_auth_enabled']:
        config.add_identity_provider('Google')

    if config.registry.settings['liveconnect_auth_enabled']:
        config.add_identity_provider('Live Connect')

    config.include('yithlibraryserver.persona')

    # assets
    config.include('yithlibraryserver.assets')

    includeme(config)

    # Subscribers
    config.include('yithlibraryserver.subscribers')

    config.scan(ignore=[re.compile('.*tests.*').search,
                        re.compile('.*testing.*').search])
    return config.make_wsgi_app()
def main(global_config, **settings):
    """ This function returns a Pyramid WSGI application.
    """
    # read pyramid_mailer options
    for key in ('host', 'port', 'username', 'password', 'default_sender'):
        option = 'mail_' + key
        settings[option] = read_setting_from_env(settings, option)

    # read admin_emails option
    settings['admin_emails'] = read_setting_from_env(settings, 'admin_emails')
    if settings['admin_emails'] is not None:
        settings['admin_emails'] = settings['admin_emails'].split()

    # read Google Analytics code
    settings['google_analytics_code'] = read_setting_from_env(
        settings, 'google_analytics_code', None)

    # read the auth secret
    settings['auth_tk_secret'] = read_setting_from_env(
        settings, 'auth_tk_secret', None)
    if settings['auth_tk_secret'] is None:
        raise ConfigurationError('The auth_tk_secret configuration '
                                 'option is required')

    # read the Mongodb URI
    settings['mongo_uri'] = read_setting_from_env(settings, 'mongo_uri', None)
    if settings['mongo_uri'] is None:
        raise ConfigurationError('The mongo_uri configuration '
                                 'option is required')

    # main config object
    config = Configurator(
        settings=settings,
        root_factory=RootFactory,
        authorization_policy=ACLAuthorizationPolicy(),
        authentication_policy=AuthTktAuthenticationPolicy(
            settings['auth_tk_secret'],
            wild_domain=False,
            ),
        )
    config.add_renderer('json', json_renderer)
    config.add_static_view('static', 'static', cache_max_age=3600)

    # Beaker (sessions) setup
    config.include('pyramid_beaker')

    # Mailer setup
    if 'testing' in settings and settings['testing'] is True:
        config.include('pyramid_mailer.testing')
    else:  # pragma: no cover
        config.include('pyramid_mailer')
    config.include('pyramid_tm')

    # Mongodb setup
    mongodb = MongoDB(settings['mongo_uri'])
    config.registry.settings['mongodb'] = mongodb
    config.registry.settings['db_conn'] = mongodb.get_connection()

    # CORS support setup
    config.registry.settings['cors_manager'] = CORSManager(
        read_setting_from_env(settings, 'cors_allowed_origins', ''))

    # Routes
    config.include('yithlibraryserver.oauth2')
    config.include('yithlibraryserver.password')

    # the user package needs to be included before twitter,
    # facebook and google
    config.include('yithlibraryserver.user')

    config.include('yithlibraryserver.twitter')
    config.include('yithlibraryserver.facebook')
    config.include('yithlibraryserver.google')
    config.include('yithlibraryserver.persona')

    includeme(config)

    # Subscribers
    config.include('yithlibraryserver.subscribers')

    config.scan(ignore=[re.compile('.*tests.*').search, '.testing'])
    return config.make_wsgi_app()
Beispiel #10
0
def main(global_config, **settings):
    """ This function returns a Pyramid WSGI application.
    """
    # read pyramid_mailer options
    for key, default in (
        ('host', 'localhost'),
        ('port', '25'),
        ('username', None),
        ('password', None),
        ('default_sender', '*****@*****.**')
        ):
        option = 'mail_' + key
        settings[option] = read_setting_from_env(settings, option, default)

    # read admin_emails option
    settings['admin_emails'] = read_setting_from_env(settings, 'admin_emails')
    if settings['admin_emails'] is not None:
        settings['admin_emails'] = settings['admin_emails'].split()

    # read Google Analytics code
    settings['google_analytics_code'] = read_setting_from_env(
        settings, 'google_analytics_code', None)

    # read the auth secret
    settings['auth_tk_secret'] = read_setting_from_env(
        settings, 'auth_tk_secret', None)
    if settings['auth_tk_secret'] is None:
        raise ConfigurationError('The auth_tk_secret configuration '
                                 'option is required')

    # read the Mongodb URI
    settings['mongo_uri'] = read_setting_from_env(settings, 'mongo_uri', None)
    if settings['mongo_uri'] is None:
        raise ConfigurationError('The mongo_uri configuration '
                                 'option is required')

    # Available languages
    available_languages = read_setting_from_env(settings, 'available_languages', 'en es')

    settings['available_languages'] = [
        lang for lang in available_languages.split(' ') if lang
        ]

    # Public URL root
    settings['public_url_root'] = read_setting_from_env(
        settings, 'public_url_root', 'http://localhost:6543/')

    # main config object
    config = Configurator(
        settings=settings,
        root_factory=RootFactory,
        authorization_policy=ACLAuthorizationPolicy(),
        authentication_policy=AuthTktAuthenticationPolicy(
            settings['auth_tk_secret'],
            wild_domain=False,
            hashalg='sha512',
            ),
        locale_negotiator=locale_negotiator,
        )
    config.add_renderer('json', json_renderer)
    config.add_static_view('static', 'static', cache_max_age=3600)

    # Beaker (sessions) setup
    config.include('pyramid_beaker')

    # Mailer setup
    if 'testing' in settings and asbool(settings['testing']):
        config.include('pyramid_mailer.testing')
        config.include('yithlibraryserver.datetimeservice.testing')
    else:  # pragma: no cover
        config.include('pyramid_mailer')
        config.include('yithlibraryserver.datetimeservice')

    config.include('pyramid_tm')

    # Mongodb setup
    mongodb = MongoDB(settings['mongo_uri'])
    config.registry.settings['mongodb'] = mongodb
    config.registry.settings['db_conn'] = mongodb.get_connection()

    # CORS support setup
    config.registry.settings['cors_manager'] = CORSManager(
        read_setting_from_env(settings, 'cors_allowed_origins', ''))

    # Routes
    config.include('yithlibraryserver.backups')
    config.include('yithlibraryserver.oauth2')
    config.include('yithlibraryserver.password')

    # Translation directories
    config.add_translation_dirs('yithlibraryserver:locale/')

    # the user package needs to be included before twitter,
    # facebook and google
    config.include('yithlibraryserver.user')

    config.include('yithlibraryserver.twitter')
    config.include('yithlibraryserver.facebook')
    config.include('yithlibraryserver.google')
    config.include('yithlibraryserver.persona')

    includeme(config)

    # Subscribers
    config.include('yithlibraryserver.subscribers')

    config.scan(ignore=[re.compile('.*tests.*').search, '.testing'])
    return config.make_wsgi_app()