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
|
import sys
sys.path.append('../..')
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import scoped_session, sessionmaker
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
from social.apps.tornado_app.models import init_social
from social.apps.tornado_app.routes import SOCIAL_AUTH_ROUTES
import settings
engine = create_engine('sqlite:///test.db', echo=False)
session = scoped_session(sessionmaker(bind=engine))
Base = declarative_base()
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.render('templates/home.html')
class DoneHandler(tornado.web.RequestHandler):
def get(self, *args, **kwargs):
from models import User
user_id = self.get_secure_cookie('user_id')
user = session.query(User).get(int(user_id))
self.render('templates/done.html', user=user)
class LogoutHandler(tornado.web.RequestHandler):
def get(self):
self.request.redirect('/')
tornado.options.parse_command_line()
tornado_settings = dict((k, getattr(settings, k)) for k in dir(settings)
if not k.startswith('__'))
application = tornado.web.Application(SOCIAL_AUTH_ROUTES + [
(r'/', MainHandler),
(r'/done/', DoneHandler),
(r'/logout/', LogoutHandler),
], cookie_secret='adb528da-20bb-4386-8eaf-09f041b569e0',
**tornado_settings)
def main():
init_social(Base, session, tornado_settings)
http_server = tornado.httpserver.HTTPServer(application)
http_server.listen(8000)
tornado.ioloop.IOLoop.instance().start()
def syncdb():
from models import user_syncdb
init_social(Base, session, tornado_settings)
Base.metadata.create_all(engine)
user_syncdb()
if __name__ == '__main__':
if len(sys.argv) > 1 and sys.argv[1] == 'syncdb':
syncdb()
else:
main()
|