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'))
78 pluginapi
.register_template_hooks({"user_profile": "mediagoblin/blog/url_to_blogs_dashboard.html"
82 class BlogPostMediaManager(MediaManagerBase
):
83 human_readable
= "Blog Post"
84 display_template
= "mediagoblin/media_displays/blogpost.html"
85 default_thumb
= "images/media_thumbs/blogpost.jpg"
87 def get_blog_by_blogpost(self
):
88 blog_post_data
= BlogPostData
.query
.filter_by(media_entry
=self
.entry
.id).first()
89 blog
= Blog
.query
.filter_by(id=blog_post_data
.blog
).first()
92 def add_to_user_home_context(context
):
93 blogs
= context
['request'].db
.Blog
.query
.filter_by(author
=context
['user'].id)
94 _log
.info("blah blah blah")
96 context
['blogs'] = blogs
98 context
['blogs'] = None
103 'setup': setup_plugin
,
104 ('media_manager', MEDIA_TYPE
): lambda: BlogPostMediaManager
,
105 # Inject blog context on user profile page
106 ("mediagoblin.user_pages.user_home",
107 "mediagoblin/user_pages/user.html"): add_to_user_home_context