def refresh_all_mat_views(concurrently=True):
    '''Refreshes all materialized views. Currently, views are refreshed in
	non-deterministic order, so view definitions can't depend on each other.'''
    # TODO use `include='materialized'` once https://bitbucket.org/zzzeek/sqlalchemy/issues/3588/ lands
    mat_views = db.inspect(db.engine).get_view_names()
    for v in mat_views:
        refresh_mat_view(v, concurrently)
Пример #2
0
    def by_id(cls, id):
        from app import db

        primary_key = db.inspect(cls).primary_key[0]
        data = db.session.query(cls).filter(primary_key == id).first()

        return data
def refresh_all_mat_views(concurrently=True):
    """Refreshes all materialized views. Currently, views are refreshed in
    non-deterministic order, so view definitions can't depend on each other."""

    mat_views = db.inspect(db.engine).get_view_names()
    for v in mat_views:
        refresh_mat_view(v, concurrently)
def refresh_all_mat_views(concurrently=True):
	'''Refreshes all materialized views. Currently, views are refreshed in
	non-deterministic order, so view definitions can't depend on each other.'''
	# TODO use `include='materialized'` once https://bitbucket.org/zzzeek/sqlalchemy/issues/3588/ lands
	mat_views = db.inspect(db.engine).get_view_names()
	for v in mat_views:
		refresh_mat_view(v, concurrently)
Пример #5
0
def test_db_existence():
    """
    Check whether the __init__ created a db and user class table.
    """
    db = SQLAlchemy()
    engine = db.create_engine(Config.SQLALCHEMY_DATABASE_URI, {})
    inspect = db.inspect(engine)
    assert (inspect.has_table("user"))
Пример #6
0
def after_delete_item(mapper, connection, target):
    state = db.inspect(target)
    u = Log(item_code=target.item_code, action='D')
    d = DeletedItems(item_code=target.item_code, item_name=target.item_name)
    u.user_code = session['user_code']
    for attr in state.attrs:
        hist = state.get_history(attr.key, True)
    state.session.add(u)
    state.session.add(d)
Пример #7
0
def db_rebuild():
    """
    Destroy and rebuild database with fake data.
    """
    # destroy and rebuild tables
    db.reflect()
    db.drop_all()
    db.create_all()

    # insert locations as defined in model
    Location.insert_locations()

    # insert roles as defined in model
    Role.insert_roles()

    # insert geos and usertypes as defined in model
    Geo.insert_geos()
    UserType.insert_user_types()

    # insert education data
    Education.create_education()

    # insert fake admin/test users
    from random import seed
    import forgery_py
    seed()
    test_user_1 = User(email='*****@*****.**',
                       username='******',
                       password='******',
                       app_name='password'.encode('base64'),
                       confirmed=True,
                       name='David Kimaru',
                       location='KE',
                       about_me=forgery_py.lorem_ipsum.sentence(),
                       member_since=forgery_py.date.date(True))
    admin_user = User(email='*****@*****.**',
                      username='******',
                      password='******',
                      app_name='webmaster'.encode('base64'),
                      confirmed=True,
                      name='Web Master',
                      location='UG',
                      about_me=forgery_py.lorem_ipsum.sentence(),
                      member_since=forgery_py.date.date(True))
    db.session.add_all([test_user_1, admin_user])
    db.session.commit()

    # insert fake user data
    # User.generate_fake(60)

    # print results
    inspector = db.inspect(db.engine)
    print('The following tables were created.')
    print('-' * 17)
    for table in inspector.get_table_names():
        print(table)
