1 #GNU MediaGoblin -- federated, autonomous media hosting
2 # Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
4 # This program is free software: you can redistribute it and/or modify
5 # it under the terms of the GNU Affero General Public License as published by
6 # the Free Software Foundation, either version 3 of the License, or
7 # (at your option) any later version.
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU Affero General Public License for more details.
14 # You should have received a copy of the GNU Affero General Public License
15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
19 _log
= logging
.getLogger(__name__
)
21 from mediagoblin
.media_types
import MediaManagerBase
22 from mediagoblin
.media_types
.blog
.models
import Blog
, BlogPostData
24 from mediagoblin
.tools
import pluginapi
26 PLUGIN_DIR
= os
.path
.dirname(__file__
)
27 MEDIA_TYPE
= 'mediagoblin.media_types.blogpost'
30 config
= pluginapi
.get_config(MEDIA_TYPE
)
31 _log
.info("setting up blog media type plugin.")
35 ('mediagoblin.media_types.blog.create',
36 '/u/<string:user>/b/create/',
37 'mediagoblin.media_types.blog.views:blog_edit'
40 ('mediagoblin.media_types.blog.edit',
41 '/u/<string:user>/b/<string:blog_slug>/edit/',
42 'mediagoblin.media_types.blog.views:blog_edit'
45 ('mediagoblin.media_types.blog.blogpost.create',
46 '/u/<string:user>/b/<string:blog_slug>/p/create/',
47 'mediagoblin.media_types.blog.views:blogpost_create'
50 ('mediagoblin.media_types.blog.blogpost.edit',
51 '/u/<string:user>/b/<string:blog_slug>/p/<string:blog_post_slug>/edit/',
52 'mediagoblin.media_types.blog.views:blogpost_edit'
54 #blog collection dashboard in case of multiple blogs
55 ('mediagoblin.media_types.blog.blog_admin_dashboard',
56 '/u/<string:user>/b/dashboard/',
57 'mediagoblin.media_types.blog.views:blog_dashboard'
60 ('mediagoblin.media_types.blog.blog-dashboard',
61 '/u/<string:user>/b/<string:blog_slug>/dashboard/',
62 'mediagoblin.media_types.blog.views:blog_dashboard'
64 #blog post listing view
65 ('mediagoblin.media_types.blog.blog_post_listing',
66 '/u/<string:user>/b/<string:blog_slug>/',
67 'mediagoblin.media_types.blog.views:blog_post_listing'
70 ('mediagoblin.media_types.blog.blogpost_draft_view',
71 '/u/<string:user>/b/<string:blog_slug>/p/<string:blog_post_slug>/draft/',
72 'mediagoblin.media_types.blog.views:draft_view')
76 pluginapi
.register_routes(routes
)
77 pluginapi
.register_template_path(os
.path
.join(PLUGIN_DIR
, 'templates'))
80 class BlogPostMediaManager(MediaManagerBase
):
81 human_readable
= "Blog Post"
82 display_template
= "mediagoblin/media_displays/blogpost.html"
83 default_thumb
= "images/media_thumbs/blogpost.jpg"
85 def get_blog_by_blogpost(self
):
86 blog_post_data
= BlogPostData
.query
.filter_by(media_entry
=self
.entry
.id).first()
87 blog
= Blog
.query
.filter_by(id=blog_post_data
.blog
).first()
91 'setup': setup_plugin
,
92 ('media_manager', MEDIA_TYPE
): lambda: BlogPostMediaManager
,