From 7918f86ac0dd55a7be863bf29a074b4edbe4b656 Mon Sep 17 00:00:00 2001 From: tilly-Q Date: Tue, 22 Apr 2014 13:32:47 -0400 Subject: [PATCH] Renamed the columns on core__privileges_users table so that they are unique and will not cause any more problems. --- mediagoblin/db/migrations.py | 45 ++++++++++++++++++++++++++++++++++++ mediagoblin/db/models.py | 4 ++-- 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/mediagoblin/db/migrations.py b/mediagoblin/db/migrations.py index 426080a2..66b503b5 100644 --- a/mediagoblin/db/migrations.py +++ b/mediagoblin/db/migrations.py @@ -720,3 +720,48 @@ def drop_MediaEntry_collected(db): media_collected.drop() db.commit() + +class PrivilegeUserAssociation_R1(declarative_base()): + __tablename__ = 'rename__privileges_users' + privilege_id = Column( + 'id_of_privilege', + Integer, + ForeignKey(User.id), + primary_key=True) + user_id = Column( + 'id_of_user', + Integer, + ForeignKey(Privilege.id), + primary_key=True) + +@RegisterMigration(20, 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. + """ + 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: + priv_id, user_id = row['core__privilege_id'], row['core__user_id'] + db.execute(new_privilege_user_assoc.insert().values( + id_of_privilege=priv_id, + id_of_user=user_id)) + + db.commit() + + privilege_user_assoc.drop() + new_privilege_user_assoc.rename('core__privileges_users') + + db.commit() + + diff --git a/mediagoblin/db/models.py b/mediagoblin/db/models.py index b750375d..58635419 100644 --- a/mediagoblin/db/models.py +++ b/mediagoblin/db/models.py @@ -876,12 +876,12 @@ class PrivilegeUserAssociation(Base): __tablename__ = 'core__privileges_users' privilege_id = Column( - 'core__privilege_id', + 'id_of_privilege', Integer, ForeignKey(User.id), primary_key=True) user_id = Column( - 'core__user_id', + 'id_of_user', Integer, ForeignKey(Privilege.id), primary_key=True) -- 2.25.1