Пример #8
0
def db_rebuild():
    """
    Destroy and rebuild database with fake data.
    """
    # destroy and rebuild tables
    db.reflect()
    db.drop_all()
    db.create_all()

    # insert fake test users
    test_user_1 = User(
        email='*****@*****.**',
        username='******',
        password='******',
        confirmed=True,
    )
    test_user_2 = User(
        email='*****@*****.**',
        username='******',
        password='******',
        confirmed=True,
    )
    db.session.add_all([test_user_1, test_user_2])
    db.session.commit()

    # insert fake user data
    User.generate_fake(60)

    # insert fake conferences
    FootballConference.generate_fake(20)

    # insert fake fantasy leagues
    FantasyLeague.generate_fake(20)

    # insert fake fantasy teams
    FantasyTeam.generate_fake()

    # insert fake football teams
    FootballTeam.generate_fake(80)

    # insert fake football players
    FootballPlayer.generate_fake(3000)

    # insert fake draft orders
    DraftOrder.generate_fake(rounds=5)

    # complete draft
    # do not complete the draft when creating fake data
    # DraftPick.generate_fake()

    # print results
    inspector = db.inspect(db.engine)
    print 'The following tables were created.'
    print '-' * 35
    for table in inspector.get_table_names():
        print table
Пример #9
0
def after_update_item(mapper, connection, target):
    state = db.inspect(target)
    u = Log(item_code=target.item_code, action='U')
    u.user_code = session['user_code']
    for attr in state.attrs:
        hist = state.get_history(attr.key, True)
        if not hist.has_changes():
            continue
        p = LoggedParameters(parameter=str(attr.key))
        u.parameters.append(p)
    state.session.add(u)
Пример #10
0
    def compute_priority(self):
        """ This method is called before persisting a feature request to
        maintain the list of priorities for a client without holes and without
        duplicates. """
        requests_count = FeatureRequest.count_active_by_client(self.client)
        self.priority = max(self.priority, 1) # Priorities go from 1
        # Max value = feature requests count for the client
        if self.id is None:
            # Creation
            self.priority = min(self.priority, requests_count+1)
            # create hole: increment priority of every FeatureRequest of this 
            # client with priority >= self.priority
            if not self.is_archived:
                FeatureRequest.increment_priority(self.client, self.priority)
        else:
            self.priority = min(self.priority, requests_count)
            state = db.inspect(self)

            hist = state.get_history(state.attrs.priority.key, True)
            old_priority = self.priority
            if hist.deleted != ():
                old_priority = hist.deleted[0]

            # Is archived changed ?
            hist = state.get_history(state.attrs.is_archived.key, True)
            if hist.added != () or hist.deleted != ():
                # is_archived changed
                if self.is_archived:
                    FeatureRequest.decrement_priority(self.client, old_priority+1)
                else:
                    FeatureRequest.increment_priority(self.client, old_priority)
            
            hist = state.get_history(state.attrs.priority.key, True)
            if hist.added == () or hist.added is None or hist.deleted == () or hist.deleted is None:
                return # Priority not changed
            # Priority was changed
            old_priority = hist.deleted[0]
            new_priority = hist.added[0]
            if self.priority < old_priority:
                # Elements in [new_priority, old_priority-1]
                # are shifted upwards to make place
                FeatureRequest.increment_priority(self.client, new_priority,
                    to_priority=old_priority-1)
            elif new_priority > old_priority:
                # Elements in [old_priority+1, new_priority]
                # are shifted downwards to make place
                FeatureRequest.decrement_priority(self.client, old_priority+1,
                    to_priority=new_priority)
            self.priority = new_priority
Пример #11
0
def db_rebuild():
    """
    Destroy and rebuild database with fake data.
    """
    # destroy and rebuild tables
    db.reflect()
    db.drop_all()
    db.create_all()

    # insert fake test users
    test_user_1 = User(email="*****@*****.**", username="******", password="******", confirmed=True)
    test_user_2 = User(email="*****@*****.**", username="******", password="******", confirmed=True)
    db.session.add_all([test_user_1, test_user_2])
    db.session.commit()

    # insert fake user data
    User.generate_fake(60)

    # insert fake conferences
    FootballConference.generate_fake(20)

    # insert fake fantasy leagues
    FantasyLeague.generate_fake(20)

    # insert fake fantasy teams
    FantasyTeam.generate_fake()

    # insert fake football teams
    FootballTeam.generate_fake(80)

    # insert fake football players
    FootballPlayer.generate_fake(3000)

    # insert fake draft orders
    DraftOrder.generate_fake(rounds=5)

    # complete draft
    # do not complete the draft when creating fake data
    # DraftPick.generate_fake()

    # print results
    inspector = db.inspect(db.engine)
    print "The following tables were created."
    print "-" * 35
    for table in inspector.get_table_names():
        print table
