/
blog.py
99 lines (93 loc) · 2.71 KB
/
blog.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import web
import model
import log
urls = (
'/','Index',
'/view/(/d+)','View',
'/new','New',
'/delete/(/d+)','Delete',
'/edit/(/d+)','Edit',
'/login','Login',
'/logout','Logout',
)
app = web.application(urls,globals())
log =log.Log()
t_globals = {
'datestr': web.datestr,
'cookie' :web.cookies,
}
render = web.template.render('templates',base='base',globals=t_globals)
login = web.form.Form(
web.form.Textbox('username'),
web.form.Password('password'),
web.form.Button('login')
)
class Index:
def GET(self):
login_form=login()
posts = model.get_posts()
return render.index(posts,login_form)
def POST(self):
login_form = login()
if login_form.validates():
if login_form.d.username == 'admin' and login_form.d.password == 'admin':
web.setcookie('username',login_form.d.username)
raise web.seeother('/')
class View:
def GET(self,id):
print 'view...get'
post = model.get_post(int(id))
print 'post is', post
return render.view(post)
class New:
form = web.form.Form(
web.form.Textbox('title',
web.form.notnull,
size=30,
description='Post title:'),
web.form.Textarea('content',
web.form.notnull,
row = 30,
cols=80,
description = 'Post content:'),
web.form.Button('Post entry'),
)
def GET(self):
form = self.form()
log.logd('New','get...')
print 'New--get'
return render.new(form)
def POST(self):
form = self.form()
log.logd('New','post...')
if not form.validates():
log.logd('New','not validates()...')
return render.new(form)
model.new_post(form.d.title,form.d.content)
raise web.seeother('/')
class Delete:
def POST(self,id):
model.delete_post(int(id))
raise web.seeother('/')
class Edit:
def GET(self,id):
post = model.get_post(int(id))
form = New.form()
form.fill(post)
return render.edit(post,form)
def POST(self,id):
form = New.form()
post = model.get_post(int(id))
if not form.validates():
return render.edit(post,form)
model.update_post(int(id),form.d.title,form.d.content)
raise web.seeother('/')
class Logout:
def GET(self):
web.setcookie('username','',expires=-1)
raise web.seeother('/')
def notfound():
return web.notfound('Sorry, the page you are looking for was not found')
app.notfound = notfound
if __name__ == '__main__':
app.run()