Commit | Line | Data |
---|---|---|
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 |
17 | import os |
18 | import logging | |
19 | _log = logging.getLogger(__name__) | |
20 | ||
9505f1a3 | 21 | from mediagoblin.media_types import MediaManagerBase |
a590e0ba | 22 | from mediagoblin.media_types.blog.models import Blog, BlogPostData |
9505f1a3 A |
23 | |
24 | from mediagoblin.tools import pluginapi | |
25 | ||
45384c6d | 26 | PLUGIN_DIR = os.path.dirname(__file__) |
511ce0d6 | 27 | MEDIA_TYPE = 'mediagoblin.media_types.blogpost' |
9505f1a3 A |
28 | |
29 | def 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 |
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" | |
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 |
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") | |
95 | if blogs: | |
96 | context['blogs'] = blogs | |
97 | else: | |
98 | context['blogs'] = None | |
99 | return context | |
100 | ||
101 | ||
9505f1a3 A |
102 | hooks = { |
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 |