junoblog.py

Wed Jul 22 02:46:23 2009 +0900

author
hattori@www.hexacosa.net
date
Wed Jul 22 02:46:23 2009 +0900
changeset 3
0ff9f24a8369
parent 2
296b919d523f
permissions
-rw-r--r--

fixed db column type

     1 # -*- coding:utf-8 -*-
     2 from juno import get, post, find, run, template, init, model, redirect
     3 import time
     5 __version__ = '0.0.2'
     6 __author__ = 'Hideo Hattori'
     8 CODEC = 'utf-8'
    10 init({'dev_port': 8080,
    11       'template_lib': 'jinja2',
    12       'db_location': 'juno-blog.db',
    13       'use_sessions': True,
    14       'use_debugger': True})
    16 User = model('User', name = 'string',
    17                      title = 'unicode',
    18                      password = 'string')
    20 Blog = model('Blog', name = 'string',
    21                      title = 'unicode',
    22                      date = 'string',
    23                      text = 'unicodetext')
    25 @get('/')
    26 def home(web):
    27     users = find(User).all()
    28     template('index.html', {'users': [ u for u in users ],
    29              'login': web.session.has_key('name')})
    31 @post('/login/')
    32 def login(web):
    33     name = web.input('name')
    34     password = web.input('password')
    35     exist = User.find().filter(User.name==name).all()
    36     if 1 == len(exist) and exist[0].password == password:
    37         web.session['name'] = name
    38         web.session.save()
    39     template('login.html', {'user': name, 'exist': len(exist)})
    41 @post('/useradd/')
    42 def useradd(web):
    43     name = web.input('name')
    44     password = web.input('password')
    45     title = web.input('title').decode(CODEC)
    46     exist = User.find().filter(User.name==name)
    47     if exist.count():
    48         template('index.html', {})
    49         return
    50     user = User(name=name, title=title, password=password)
    51     user.add().save()
    52     web.session['name'] = name
    53     web.session.save()
    54     redirect('/blog/%s' % name)
    56 @get('/logout/')
    57 def logout(web):
    58     if web.session.has_key('name') == True:
    59         name = web.session['name']
    60         web.session.delete()
    61     else:
    62         redirect('/')
    63         return
    64     template('logout.html', {'user': {'name': name}})
    66 @get('/blog/:name/')
    67 def blog(web, name):
    68     user = User.find().filter(User.name==name).all()[0]
    69     blogs = Blog.find().filter(Blog.name==name).all()
    70     blogs = [ b for b in blogs if b.name == name ]
    71     login = False
    72     if web.session.has_key('name') == True:
    73         if web.session['name'] == name:
    74             login = True
    75     template('blog.html', {'user': user, 'blogs': blogs, 'login': login})
    77 @post('/blogpost/:name/')
    78 def postblog(web, name):
    79     title = web.input('title').decode(CODEC)
    80     text = web.input('pagetext').decode(CODEC)
    81     date = time.ctime()
    82     b = Blog(name=name, title=title, text=text, date=date)
    83     b.add().save()
    84     blogs = find(Blog).all()
    85     blogs = [ b for b in blogs if b.name == name ]
    86     template('blog.html', {'user': {'name': name, 'title': title},
    87                            'blogs': blogs})
    89 if __name__ == '__main__':
    90     run()

mercurial