diff options
Diffstat (limited to 'mediagoblin/db/models.py')
-rw-r--r-- | mediagoblin/db/models.py | 43 |
1 files changed, 22 insertions, 21 deletions
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), |