Beispiel #1
0
    def setUp(self):  # noqa
        self.app = TestApp(self.app)
        registry = self.app.app.registry
        self.mailer = get_mailer(registry)
        self.email_service = EmailService(self.mailer, settings)
        EmailService.instance = None

        self.config = testing.setUp()

        self.connection = self.engine.connect()

        # begin a non-ORM transaction
        self.trans = self.connection.begin()

        # DBSession is the scoped session manager used in the views,
        # reconfigure it to use this test's connection
        DBSession.configure(bind=self.connection)

        # create a session bound to the connection, this session is the one
        # used in the test code
        self.session = self.Session(bind=self.connection)

        self.queue_config = registry.queue_config
        reset_queue(self.queue_config)
        reset_cache_key()
Beispiel #2
0
def main(global_config, **settings):
    """ This function returns a Pyramid WSGI application.
    """

    # Configure SQLAlchemy
    engine = engine_from_config(settings, 'sqlalchemy.')
    DBSession.configure(bind=engine)
    Base.metadata.bind = engine

    # Configure ElasticSearch
    configure_es_from_config(settings)

    config = Configurator(settings=settings)
    config.include('cornice')
    config.registry.queue_config = get_queue_config(settings)

    bypass_auth = False
    if 'noauthorization' in settings:
        bypass_auth = asbool(settings['noauthorization'])

    if not bypass_auth:
        config.include("pyramid_jwtauth")
        # Intercept request handling to validate token against the database
        config.add_tween('c2corg_api.jwt_database_validation_tween_factory')
        # Inject ACLs
        config.set_root_factory(RootFactory)
    else:
        log.warning('Bypassing authorization')

    # Scan MUST be the last call otherwise ACLs will not be set
    # and the permissions would be bypassed
    config.scan(ignore='c2corg_api.tests')
    return config.make_wsgi_app()
Beispiel #3
0
def main(global_config, **settings):
    """ This function returns a Pyramid WSGI application.
    """

    # Configure SQLAlchemy
    engine = engine_from_config(settings, 'sqlalchemy.')
    DBSession.configure(bind=engine)
    Base.metadata.bind = engine

    # Configure ElasticSearch
    configure_es_from_config(settings)

    config = Configurator(settings=settings)
    config.include('cornice')
    config.registry.queue_config = get_queue_config(settings)

    bypass_auth = False
    if 'noauthorization' in settings:
        bypass_auth = asbool(settings['noauthorization'])

    if not bypass_auth:
        config.include("pyramid_jwtauth")
        # Intercept request handling to validate token against the database
        config.add_tween('c2corg_api.jwt_database_validation_tween_factory')
        # Inject ACLs
        config.set_root_factory(RootFactory)
    else:
        log.warning('Bypassing authorization')

    # Scan MUST be the last call otherwise ACLs will not be set
    # and the permissions would be bypassed
    config.scan(ignore='c2corg_api.tests')
    return config.make_wsgi_app()
Beispiel #4
0
    def setUp(self):  # noqa
        self.app = TestApp(self.app)
        registry = self.app.app.registry
        self.email_service = EmailService(settings)
        EmailService.instance = None

        self.config = testing.setUp()

        self.connection = self.engine.connect()

        # begin a non-ORM transaction
        self.trans = self.connection.begin()

        # DBSession is the scoped session manager used in the views,
        # reconfigure it to use this test's connection
        DBSession.configure(bind=self.connection)

        # create a session bound to the connection, this session is the one
        # used in the test code
        self.session = self.Session(bind=self.connection)

        self.queue_config = registry.queue_config
        reset_queue(self.queue_config)
        reset_cache_key()
        registry.feed_admin_user_account_id = None
Beispiel #5
0
def main(argv=sys.argv):
    parser = argparse.ArgumentParser()
    parser.add_argument("src_id", help="Source user identifier", type=int)
    parser.add_argument("tgt_id", help="Target user identifier", type=int)
    parser.add_argument(
        "-f",
        "--force",
        action="store_true",
        help="Merge user without confirmation"
    )
    args = parser.parse_args()

    source_user_id = args.src_id
    target_user_id = args.tgt_id

    if source_user_id == target_user_id:
        exit('ERROR: source and target user accounts cannot be the same')

    settings_file = os.path.join(
        os.path.dirname(os.path.abspath(__file__)), '../../../production.ini')
    settings = get_appsettings(settings_file)

    engine = engine_from_config(settings, 'sqlalchemy.')
    DBSession.configure(bind=engine)

    queue_config = get_queue_config(settings)

    logging.basicConfig()
    logging.getLogger('sqlalchemy.engine').setLevel(logging.WARN)

    source_user = DBSession.query(User).get(source_user_id)
    if not source_user:
        exit('ERROR: source user account (id {}) does not exist'.format(
            source_user_id))

    target_user = DBSession.query(User).get(target_user_id)
    if not target_user:
        exit('ERROR: target user account (id {}) does not exist'.format(
            target_user_id))

    if not args.force:
        sys.stdout.write(
            '\n'
            'Are you sure you want to merge the following accounts? [y/N]\n'
            'source: id {}: {}/{}\n'
            'target: id {}: {}/{}\n'.format(
                source_user.id, source_user.name, source_user.forum_username,
                target_user.id, target_user.name, target_user.forum_username))
        if input().lower()[:1] != 'y':
            exit('ABORTED: User accounts merging has been aborted')

    print('Merging user account {} to user account {} in progress.\n'
          'Please wait...'.format(source_user_id, target_user_id))

    with transaction.manager:
        merge_user_accounts(source_user_id, target_user_id, queue_config)

    print('SUCCESS: User account {} has been merged to user account {}'.format(
        source_user_id, target_user_id))
