aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/db/migrations.py
diff options
context:
space:
mode:
authorChristopher Allan Webber <cwebber@dustycloud.org>2014-06-10 16:48:45 -0500
committerChristopher Allan Webber <cwebber@dustycloud.org>2014-06-10 16:48:45 -0500
commit70bceff85fd678a7b6653b2bf377b075ebd11590 (patch)
tree57c4a8d44aa3a9388098d2350bc97b1b6e19c1ee /mediagoblin/db/migrations.py
parent1ec440b44614e8144b8244d28749e2f59d3e4126 (diff)
parent9adef07e8f0d169e57776bcefc03f2ae17c8920e (diff)
downloadmediagoblin-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.py46
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()