diff --git a/serve.py b/serve.py index 2238540..6562bf1 100755 --- a/serve.py +++ b/serve.py @@ -1,25 +1,26 @@ #!/usr/bin/env python3 -# base +# python standard library from os import path import sys -import argparse -import logging.config -import json import base64 import uuid +import logging.config +import argparse import mimetypes import signal +import asyncio +import json -# packages +# user installed libraries import tornado.ioloop import tornado.web import tornado.httpserver from tornado import template, gen -# project -from tools import load_yaml, md_to_html +# this project from app import App, AppException +from tools import load_yaml, md_to_html class WebApplication(tornado.web.Application): @@ -69,14 +70,16 @@ class LoginHandler(BaseHandler): def get(self): self.render('login.html', error='') - # @gen.coroutine - def post(self): + async def post(self): uid = self.get_body_argument('uid') if uid.startswith('l'): # remove prefix 'l' uid = uid[1:] pw = self.get_body_argument('pw') - if self.testapp.login(uid, pw): + loop = asyncio.get_event_loop() + login_ok = await loop.run_in_executor(None, self.testapp.login, uid, pw) + + if login_ok: self.set_secure_cookie("user", str(uid), expires_days=30) self.redirect(self.get_argument("next", "/")) else: @@ -206,7 +209,7 @@ class TestHandler(BaseHandler): # POST @tornado.web.authenticated - def post(self): + async def post(self): uid = self.current_user # self.request.arguments = {'answered-0': [b'on'], '0': [b'13.45']} @@ -229,7 +232,9 @@ class TestHandler(BaseHandler): 'numeric-interval'): ans[i] = ans[i][0] - self.testapp.correct_test(uid, ans) + loop = asyncio.get_event_loop() + await loop.run_in_executor(None, self.testapp.correct_test, uid, ans) + self.testapp.logout(uid) self.clear_cookie('user') -- libgit2 0.21.2