aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Spaeth <Sebastian@SSpaeth.de>2012-11-28 16:15:46 +0100
committerSebastian Spaeth <Sebastian@SSpaeth.de>2013-01-17 11:48:49 +0100
commit242776e3637e886c510cd39d4d6195932bb973cd (patch)
tree20e1e809cf87feaa959774d2cd427ad0b55b8946
parentfdc34b8ba7465b528c7685be3f24c7d7d6d8748b (diff)
downloadmediagoblin-242776e3637e886c510cd39d4d6195932bb973cd.tar.lz
mediagoblin-242776e3637e886c510cd39d4d6195932bb973cd.tar.xz
mediagoblin-242776e3637e886c510cd39d4d6195932bb973cd.zip
Implement Collection.delete()
Deleting a Collection should automatically delete all containing items. Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
-rw-r--r--mediagoblin/db/models.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/mediagoblin/db/models.py b/mediagoblin/db/models.py
index aeec8aea..e8616404 100644
--- a/mediagoblin/db/models.py
+++ b/mediagoblin/db/models.py
@@ -377,6 +377,10 @@ class MediaComment(Base, MediaCommentMixin):
class Collection(Base, CollectionMixin):
+ """An 'album' or 'set' of media by a user.
+
+ On deletion, contained CollectionItems get automatically reaped via
+ SQL cascade"""
__tablename__ = "core__collections"
id = Column(Integer, primary_key=True)
@@ -386,11 +390,13 @@ class Collection(Base, CollectionMixin):
index=True)
description = Column(UnicodeText)
creator = Column(Integer, ForeignKey(User.id), nullable=False)
+ # TODO: No of items in Collection. Badly named, can we migrate to num_items?
items = Column(Integer, default=0)
get_creator = relationship(User)
def get_collection_items(self, ascending=False):
+ #TODO, is this still needed with self.collection_items being available?
order_col = CollectionItem.position
if not ascending:
order_col = desc(order_col)
@@ -408,7 +414,10 @@ class CollectionItem(Base, CollectionItemMixin):
note = Column(UnicodeText, nullable=True)
added = Column(DateTime, nullable=False, default=datetime.datetime.now)
position = Column(Integer)
- in_collection = relationship("Collection")
+ in_collection = relationship("Collection",
+ backref=backref(
+ "collection_items",
+ cascade="all, delete-orphan"))
get_media_entry = relationship(MediaEntry)