Beispiel #1
0
def upgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    op.create_table('user_participation',
                    sa.Column('user_uid', sa.Integer(), nullable=False),
                    sa.Column('issue_uid', sa.Integer(), nullable=False),
                    sa.ForeignKeyConstraint(
                        ['issue_uid'],
                        ['issues.uid'],
                    ), sa.ForeignKeyConstraint(
                        ['user_uid'],
                        ['users.uid'],
                    ), sa.PrimaryKeyConstraint('user_uid', 'issue_uid'))
    # ### end Alembic commands ###
    DBDiscussionSession.remove()
    DBDiscussionSession.configure(bind=op.get_bind())

    db_users: List[User] = DBDiscussionSession.query(User).all()
    for db_user in db_users:
        issue_slugs = set(
            [history.path.split('/', 2)[1] for history in db_user.history])
        issues: List[Issue] = DBDiscussionSession.query(Issue).filter(
            Issue.slug.in_(issue_slugs))
        db_user.participates_in.extend(issues)

    transaction.commit()
def upgrade():
    DBDiscussionSession.remove()
    DBDiscussionSession.configure(bind=op.get_bind())
    # ### commands auto generated by Alembic - please adjust! ###
    op.create_table(
        'statement_to_issue', sa.Column('uid', sa.Integer(), nullable=False),
        sa.Column('statement_uid', sa.Integer(), nullable=False),
        sa.Column('issue_uid', sa.Integer(), nullable=False),
        sa.ForeignKeyConstraint(
            ['statement_uid'],
            ['statements.uid'],
        ), sa.ForeignKeyConstraint(
            ['issue_uid'],
            ['issues.uid'],
        ), sa.PrimaryKeyConstraint('uid'))

    connection = op.get_bind()
    for db_statement in DBDiscussionSession.query(Statement).all():
        issue_uid = connection.execute(
            text("""
            SELECT issue_uid
              FROM statements
             WHERE uid = :statement_uid
            """), {'statement_uid': db_statement.uid})
        DBDiscussionSession.add(
            StatementToIssue(statement=db_statement.uid,
                             issue=issue_uid.first()[0]))

        DBDiscussionSession.flush()
    transaction.commit()
    op.drop_column('statements', 'issue_uid')
Beispiel #3
0
def upgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    op.create_table('user_participation',
                    sa.Column('user_uid', sa.Integer(), nullable=False),
                    sa.Column('issue_uid', sa.Integer(), nullable=False),
                    sa.ForeignKeyConstraint(['issue_uid'], ['issues.uid'], ),
                    sa.ForeignKeyConstraint(['user_uid'], ['users.uid'], ),
                    sa.PrimaryKeyConstraint('user_uid', 'issue_uid')
                    )
    # ### end Alembic commands ###
    DBDiscussionSession.remove()
    DBDiscussionSession.configure(bind=op.get_bind())

    issue_query = "SELECT issues.uid, issues.slug FROM discussion.public.issues"

    slug2uid = {slug: uid for (uid, slug) in DBDiscussionSession.execute(issue_query).fetchall()}

    history_query = "SELECT history.author_uid, history.path FROM discussion.public.history;"
    historys = DBDiscussionSession.execute(history_query).fetchall()

    insert_query = "INSERT INTO discussion.public.user_participation (user_uid, issue_uid) VALUES (?, ?) ON CONFLICT DO NOTHING;"

    for author_uid, path in historys:
        # /discuss/<slug>/ ...
        slug = path.split('/', 2)[1]

        # in case that the line above gets something weird (path IS sometimes malformed)
        issue_id = slug2uid.get(slug)
        if issue_id:
            DBDiscussionSession.execute(insert_query, author_uid, issue_id)

    transaction.commit()
Beispiel #4
0
 def setUp(self):
     self.config = testing.setUp()
     self.config.include('pyramid_chameleon')
     settings = add_settings_to_appconfig()
     settings.update(get_key_pair())
     DBDiscussionSession.remove()
     DBDiscussionSession.configure(
         bind=get_dbas_db_configuration('discussion', settings))
Beispiel #5
0
def setup_package():
    settings = add_settings_to_appconfig()
    DBDiscussionSession.remove()
    DBDiscussionSession.configure(
        bind=get_dbas_db_configuration('discussion', settings))
Beispiel #6
0
 def tearDown(self):
     transaction.abort()
     DBDiscussionSession.remove()
     testing.tearDown()
Beispiel #7
0
 def setUp(self):
     self.config = testing.setUp(settings=_settings_dict_for_tests())
     self.config.include('pyramid_chameleon')
     settings = add_settings_to_appconfig()
     DBDiscussionSession.remove()
     DBDiscussionSession.configure(bind=get_dbas_db_configuration('discussion', settings))