ブログに予約投稿機能を実装

月曜日, 1月 24th, 2011 by

python-blog-systemに予約投稿機能を実装しました。

記事一覧表示

1
2
3
4
5
6
    entries = Entry.all().order("-datetime")
    if not users.is_current_user_admin():
      entries = entries.filter("datetime <", datetime.datetime.now())
    entries = entries.fetch(step + 1, page * step)
    for entry in entries[:step]:
      printEntry(self, entry)

entry.datetime(記事の公開日時)が、現在時刻よりも古いものだけを取り出すようにしました。RSSも同様の修正をしています。

記事投稿

フォームの表示では、entryのdatetime属性を、フォーマットして表示するようにしました。

1
2
3
4
5
6
7
    self.write(u"""<form method="post" action="/post/%(key)s"><input type="hidden" name="phpMyAdmin" value="cfc2644bd9c947213a0141747c2608b0" />
<h2>タイトル</h2><input type="text" name="title" value="%(title)s" style="width:400px"/>
<h2>本文</h2><textarea name="body" style="width:400px;height:300px;">%(body)s</textarea>
<h2>タグ</h2><input type="text" name="tags" value="%(tags)s" style="width:400px"/>
<h2>公開日時</h2><input type="text" name="datetime" value="%(datetime)s"style="width:400px;">
<h2>画像 [<a href="/uploader?phpMyAdmin=cfc2644bd9c947213a0141747c2608b0" target="_blank">uploader</a>]</h2>
<div>%(deleteButton)s<input type="submit" value="submit"/></div></form>"""
% {"key" : key, "title" : entry.title, "body" : entry.body, "tags" : entry.tagStr(),"datetime" : entry.datetime.strftime('%Y-%m-%d %H:%M:%S'), "deleteButton":deleteButton})

保存処理では、datetime.datetime.strptimeを使って、文字列をdatetimeに変換するようにしました。

1
2
      entry.datetime = datetime.datetime.strptime(self.request.get("datetime"), "%Y-%m-%d %H:%M:%S")
      entry.put()

まとめ

ほんの数行のソースコードの追加で日時指定での記事公開を実装できました。管理者向けの例外処理を含めて、ソースコードの増分は、たったの7行でした。

Facebook comments:

comments

Leave a Reply


Get Adobe Flash player
single