diff options
author | Christopher Allan Webber <cwebber@dustycloud.org> | 2014-06-10 16:48:45 -0500 |
---|---|---|
committer | Christopher Allan Webber <cwebber@dustycloud.org> | 2014-06-10 16:48:45 -0500 |
commit | 70bceff85fd678a7b6653b2bf377b075ebd11590 (patch) | |
tree | 57c4a8d44aa3a9388098d2350bc97b1b6e19c1ee /mediagoblin/db/migrations.py | |
parent | 1ec440b44614e8144b8244d28749e2f59d3e4126 (diff) | |
parent | 9adef07e8f0d169e57776bcefc03f2ae17c8920e (diff) | |
download | mediagoblin-70bceff85fd678a7b6653b2bf377b075ebd11590.tar.lz mediagoblin-70bceff85fd678a7b6653b2bf377b075ebd11590.tar.xz mediagoblin-70bceff85fd678a7b6653b2bf377b075ebd11590.zip |
Merge remote-tracking branch 'refs/remotes/tilly-q/ticket-874' into mergetest
Conflicts:
mediagoblin/db/migrations.py
Diffstat (limited to 'mediagoblin/db/migrations.py')
-rw-r--r-- | mediagoblin/db/migrations.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/mediagoblin/db/migrations.py b/mediagoblin/db/migrations.py index dd69ad6e..c94fbda0 100644 --- a/mediagoblin/db/migrations.py +++ b/mediagoblin/db/migrations.py @@ -708,6 +708,7 @@ def create_moderation_tables(db): is_admin.drop() db.commit() + @RegisterMigration(19, MIGRATIONS) def drop_MediaEntry_collected(db): """ @@ -722,6 +723,7 @@ def drop_MediaEntry_collected(db): db.commit() + @RegisterMigration(20, MIGRATIONS) def add_metadata_column(db): metadata = MetaData(bind=db.bind) @@ -733,3 +735,47 @@ def add_metadata_column(db): col.create(media_entry) db.commit() + + +class PrivilegeUserAssociation_R1(declarative_base()): + __tablename__ = 'rename__privileges_users' + user_id = Column( + Integer, + ForeignKey(User.id), + primary_key=True) + privilege_id = Column( + Integer, + ForeignKey(Privilege.id), + primary_key=True) + + +@RegisterMigration(21, MIGRATIONS) +def fix_privilege_user_association_table(db): + """ + There was an error in the PrivilegeUserAssociation table that allowed for a + dangerous sql error. We need to the change the name of the columns to be + unique, and properly referenced. + """ + metadata = MetaData(bind=db.bind) + + privilege_user_assoc = inspect_table( + metadata, 'core__privileges_users') + PrivilegeUserAssociation_R1.__table__.create(db.bind) + db.commit() + + new_privilege_user_assoc = inspect_table( + metadata, 'rename__privileges_users') + result = db.execute(privilege_user_assoc.select()) + for row in result: + # The columns were improperly named before, so we switch the columns + user_id, priv_id = row['core__privilege_id'], row['core__user_id'] + db.execute(new_privilege_user_assoc.insert().values( + user_id=user_id, + privilege_id=priv_id)) + + db.commit() + + privilege_user_assoc.drop() + new_privilege_user_assoc.rename('core__privileges_users') + + db.commit() |