Пример #12
0
    def on_model_change(self, form, model, is_created):
        """
        更新子类型数据
        """
        from app.utils.db import ClosureTable
        from app import db

        super().on_model_change(form, model, is_created)
        cl_table = ClosureTable(model)
        state = db.inspect(model)
        # 软删除
        if state.attrs.deleted.history.has_changes() and model.deleted:
            cl_table.delete_subtree()
            return
        # 创建
        if is_created:
            cl_table.insert_node()
        else:
            cl_table.move_tree()
Пример #13
0
    def init_app(self, app: Flask):
        with app.app_context():
            # rename file with its sha256
            file_list: List[str] = os.listdir(app.static_folder)
            _original: str = os.getcwd()
            os.chdir(app.static_folder)
            for file in file_list:
                with open(file, "rb")as f:
                    # noinspection InsecureHash
                    sha256sum = hashlib.sha256(f.read()).hexdigest()
                    if file != sha256sum:
                        os.rename(file, sha256sum)

            from app.models import Docker
            from app import db

            # https://stackoverflow.com/a/49178408
            if Docker.__tablename__ in db.inspect(db.engine).get_table_names():
                file_list: List[str] = os.listdir(app.static_folder)
                hash_list: List[str] = Docker.get_binary_list()
                if set(hash_list) != set(file_list):
                    raise FileNotFoundError

            os.chdir(_original)
Пример #14
0
import dash_core_components as dcc
import dash_html_components as html
import dash_bootstrap_components as dbc
from dash.dependencies import Input, Output
from dash.exceptions import PreventUpdate
import dash_table
import pandas as pd

from app import app, db

### ----------------------------- LAYOUT --------------------------------- ###

_option_list = db.inspect(db.engine).get_table_names()
options = [{'label': option, 'value': option} for option in _option_list]

layout = html.Div([
    dbc.Container([
        dcc.Dropdown(id='select_table',
                     options=options,
                     placeholder="Select Table",
                     multi=False),
        html.Br(),
        html.Br(),
        html.Div(id='postgres_datatable')
    ], )
])

### ---------------------------- CALLBACKS ------------------------------- ###


