X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=mediagoblin%2Fmedia_types%2Fblog%2Fmodels.py;h=0e1ddf974350f3f72ce724655a63a167b76a5f85;hb=90779509bbe65ab56dd137ffb9d5019f498e79e1;hp=a9288c00abc53df2c8a86a52ff2b54361d57163a;hpb=922599990d07d4ab1eb34cd57d59a4ced6882884;p=mediagoblin.git diff --git a/mediagoblin/media_types/blog/models.py b/mediagoblin/media_types/blog/models.py index a9288c00..0e1ddf97 100644 --- a/mediagoblin/media_types/blog/models.py +++ b/mediagoblin/media_types/blog/models.py @@ -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"