Beispiel #6
0
def main(global_config, **settings):
    """ This function returns a Pyramid WSGI application.
    """
    engine = engine_from_config(settings, 'sqlalchemy.')
    DBSession.configure(bind=engine)
    Base.metadata.bind = engine
    config = Configurator(settings=settings)
    config.include('cornice')
    config.scan(ignore='c2corg_api.tests')
    return config.make_wsgi_app()
Beispiel #7
0
def main(argv=sys.argv):
    if len(argv) < 2:
        usage(argv)
    config_uri = argv[1]
    options = parse_vars(argv[2:])
    setup_logging(config_uri)
    settings = get_appsettings(config_uri, options=options)
    engine = engine_from_config(settings, 'sqlalchemy.')
    DBSession.configure(bind=engine)
    alembic_config = Config(alembic_configfile)

    setup_db(alembic_config, DBSession)
Beispiel #8
0
def main(argv=sys.argv):
    if len(argv) < 2:
        usage(argv)
    config_uri = argv[1]
    options = parse_vars(argv[2:])
    setup_logging(config_uri)
    settings = get_appsettings(config_uri, options=options)
    engine = engine_from_config(settings, 'sqlalchemy.')
    DBSession.configure(bind=engine)
    alembic_config = Config(alembic_configfile)

    setup_db(alembic_config, DBSession)
Beispiel #9
0
def main(argv=sys.argv):
    if len(argv) < 3:
        usage(argv)

    source_user_id = int(argv[1])
    target_user_id = int(argv[2])

    if source_user_id == target_user_id:
        exit('ERROR: source and target user accounts cannot be the same')

    settings_file = os.path.join(
        os.path.dirname(os.path.abspath(__file__)), '../../../production.ini')
    settings = get_appsettings(settings_file)

    engine = engine_from_config(settings, 'sqlalchemy.')
    DBSession.configure(bind=engine)

    queue_config = get_queue_config(settings)

    logging.basicConfig()
    logging.getLogger('sqlalchemy.engine').setLevel(logging.WARN)

    source_user = DBSession.query(User).get(source_user_id)
    if not source_user:
        exit('ERROR: source user account (id {}) does not exist'.format(
            source_user_id))

    target_user = DBSession.query(User).get(target_user_id)
    if not target_user:
        exit('ERROR: target user account (id {}) does not exist'.format(
            target_user_id))

    sys.stdout.write(
        '\n'
        'Are you sure you want to merge the following user accounts? [y/N]\n'
        'source: id {}: {}/{}\n'
        'target: id {}: {}/{}\n'.format(
            source_user.id, source_user.name, source_user.forum_username,
            target_user.id, target_user.name, target_user.forum_username))
    if input().lower()[:1] != 'y':
        exit('ABORTED: User accounts merging has been aborted')

    print('Merging user account {} to user account {} in progress.\n'
          'Please wait...'.format(source_user_id, target_user_id))

    with transaction.manager:
        merge_user_accounts(source_user_id, target_user_id, queue_config)

    print('SUCCESS: User account {} has been merged to user account {}'.format(
        source_user_id, target_user_id))
Beispiel #10
0
def main(argv=sys.argv):
    if len(argv) < 2:
        usage(argv)
    config_uri = argv[1]
    options = parse_vars(argv[2:])
    setup_logging(config_uri)

    settings = get_appsettings(config_uri, options=options)
    engine = engine_from_config(settings, 'sqlalchemy.')
    DBSession.configure(bind=engine)
    Base.metadata.bind = engine

    configure_scheduler_from_config(settings)

    signal.pause()
Beispiel #11
0
def main(argv=sys.argv):
    if len(argv) < 2:
        usage(argv)
    config_uri = argv[1]
    options = parse_vars(argv[2:])
    setup_logging(config_uri)

    settings = get_appsettings(config_uri, options=options)
    engine = engine_from_config(settings, 'sqlalchemy.')
    DBSession.configure(bind=engine)
    Base.metadata.bind = engine

    configure_scheduler_from_config(settings)

    signal.pause()
Beispiel #12
0
def setup_package():
    # set up database
    engine = get_engine()
    DBSession.configure(bind=engine)

    alembic_config = _get_alembic_config()
    downgrade(alembic_config, 'base')
    initializedb.setup_db(alembic_config, DBSession)

    # set up ElasticSearch
    configure_es_from_config(settings)
    initializees.drop_index()
    initializees.setup_es()

    # Add test data needed for all tests
    with transaction.manager:
        _add_global_test_data(DBSession)
        fill_index(DBSession)
    DBSession.remove()
Beispiel #13
0
def setup_package():
    # set up database
    engine = get_engine()
    DBSession.configure(bind=engine)

    alembic_config = _get_alembic_config()
    downgrade(alembic_config, 'base')
    initializedb.setup_db(alembic_config, DBSession)

    # set up ElasticSearch
    configure_es_from_config(settings)
    initializees.drop_index()
    initializees.setup_es()

    # Add test data needed for all tests
    with transaction.manager:
        _add_global_test_data(DBSession)
        fill_index(DBSession)
    DBSession.remove()