From: tilly-Q Date: Thu, 12 Sep 2013 22:58:04 +0000 (-0400) Subject: Merge branch 'master' into OPW-Moderation-Update X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=045fe0ee9d43aa825de6fbf14fe8fd48953d4eff;p=mediagoblin.git Merge branch 'master' into OPW-Moderation-Update Conflicts: mediagoblin/db/migrations.py --- 045fe0ee9d43aa825de6fbf14fe8fd48953d4eff diff --cc mediagoblin/db/migrations.py index eb3f9880,62fb7e8d..2e05bf2a --- a/mediagoblin/db/migrations.py +++ b/mediagoblin/db/migrations.py @@@ -462,110 -463,14 +465,122 @@@ def create_oauth1_tables(db) db.commit() + + @RegisterMigration(15, MIGRATIONS) + def wants_notifications(db): + """Add a wants_notifications field to User model""" + metadata = MetaData(bind=db.bind) + user_table = inspect_table(metadata, "core__users") - + col = Column('wants_notifications', Boolean, default=True) + col.create(user_table) ++ db.commit() ++ +class ReportBase_v0(declarative_base()): + __tablename__ = 'core__reports' + id = Column(Integer, primary_key=True) + reporter_id = Column(Integer, ForeignKey(User.id), nullable=False) + report_content = Column(UnicodeText) + reported_user_id = Column(Integer, ForeignKey(User.id), nullable=False) + created = Column(DateTime, nullable=False, default=datetime.datetime.now) + discriminator = Column('type', Unicode(50)) + resolver_id = Column(Integer, ForeignKey(User.id)) + resolved = Column(DateTime) + result = Column(UnicodeText) + __mapper_args__ = {'polymorphic_on': discriminator} + +class CommentReport_v0(ReportBase_v0): + __tablename__ = 'core__reports_on_comments' + __mapper_args__ = {'polymorphic_identity': 'comment_report'} + + id = Column('id',Integer, ForeignKey('core__reports.id'), + primary_key=True) + comment_id = Column(Integer, ForeignKey(MediaComment.id), nullable=False) + ++ ++ +class MediaReport_v0(ReportBase_v0): + __tablename__ = 'core__reports_on_media' + __mapper_args__ = {'polymorphic_identity': 'media_report'} + + id = Column('id',Integer, ForeignKey('core__reports.id'), primary_key=True) + media_entry_id = Column(Integer, ForeignKey(MediaEntry.id), nullable=False) + +class UserBan_v0(declarative_base()): + __tablename__ = 'core__user_bans' + user_id = Column('id',Integer, ForeignKey(User.id), nullable=False, + primary_key=True) + expiration_date = Column(Date) + reason = Column(UnicodeText, nullable=False) + +class Privilege_v0(declarative_base()): + __tablename__ = 'core__privileges' + id = Column(Integer, nullable=False, primary_key=True, unique=True) + privilege_name = Column(Unicode, nullable=False, unique=True) + +class PrivilegeUserAssociation_v0(declarative_base()): + __tablename__ = 'core__privileges_users' + group_id = Column( + 'core__privilege_id', + Integer, + ForeignKey(User.id), + primary_key=True) + user_id = Column( + 'core__user_id', + Integer, + ForeignKey(Privilege.id), + primary_key=True) + - @RegisterMigration(15, MIGRATIONS) ++@RegisterMigration(16, MIGRATIONS) +def create_moderation_tables(db): + ReportBase_v0.__table__.create(db.bind) + CommentReport_v0.__table__.create(db.bind) + MediaReport_v0.__table__.create(db.bind) + UserBan_v0.__table__.create(db.bind) + Privilege_v0.__table__.create(db.bind) + PrivilegeUserAssociation_v0.__table__.create(db.bind) db.commit() + + for parameters in FOUNDATIONS[Privilege]: + p = Privilege(**parameters) + p.save() + + - @RegisterMigration(16, MIGRATIONS) ++@RegisterMigration(17, MIGRATIONS) +def update_user_privilege_columns(db): + # first, create the privileges which would be created by foundations + default_privileges = Privilege.query.filter( + Privilege.privilege_name !=u'admin').filter( + Privilege.privilege_name !=u'moderator').filter( + Privilege.privilege_name !=u'active').all() + admin_privilege = Privilege.query.filter( + Privilege.privilege_name ==u'admin').first() + active_privilege = Privilege.query.filter( + Privilege.privilege_name ==u'active').first() + # then, assign them to the appropriate users + for inactive_user in User.query.filter( + User.status!=u'active').filter( + User.is_admin==False).all(): + + inactive_user.all_privileges = default_privileges + inactive_user.save() + for user in User.query.filter( + User.status==u'active').filter( + User.is_admin==False).all(): + + user.all_privileges = default_privileges + [active_privilege] + user.save() + for admin_user in User.query.filter( + User.is_admin==True).all(): + + admin_user.all_privileges = default_privileges + [ + admin_privilege, active_privilege] + admin_user.save() + + # and then drop the now vestigial status column + metadata = MetaData(bind=db.bind) + user_table = inspect_table(metadata, 'core__users') + status = user_table.columns['status'] + status.drop() + db.commit() + diff --cc mediagoblin/db/models.py index 3f9fde3a,4341e086..cec311f2 --- a/mediagoblin/db/models.py +++ b/mediagoblin/db/models.py @@@ -70,9 -68,9 +70,10 @@@ class User(Base, UserMixin) # Intented to be nullable=False, but migrations would not work for it # set to nullable=True implicitly. wants_comment_notification = Column(Boolean, default=True) + wants_notifications = Column(Boolean, default=True) license_preference = Column(Unicode) +#--column admin is VESTIGIAL with privileges and should not be used------------ +#--should be dropped ASAP though a bug in sqlite3 prevents this atm------------ is_admin = Column(Boolean, default=False, nullable=False) url = Column(Unicode) bio = Column(UnicodeText) # ??