btbytes / teh

minimalist blog app using Google App Engine

This URL has Read+Write access

teh / webapp.py
100644 82 lines (66 sloc) 2.309 kb
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
#!/usr/bin/env python
# encoding: utf-8
"""
webapp.py
 
entry point for teh blog app
Copyright (c) 2009 Pradeep Gowda.
"""
import wsgiref.handlers
 
from google.appengine.ext import webapp
from google.appengine.ext import db
from google.appengine.ext.webapp import template
from google.appengine.api import users
 
import os
from lib import utils, markdown2, BeautifulSoup
from utils import TehRequestHandler, administrator, Config
import blog
import admin
 
 
class LoginHandler(TehRequestHandler):
    def get(self):
        user = users.get_current_user()
        if not user:
            self.redirect(users.create_login_url(self.request.uri))
        else:
            self.redirect('/')
 
class LogoutHandler(TehRequestHandler):
    def get(self):
        user = users.get_current_user()
        if user:
            self.redirect(users.create_logout_url('/'))
        else:
            self.redirect('/')
 
class HomePageHandler(TehRequestHandler):
    def get(self):
        entries = blog.Entry.all()
        entries.filter("static =", False)
        entries.order('-published').fetch(limit=5)
        self.render("templates/home.html", entries=entries)
 
        
def main():
    application = webapp.WSGIApplication([
        (r"/", HomePageHandler),
        (r"/login", LoginHandler),
        (r"/logout", LogoutHandler),
 
        (r"/entries", blog.EntryIndexHandler),
        (r"/feed", blog.FeedHandler),
        (r"/entry/([^/]+)", blog.EntryHandler),
        (r"/entry/([^/]+)/edit", blog.NewEntryHandler),
        (r"/entry/([^/]+)/del", blog.EntryDeleteHandler),
        (r"/([^/]+)/edit", blog.NewEntryHandler),
        (r"/([^/]+)/del", blog.EntryDeleteHandler),
        (r"/topic/([^/]+)", blog.TagHandler),
        
        (r"/admin", admin.AdminHandler),
        (r"/admin/new", blog.NewEntryHandler),
        (r"/admin/config", admin.ConfigHandler),
        (r"/admin/entrylist", admin.EntryListHandler),
 
       # (r"/shooin/([^/]+)", shooin.ShooinHandler),
        (r"/([^/]+)", blog.PageHandler),
        ], debug=True)
    
    config = Config.all()
    if config.count() > 0:
        config = config.fetch(1)[0]
    else:
        config1 = Config(title="TEH Blog")
        config1.put()
       
    wsgiref.handlers.CGIHandler().run(application)
 
if __name__ == "__main__":
    main()