Capitalize first letter of tags
[mediagoblin.git] / mediagoblin / media_types / blog / __init__.py
CommitLineData
9505f1a3
A
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
45384c6d
A
17import os
18import logging
19_log = logging.getLogger(__name__)
20
9505f1a3 21from mediagoblin.media_types import MediaManagerBase
a590e0ba 22from mediagoblin.media_types.blog.models import Blog, BlogPostData
9505f1a3
A
23
24from mediagoblin.tools import pluginapi
25
45384c6d 26PLUGIN_DIR = os.path.dirname(__file__)
511ce0d6 27MEDIA_TYPE = 'mediagoblin.media_types.blogpost'
9505f1a3
A
28
29def setup_plugin():
30 config = pluginapi.get_config(MEDIA_TYPE)
45384c6d
A
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 ),
377800e7
AM
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
45384c6d 60 ('mediagoblin.media_types.blog.blog-dashboard',
377800e7 61 '/u/<string:user>/b/<string:blog_slug>/dashboard/',
45384c6d
A
62 'mediagoblin.media_types.blog.views:blog_dashboard'
63 ),
64 #blog post listing view
65 ('mediagoblin.media_types.blog.blog_post_listing',
3a971ef7 66 '/u/<string:user>/b/<string:blog_slug>/',
45384c6d
A
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'))
9ad6454e
AM
78 pluginapi.register_template_hooks({"user_profile": "mediagoblin/blog/url_to_blogs_dashboard.html"
79 })
45384c6d
A
80
81
9505f1a3
A
82class BlogPostMediaManager(MediaManagerBase):
83 human_readable = "Blog Post"
84 display_template = "mediagoblin/media_displays/blogpost.html"
85 default_thumb = "images/media_thumbs/blogpost.jpg"
86
a590e0ba
A
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()
90 return blog
91
9ad6454e
AM
92def 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")
95 if blogs:
96 context['blogs'] = blogs
97 else:
98 context['blogs'] = None
99 return context
100
101
9505f1a3
A
102hooks = {
103 'setup': setup_plugin,
9505f1a3 104 ('media_manager', MEDIA_TYPE): lambda: BlogPostMediaManager,
9ad6454e
AM
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
9505f1a3
A
108}
109
110
111
112
113