Use cascade for comment deletion.

Also use the relationship for getting the comments on a
MediaEntry.
This commit is contained in:
Elrond 2013-03-09 12:24:15 +01:00
parent 25067d8110
commit b98882e16e

View File

@ -172,8 +172,7 @@ class MediaEntry(Base, MediaEntryMixin):
order_col = MediaComment.created
if not ascending:
order_col = desc(order_col)
return MediaComment.query.filter_by(
media_entry=self.id).order_by(order_col)
return self.all_comments.order_by(order_col)
def url_to_prev(self, urlgen):
"""get the next 'newer' entry by this user"""
@ -238,9 +237,7 @@ class MediaEntry(Base, MediaEntryMixin):
:param del_orphan_tags: True/false if we delete unused Tags too
:param commit: True/False if this should end the db transaction"""
# User's CollectionItems are automatically deleted via "cascade".
# Delete all the associated comments
for comment in self.get_comments():
comment.delete(commit=False)
# Comments on this Media are deleted by cascade, hopefully.
# Delete all related files/attachments
try:
@ -385,13 +382,22 @@ class MediaComment(Base, MediaCommentMixin):
content = Column(UnicodeText, nullable=False)
# Cascade: Comments are owned by their creator. So do the full thing.
# lazy=dynamic: People might post a *lot* of comments, so make
# the "posted_comments" a query-like thing.
# lazy=dynamic: People might post a *lot* of comments,
# so make the "posted_comments" a query-like thing.
get_author = relationship(User,
backref=backref("posted_comments",
lazy="dynamic",
cascade="all, delete-orphan"))
# Cascade: Comments are somewhat owned by their MediaEntry.
# So do the full thing.
# lazy=dynamic: MediaEntries might have many comments,
# so make the "all_comments" a query-like thing.
get_media_entry = relationship(MediaEntry,
backref=backref("all_comments",
lazy="dynamic",
cascade="all, delete-orphan"))
class Collection(Base, CollectionMixin):
"""An 'album' or 'set' of media by a user.