diff options
-rw-r--r-- | mediagoblin/db/migrations.py | 39 | ||||
-rw-r--r-- | mediagoblin/db/models.py | 14 | ||||
-rw-r--r-- | mediagoblin/edit/views.py | 3 |
3 files changed, 39 insertions, 17 deletions
diff --git a/mediagoblin/db/migrations.py b/mediagoblin/db/migrations.py index b6c172e0..8f9ce79b 100644 --- a/mediagoblin/db/migrations.py +++ b/mediagoblin/db/migrations.py @@ -36,7 +36,7 @@ from mediagoblin.db.extratypes import JSONEncoded, MutationDict from mediagoblin.db.migration_tools import ( RegisterMigration, inspect_table, replace_table_hack) from mediagoblin.db.models import (MediaEntry, Collection, MediaComment, User, - Privilege, Generator) + Privilege, Generator, LocalUser, Location) from mediagoblin.db.extratypes import JSONEncoded, MutationDict @@ -1515,11 +1515,24 @@ def federation_user_migrate_data(db): )) db.execute(user_table.update().where(user_table.c.id==user.id).values( - updated=user.created + updated=user.created, + type=LocalUser.__mapper_args__["polymorphic_identity"] )) db.commit() +class User_vR2(declarative_base()): + __tablename__ = "rename__users" + + id = Column(Integer, primary_key=True) + url = Column(Unicode) + bio = Column(UnicodeText) + name = Column(Unicode) + type = Column(Unicode) + created = Column(DateTime, nullable=False, default=datetime.datetime.utcnow) + updated = Column(DateTime, nullable=False, default=datetime.datetime.utcnow) + location = Column(Integer, ForeignKey(Location.id)) + @RegisterMigration(34, MIGRATIONS) def federation_remove_fields(db): """ @@ -1539,12 +1552,6 @@ def federation_remove_fields(db): pw_hash_column = user_table.columns["pw_hash"] pw_hash_column.drop() - wcn_column = user_table.columns["wants_comment_notification"] - wcn_column.drop() - - wants_notifications_column = user_table.columns["wants_notifications"] - wants_notifications_column.drop() - license_preference_column = user_table.columns["license_preference"] license_preference_column.drop() @@ -1554,5 +1561,19 @@ def federation_remove_fields(db): upload_limit_column = user_table.columns["upload_limit"] upload_limit_column.drop() - db.commit() + # SQLLite can't drop booleans -.- + if db.bind.url.drivername == 'sqlite': + # Create the new hacky table + User_vR2.__table__.create(db.bind) + db.commit() + new_user_table = inspect_table(metadata, "rename__users") + replace_table_hack(db, user_table, new_user_table) + else: + wcn_column = user_table.columns["wants_comment_notification"] + wcn_column.drop() + + wants_notifications_column = user_table.columns["wants_notifications"] + wants_notifications_column.drop() + + db.commit() diff --git a/mediagoblin/db/models.py b/mediagoblin/db/models.py index 41c36764..9d57753b 100644 --- a/mediagoblin/db/models.py +++ b/mediagoblin/db/models.py @@ -1466,13 +1466,13 @@ with_polymorphic( [ProcessingNotification, CommentNotification]) MODELS = [ - User, MediaEntry, Tag, MediaTag, MediaComment, Collection, CollectionItem, - MediaFile, FileKeynames, MediaAttachmentFile, ProcessingMetaData, - Notification, CommentNotification, ProcessingNotification, Client, - CommentSubscription, ReportBase, CommentReport, MediaReport, UserBan, - Privilege, PrivilegeUserAssociation, - RequestToken, AccessToken, NonceTimestamp, - Activity, Generator, Location, GenericModelReference] + LocalUser, RemoteUser, User, MediaEntry, Tag, MediaTag, MediaComment, + Collection, CollectionItem, MediaFile, FileKeynames, MediaAttachmentFile, + ProcessingMetaData, Notification, CommentNotification, + ProcessingNotification, Client, CommentSubscription, ReportBase, + CommentReport, MediaReport, UserBan, Privilege, PrivilegeUserAssociation, + RequestToken, AccessToken, NonceTimestamp, Activity, Generator, Location, + GenericModelReference] """ Foundations are the default rows that are created immediately after the tables diff --git a/mediagoblin/edit/views.py b/mediagoblin/edit/views.py index 224b93de..af0d0e9b 100644 --- a/mediagoblin/edit/views.py +++ b/mediagoblin/edit/views.py @@ -314,7 +314,8 @@ def delete_account(request): request.session.delete() # Delete user account and all related media files etc.... - request.user.delete() + user = User.query.filter(User.id==user.id).first() + user.delete() # We should send a message that the user has been deleted # successfully. But we just deleted the session, so we |