コード例 #1
0
def postgres_user_conf(request, postgres_conf):
    from datacat.db import connect
    conn = connect(**postgres_conf)
    conn.autocommit = True

    randomcode = random.randint(0, 999999)
    name = 'dtctest_{0:06d}'.format(randomcode)

    # Note: we need to use separate transactions to perform
    # administrative activities such as creating/dropping databases
    # and roles.

    # For this reason, we need to set the connection isolation level
    # to "autocommit"

    with conn.cursor() as cur:
        cur.execute(
            """
        CREATE ROLE "{name}" LOGIN
        PASSWORD %(password)s;
        """.format(name=name), dict(password=name))

        cur.execute("""
        CREATE DATABASE "{name}"
        WITH OWNER "{name}"
        ENCODING = 'UTF-8';
        """.format(name=name))

    def cleanup():
        conn.autocommit = True
        with conn.cursor() as cur:
            # Kill all connections to database first
            cur.execute("""
            SELECT pg_terminate_backend(pg_stat_activity.pid)
            FROM pg_stat_activity
            WHERE pg_stat_activity.datname = '{name}'
            AND pid <> pg_backend_pid();
            """.format(name=name))
            cur.execute('DROP DATABASE "{name}";'.format(name=name))
            cur.execute('DROP ROLE "{name}";'.format(name=name))

    request.addfinalizer(cleanup)

    conf = postgres_conf.copy()
    conf['user'] = name
    conf['password'] = name
    conf['database'] = name

    # HACK to create PostGIS extension, used by some plugins
    _conf = postgres_conf.copy()
    _conf['database'] = name
    _conn = connect(**_conf)
    _conn.autocommit = True
    with _conn.cursor() as cur:
        cur.execute("CREATE EXTENSION postgis;")

    return conf
コード例 #2
0
def postgres_user_conf(request, postgres_conf):
    from datacat.db import connect
    conn = connect(**postgres_conf)
    conn.autocommit = True

    randomcode = random.randint(0, 999999)
    name = 'dtctest_{0:06d}'.format(randomcode)

    # Note: we need to use separate transactions to perform
    # administrative activities such as creating/dropping databases
    # and roles.

    # For this reason, we need to set the connection isolation level
    # to "autocommit"

    with conn.cursor() as cur:
        cur.execute("""
        CREATE ROLE "{name}" LOGIN
        PASSWORD %(password)s;
        """.format(name=name), dict(password=name))

        cur.execute("""
        CREATE DATABASE "{name}"
        WITH OWNER "{name}"
        ENCODING = 'UTF-8';
        """.format(name=name))

    def cleanup():
        conn.autocommit = True
        with conn.cursor() as cur:
            # Kill all connections to database first
            cur.execute("""
            SELECT pg_terminate_backend(pg_stat_activity.pid)
            FROM pg_stat_activity
            WHERE pg_stat_activity.datname = '{name}'
            AND pid <> pg_backend_pid();
            """.format(name=name))
            cur.execute('DROP DATABASE "{name}";'.format(name=name))
            cur.execute('DROP ROLE "{name}";'.format(name=name))

    request.addfinalizer(cleanup)

    conf = postgres_conf.copy()
    conf['user'] = name
    conf['password'] = name
    conf['database'] = name

    # HACK to create PostGIS extension, used by some plugins
    _conf = postgres_conf.copy()
    _conf['database'] = name
    _conn = connect(**_conf)
    _conn.autocommit = True
    with _conn.cursor() as cur:
        cur.execute("CREATE EXTENSION postgis;")

    return conf
コード例 #3
0
def postgres_user_db_ac(request, postgres_user_conf):
    """User database with autocommit on"""
    from datacat.db import connect
    conn = connect(**postgres_user_conf)
    conn.autocommit = True
    request.addfinalizer(lambda: conn.close())
    return conn
コード例 #4
0
def postgres_user_db_ac(request, postgres_user_conf):
    """User database with autocommit on"""
    from datacat.db import connect
    conn = connect(**postgres_user_conf)
    conn.autocommit = True
    request.addfinalizer(lambda: conn.close())
    return conn
コード例 #5
0
def make_app(config=None):
    from datacat.db import create_tables, connect

    app = make_flask_app(config)
    celery_app = make_celery(app.config)
    celery_app.set_current()
    _adm_conn = connect(**app.config['DATABASE'])
    _adm_conn.autocommit = True
    create_tables(_adm_conn)
    finalize_app(app)
    return app
コード例 #6
0
def make_app(config=None):
    from datacat.db import create_tables, connect

    app = make_flask_app(config)
    celery_app = make_celery(app.config)
    celery_app.set_current()
    _adm_conn = connect(**app.config['DATABASE'])
    _adm_conn.autocommit = True
    create_tables(_adm_conn)
    finalize_app(app)
    return app
コード例 #7
0
def postgres_admin_db(request, postgres_conf):
    from datacat.db import connect
    conn = connect(**postgres_conf)
    request.addfinalizer(lambda: conn.close())
    return conn
コード例 #8
0
def postgres_user_db(request, postgres_user_conf):
    from datacat.db import connect
    conn = connect(**postgres_user_conf)
    conn.autocommit = False
    request.addfinalizer(lambda: conn.close())
    return conn
コード例 #9
0
 def admin_db(self):
     if getattr(self, '_admin_db', None) is None:
         self._admin_db = connect(**self.config['DATABASE'])
         self._admin_db.autocommit = True
     return self._admin_db
コード例 #10
0
 def db(self):
     if getattr(self, '_db', None) is None:
         self._db = connect(**self.config['DATABASE'])
         self._db.autocommit = False
     return self._db
コード例 #11
0
 def admin_db(self):
     if getattr(self, '_admin_db', None) is None:
         self._admin_db = connect(**self.config['DATABASE'])
         self._admin_db.autocommit = True
     return self._admin_db
コード例 #12
0
 def db(self):
     if getattr(self, '_db', None) is None:
         self._db = connect(**self.config['DATABASE'])
         self._db.autocommit = False
     return self._db
コード例 #13
0
def postgres_admin_db(request, postgres_conf):
    from datacat.db import connect
    conn = connect(**postgres_conf)
    request.addfinalizer(lambda: conn.close())
    return conn
コード例 #14
0
def postgres_user_db(request, postgres_user_conf):
    from datacat.db import connect
    conn = connect(**postgres_user_conf)
    conn.autocommit = False
    request.addfinalizer(lambda: conn.close())
    return conn