@app.callback(Output('postgres_datatable', 'children'),
Пример #15
0
def db_rebuild():
    """
    Destroy and rebuild database with fake data.
    """
    # destroy and rebuild tables
    db.reflect()
    db.drop_all()
    db.create_all()

    # insert roles as defined in model
    Role.insert_roles()

    # insert geos and usertypes as defined in model
    Geo.insert_geos()
    UserType.insert_user_types()

    # insert firm types/tiers as defined in model
    FirmType.insert_firm_types()
    FirmTier.insert_firm_tiers()

    # insert fake admin/test users
    from random import seed
    import forgery_py
    seed()
    test_user_1 = User(
        email='*****@*****.**',
        username='******',
        password='******',
        confirmed=True,
        name='Salim Hamed',
        location='Seattle, WA',
        about_me=forgery_py.lorem_ipsum.sentence(),
        member_since=forgery_py.date.date(True)
    )
    test_user_2 = User(
        email='*****@*****.**',
        username='******',
        password='******',
        confirmed=True,
        name='Bryan Davis',
        location='Seattle, WA',
        about_me=forgery_py.lorem_ipsum.sentence(),
        member_since=forgery_py.date.date(True)
    )
    test_user_3 = User(
        email='*****@*****.**',
        username='******',
        password='******',
        confirmed=True,
        name='Joe Smith',
        location='San Francisco, CA',
        about_me=forgery_py.lorem_ipsum.sentence(),
        member_since=forgery_py.date.date(True)
    )
    test_user_4 = User(
        email='*****@*****.**',
        username='******',
        password='******',
        confirmed=True,
        name='Bill Gates',
        location='Bellevue, WA',
        about_me=forgery_py.lorem_ipsum.sentence(),
        member_since=forgery_py.date.date(True)
    )
    admin_user = User(
        email='*****@*****.**',
        username='******',
        password='******',
        confirmed=True,
        name='Bill Gates',
        location='Seattle, WA',
        about_me=forgery_py.lorem_ipsum.sentence(),
        member_since=forgery_py.date.date(True)
    )
    db.session.add_all([test_user_1, test_user_2, test_user_3, test_user_4,
                        admin_user])
    db.session.commit()

    # insert fake user data
    User.generate_fake(60)

    # insert fake post data
    Post.generate_fake(400)

    # insert fake followers
    Follow.generate_fake(2000)

    # insert fake firms
    Firm.generate_fake(5000)

    # insert fake companies
    Company.generate_fake(10000)

    # insert fake relationships
    Relationship.generate_fake(60000)

    # print results
    inspector = db.inspect(db.engine)
    print 'The following tables were created.'
    print '-'*17
    for table in inspector.get_table_names():
        print table
Пример #16
0
def is_empty():
    table_names = db.inspect(db.engine).get_table_names()
    is_empty = table_names == []
    return is_empty
Пример #17
0
def after_insert_variant(mapper, connection, target):
    state = db.inspect(target)
    changes = {}
    u = Log(item_code=target.item_code, action='IV')
    u.user_code = session['user_code']
    state.session.add(u)
Пример #18
0
def db_rebuild():
    """
    Destroy and rebuild database with fake data.
    """
    # destroy and rebuild tables
    db.reflect()
    db.drop_all()
    db.create_all()

    # insert roles as defined in model
    Role.insert_roles()

    # insert geos and usertypes as defined in model
    Geo.insert_geos()
    UserType.insert_user_types()

    # insert firm types/tiers as defined in model
    FirmType.insert_firm_types()
    FirmTier.insert_firm_tiers()

    # insert fake admin/test users
    from random import seed
    import forgery_py
    seed()
    test_user_1 = User(email='*****@*****.**',
                       username='******',
                       password='******',
                       confirmed=True,
                       name='Salim Hamed',
                       location='Seattle, WA',
                       about_me=forgery_py.lorem_ipsum.sentence(),
                       member_since=forgery_py.date.date(True))
    test_user_2 = User(email='*****@*****.**',
                       username='******',
                       password='******',
                       confirmed=True,
                       name='Bryan Davis',
                       location='Seattle, WA',
                       about_me=forgery_py.lorem_ipsum.sentence(),
                       member_since=forgery_py.date.date(True))
    test_user_3 = User(email='*****@*****.**',
                       username='******',
                       password='******',
                       confirmed=True,
                       name='Joe Smith',
                       location='San Francisco, CA',
                       about_me=forgery_py.lorem_ipsum.sentence(),
                       member_since=forgery_py.date.date(True))
    test_user_4 = User(email='*****@*****.**',
                       username='******',
                       password='******',
                       confirmed=True,
                       name='Bill Gates',
                       location='Bellevue, WA',
                       about_me=forgery_py.lorem_ipsum.sentence(),
                       member_since=forgery_py.date.date(True))
    admin_user = User(email='*****@*****.**',
                      username='******',
                      password='******',
                      confirmed=True,
                      name='Bill Gates',
                      location='Seattle, WA',
                      about_me=forgery_py.lorem_ipsum.sentence(),
                      member_since=forgery_py.date.date(True))
    db.session.add_all(
        [test_user_1, test_user_2, test_user_3, test_user_4, admin_user])
    db.session.commit()

    # insert fake user data
    User.generate_fake(60)

    # insert fake post data
    Post.generate_fake(400)

    # insert fake followers
    Follow.generate_fake(2000)

    # insert fake firms
    Firm.generate_fake(5000)

    # insert fake companies
    Company.generate_fake(10000)

    # insert fake relationships
    Relationship.generate_fake(60000)

    # print results
    inspector = db.inspect(db.engine)
    print('The following tables were created.')
    print('-' * 17)
    for table in inspector.get_table_names():
        print(table)
Пример #19
0
def after_insert_item(mapper, connection, target):
    state = db.inspect(target)
    u = Log(item_code=target.item_code, action='I')
    u.user_code = session['user_code']
    state.session.add(u)