diff options
Diffstat (limited to 'mediagoblin/db')
-rw-r--r-- | mediagoblin/db/migrations.py | 3 | ||||
-rw-r--r-- | mediagoblin/db/mixin.py | 6 | ||||
-rw-r--r-- | mediagoblin/db/models.py | 43 |
3 files changed, 27 insertions, 25 deletions
diff --git a/mediagoblin/db/migrations.py b/mediagoblin/db/migrations.py index d6806813..ce7174da 100644 --- a/mediagoblin/db/migrations.py +++ b/mediagoblin/db/migrations.py @@ -38,7 +38,8 @@ 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, LocalUser, Location) + Privilege, Generator, LocalUser, Location, + Client, RequestToken, AccessToken) from mediagoblin.db.extratypes import JSONEncoded, MutationDict diff --git a/mediagoblin/db/mixin.py b/mediagoblin/db/mixin.py index 07e1fe97..b954ab90 100644 --- a/mediagoblin/db/mixin.py +++ b/mediagoblin/db/mixin.py @@ -451,8 +451,8 @@ class ActivityMixin(object): "audio": _("audio"), "person": _("a person"), } - obj = self.object - target = None if self.target is None else self.target + obj = self.object() + target = None if self.target_id is None else self.target() actor = self.get_actor content = verb_to_content.get(self.verb, None) @@ -470,7 +470,7 @@ class ActivityMixin(object): # Do we want to add a target (indirect object) to content? if target is not None and "targetted" in content: if hasattr(target, "title") and target.title.strip(" "): - target_value = terget.title + target_value = target.title elif target.object_type in object_map: target_value = object_map[target.object_type] else: diff --git a/mediagoblin/db/models.py b/mediagoblin/db/models.py index f1449667..8c8e42e5 100644 --- a/mediagoblin/db/models.py +++ b/mediagoblin/db/models.py @@ -250,9 +250,29 @@ class User(Base, UserMixin): __mapper_args__ = { 'polymorphic_identity': 'user', - 'polymorphic_on': type + 'polymorphic_on': type, } + def delete(self, **kwargs): + """Deletes a User and all related entries/comments/files/...""" + # Collections get deleted by relationships. + + media_entries = MediaEntry.query.filter(MediaEntry.uploader == self.id) + for media in media_entries: + # TODO: Make sure that "MediaEntry.delete()" also deletes + # all related files/Comments + media.delete(del_orphan_tags=False, commit=False) + + # Delete now unused tags + # TODO: import here due to cyclic imports!!! This cries for refactoring + from mediagoblin.db.util import clean_orphan_tags + clean_orphan_tags(commit=False) + + # Delete user, pass through commit=False/True in kwargs + username = self.username + super(User, self).delete(**kwargs) + _log.info('Deleted user "{0}" account'.format(username)) + def has_privilege(self, privilege, allow_admin=True): """ This method checks to make sure a user has all the correct privileges @@ -335,7 +355,7 @@ class LocalUser(User): upload_limit = Column(Integer) __mapper_args__ = { - 'polymorphic_identity': 'user_local' + "polymorphic_identity": "user_local", } ## TODO @@ -349,25 +369,6 @@ class LocalUser(User): 'admin' if self.has_privilege(u'admin') else 'user', self.username) - def delete(self, **kwargs): - """Deletes a User and all related entries/comments/files/...""" - # Collections get deleted by relationships. - - media_entries = MediaEntry.query.filter(MediaEntry.uploader == self.id) - for media in media_entries: - # TODO: Make sure that "MediaEntry.delete()" also deletes - # all related files/Comments - media.delete(del_orphan_tags=False, commit=False) - - # Delete now unused tags - # TODO: import here due to cyclic imports!!! This cries for refactoring - from mediagoblin.db.util import clean_orphan_tags - clean_orphan_tags(commit=False) - - # Delete user, pass through commit=False/True in kwargs - super(User, self).delete(**kwargs) - _log.info('Deleted user "{0}" account'.format(self.username)) - def serialize(self, request): user = { "id": "acct:{0}@{1}".format(self.username, request.host), |