今回のソース

今回変更された main.py と main.html です。

main.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import wsgiref.handlers
import os
import time
import cgi
import datetime
import re
import urllib
import hashlib
from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext import db
from google.appengine.ext.webapp import template
article_limit = 10	#
article_order = 'DESC'	# 'ASC' 'DESC'
article_start = 0
class Article(db.Model):
author = db.StringProperty(multiline=False)
title = db.StringProperty(multiline=False)
body = db.StringProperty(multiline=True)
date = db.DateTimeProperty(auto_now_add=True)
akey = db.StringProperty(multiline=False)
class PostHandler(webapp.RequestHandler):
def post(self):
article = Article()
article.body = self.request.get('body').strip()
delact = self.request.get('delete').strip()
if article.body != "":
article.body = re.sub("\n","<br />", article.body)
article.author = self.request.get('author')
article.akey = self.request.get('akey')
if self.request.get('title').strip() != "":
article.title = self.request.get('title').strip()
else:
article.title = ''
article.put()
self.response.out.write("redir")
elif delact != "":
dellist = self.request.get_all('delkey')
dlsiz = len(dellist)
for dkey in dellist:
query = db.GqlQuery ( "SELECT * FROM Article WHERE akey = :1", dkey )
if query.count() >= 1:
for article in query:
article.delete()
self.redirect('/')
class MainHandler(webapp.RequestHandler):
def get(self):
if users.get_current_user():
articles = db.GqlQuery ( "SELECT * FROM Article ORDER BY date " + str(article_order) + " LIMIT " + str(article_start) + "," + str(article_limit) )
akey = hashlib.md5(time.strftime("%Y%m%d%H%M%S", time.localtime(time.time()))).hexdigest()
url = users.create_logout_url(self.request.uri)
username = users.get_current_user().nickname()
if users.is_current_user_admin() == True :
administrator = True
else:
administrator = False
template_values = {
'articles': articles,
'author': username,
'akey' : akey,
'administrator' : administrator,
'url': url
}
path = os.path.join(os.path.dirname(__file__), 'main.html')
self.response.out.write(template.render(path, template_values))
else:
url = users.create_login_url(self.request.uri)
template_values = {
'url': url
}
path = os.path.join(os.path.dirname(__file__), 'notlogin.html')
self.response.out.write(template.render(path, template_values))
def main():
application = webapp.WSGIApplication([('/', MainHandler),
('/post', PostHandler)
],
debug=True)
wsgiref.handlers.CGIHandler().run(application)
if __name__ == '__main__':
main()
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja-JP" lang="ja-JP">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<a href="{{ url }}">ログアウト</a>{% if administrator %} / 管理者モード {% endif %}
<hr />
<form method="POST" action="/post">
{% for article in articles %}
{% if article.body %}
{{ article.title|default:"(無題)" }} / 投稿者 : {{ article.author }}<br />
{{ article.date|date:"Y/m/d H:i:s" }}  {% if administrator %}/ <input type="checkbox" name="delkey" value="{{article.akey}}">削除{% endif %}<br />
{{ article.body }}<br />
<hr />
{% endif %}
{% endfor %}
タイトル:<input type="text" name="title"><br />
名前:{{ author }}<br />
本文:<br />
<textarea name="body" cols="50" rows="5"></textarea><br />
<input type="hidden" value="{{author}}" name="author">
<input type="hidden" value="{{akey}}" name="akey">
<input type="submit" value="投稿/reload" name="post">&#160;&#160;&#160;&#160;&#160;<input type="reset" value="書き直し">
{% if administrator %}
<hr />
<input type="password" name="dpasswd"><input type="submit" value="削除" name="delete">
{% endif %}
</form>
</body>
</html>
広告

About sato_c

小学生の頃にインベーダーゲームやPC-8001やApple][といったものを知ってしまい、それ以降ずーっとゲーム好き。でも、あんまりうまくはありません。 仕事は当初はゲーム関係のプログラムやサウンドをやっていましたが、WEB関係を通ったあと、遊技機関係のプログラムやサウンドをやっています。あまり節操がないのか。 現在はJavaですてきなコードを書けるように勉強中。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。