]> git.ipfire.org Git - ipfire.org.git/commitdiff
blog: Add drafts section
authorMichael Tremer <michael.tremer@ipfire.org>
Sat, 1 Sep 2018 14:20:08 +0000 (15:20 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Sat, 1 Sep 2018 14:20:42 +0000 (15:20 +0100)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Makefile.am
src/backend/blog.py
src/templates/blog/drafts.html [new file with mode: 0644]
src/web/__init__.py
src/web/blog.py

index 6ebd321cd05099cbcabc256fb7f251658248b798..3d1ce5a0281d21979c6b21af92e6e647b3aad261 100644 (file)
@@ -113,6 +113,7 @@ templates_blog_DATA = \
        src/templates/blog/author.html \
        src/templates/blog/base.html \
        src/templates/blog/compose.html \
+       src/templates/blog/drafts.html \
        src/templates/blog/feed.xml \
        src/templates/blog/index.html \
        src/templates/blog/post.html \
index fc1f0dc719058dfc2c0f836a879670c143d0b6c1..89a8d5e9914793d1020f60c4ae7d32234853e284 100644 (file)
@@ -57,6 +57,18 @@ class Blog(misc.Object):
                                AND published_at <= NOW() \
                        ORDER BY published_at DESC", year)
 
+       def get_drafts(self, author=None, limit=None):
+               if author:
+                       return self._get_posts("SELECT * FROM blog \
+                               WHERE author_uid = %s \
+                                       AND (published_at IS NULL OR published_at > NOW()) \
+                               ORDER BY COALESCE(updated_at, created_at) DESC LIMIT %s",
+                               author.uid, limit)
+
+               return self._get_posts("SELECT * FROM blog \
+                       WHERE (published_at IS NULL OR published_at > NOW()) \
+                       ORDER BY COALESCE(updated_at, created_at) DESC LIMIT %s", limit)
+
        def search(self, query, limit=None):
                return self._get_posts("SELECT blog.* FROM blog \
                        LEFT JOIN blog_search_index search_index ON blog.id = search_index.post_id \
diff --git a/src/templates/blog/drafts.html b/src/templates/blog/drafts.html
new file mode 100644 (file)
index 0000000..fa8e4ab
--- /dev/null
@@ -0,0 +1,33 @@
+{% extends "base.html" %}
+
+{% block title %}{{ _("My Drafts") }}{% end block %}
+
+{% block main %}
+       <div class="card">
+               <div class="card-body">
+                       <h5>{{ _("My Drafts") }}</h5>
+
+                       {% if drafts %}
+                               {% for post in drafts %}
+                                       <strong class="mb-0">
+                                               <a href="/post/{{ post.slug }}">{{ post.title }}</a>
+                                       </strong>
+
+                                       <p class="text-muted small">
+                                               {% if post.updated_at %}
+                                                       {{ _("Updated %s") % locale.format_date(post.updated_at) }}
+                                               {% else %}
+                                                       {{ _("Created %s") % locale.format_date(post.created_at) }}
+                                               {% end %}
+
+                                               {% if post.published_at %}
+                                                       <span class="badge badge-primary">
+                                                               {{ _("Scheduled to be pushed at %s") % locale.format_date(post.published_at, shorter=True, relative=False) }}
+                                                       </span>
+                                               {% end %}
+                                       </p>
+                               {% end %}
+                       {% end %}
+               </div>
+       </div>
+{% end block %}
index 9e30f4f582b5308cf1fae3bfbc328dcac636906a..7a7ca6f489bdd2ff1189946e16cf0d7a7fca18bc 100644 (file)
@@ -125,6 +125,7 @@ class Application(tornado.web.Application):
                        (r"/", blog.IndexHandler),
                        (r"/authors/(\w+)", blog.AuthorHandler),
                        (r"/compose", blog.ComposeHandler),
+                       (r"/drafts", blog.DraftsHandler),
                        (r"/post/([0-9a-z\-\.]+)", blog.PostHandler),
                        (r"/post/([0-9a-z\-\.]+)/edit", blog.EditHandler),
                        (r"/search", blog.SearchHandler),
index a6b7224bbd5b6b6dc1edfefb3c141e436e870187..679ac0477c696465b5a9e47ca61f96f79d994088 100644 (file)
@@ -60,6 +60,14 @@ class PostHandler(base.BaseHandler):
                self.render("blog/post.html", post=post)
 
 
+class DraftsHandler(base.BaseHandler):
+       @tornado.web.authenticated
+       def get(self):
+               drafts = self.backend.blog.get_drafts(author=self.current_user)
+
+               self.render("blog/drafts.html", drafts=drafts)
+
+
 class SearchHandler(base.BaseHandler):
        def get(self):
                q = self.get_argument("q")