Blog media type initial migration.
[mediagoblin.git] / mediagoblin / media_types / blog / models.py
index a9288c00abc53df2c8a86a52ff2b54361d57163a..0e1ddf974350f3f72ce724655a63a167b76a5f85 100644 (file)
@@ -17,6 +17,7 @@
 import datetime
 
 from mediagoblin.db.base import Base
+from mediagoblin.db.base import Session
 from mediagoblin.db.models import Collection, User, MediaEntry
 from mediagoblin.db.mixin import GenerateSlugMixin
 
@@ -33,6 +34,7 @@ class BlogMixin(GenerateSlugMixin):
     def check_slug_used(self, slug):
         return check_blog_slug_used(self.author, slug, self.id)
 
+
 class Blog(Base, BlogMixin):
     __tablename__ = "mediatype__blogs"
     id = Column(Integer, primary_key=True)
@@ -42,6 +44,27 @@ class Blog(Base, BlogMixin):
     created = Column(DateTime, nullable=False, default=datetime.datetime.now, index=True)
     slug = Column(Unicode)
 
+    @property
+    def slug_or_id(self):
+        return (self.slug or u'blog_{0}'.format(self.id))
+    def get_all_blog_posts(self, state=None):
+        blog_posts = Session.query(MediaEntry).join(BlogPostData)\
+        .filter(BlogPostData.blog == self.id)
+        if state is not None:
+            blog_posts = blog_posts.filter(MediaEntry.state==state)
+        return blog_posts
+    
+    def delete(self, **kwargs):
+        all_posts = self.get_all_blog_posts()
+        for post in all_posts:
+            post.delete(del_orphan_tags=False, commit=False)
+        from mediagoblin.db.util import clean_orphan_tags
+        clean_orphan_tags(commit=False)
+        super(Blog, self).delete(**kwargs)
+        
+        
+    
     
 BACKREF_NAME = "blogpost__media_data"