Merge branch 'master' of git://gitorious.org/mediagoblin/mediagoblin
[mediagoblin.git] / mediagoblin / media_types / blog / __init__.py
1 #GNU MediaGoblin -- federated, autonomous media hosting
2 # Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
3 #
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.
8 #
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.
13 #
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/>.
16
17 import os
18 import logging
19 _log = logging.getLogger(__name__)
20
21 from mediagoblin.media_types import MediaManagerBase
22 from mediagoblin.media_types.blog.models import Blog, BlogPostData
23
24 from mediagoblin.tools import pluginapi
25
26 PLUGIN_DIR = os.path.dirname(__file__)
27 MEDIA_TYPE = 'mediagoblin.media_types.blogpost'
28
29 def setup_plugin():
30 config = pluginapi.get_config(MEDIA_TYPE)
31 _log.info("setting up blog media type plugin.")
32
33 routes = [
34 #blog_create
35 ('mediagoblin.media_types.blog.create',
36 '/u/<string:user>/b/create/',
37 'mediagoblin.media_types.blog.views:blog_edit'
38 ),
39 #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'
43 ),
44 #blog post create
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'
48 ),
49 #blog post edit
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'
53 ),
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'
58 ),
59 #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'
63 ),
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'
68 ),
69 #blog post draft view
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')
73 ]
74
75
76 pluginapi.register_routes(routes)
77 pluginapi.register_template_path(os.path.join(PLUGIN_DIR, 'templates'))
78
79
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"
84
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()
88 return blog
89
90 hooks = {
91 'setup': setup_plugin,
92 ('media_manager', MEDIA_TYPE): lambda: BlogPostMediaManager,
93 }
94
95
96
97
98