Commit d4fa55fc2eb09dffa1498a46c2897bd7c6f6915d

Authored by Miguel Barão
1 parent 32311fb1
Exists in master and in 1 other branch dev

login and correction are now async

Showing 1 changed file with 17 additions and 12 deletions   Show diff stats
1 #!/usr/bin/env python3 1 #!/usr/bin/env python3
2 2
3 -# base 3 +# python standard library
4 from os import path 4 from os import path
5 import sys 5 import sys
6 -import argparse  
7 -import logging.config  
8 -import json  
9 import base64 6 import base64
10 import uuid 7 import uuid
  8 +import logging.config
  9 +import argparse
11 import mimetypes 10 import mimetypes
12 import signal 11 import signal
  12 +import asyncio
  13 +import json
13 14
14 -# packages 15 +# user installed libraries
15 import tornado.ioloop 16 import tornado.ioloop
16 import tornado.web 17 import tornado.web
17 import tornado.httpserver 18 import tornado.httpserver
18 from tornado import template, gen 19 from tornado import template, gen
19 20
20 -# project  
21 -from tools import load_yaml, md_to_html 21 +# this project
22 from app import App, AppException 22 from app import App, AppException
  23 +from tools import load_yaml, md_to_html
23 24
24 25
25 class WebApplication(tornado.web.Application): 26 class WebApplication(tornado.web.Application):
@@ -69,14 +70,16 @@ class LoginHandler(BaseHandler): @@ -69,14 +70,16 @@ class LoginHandler(BaseHandler):
69 def get(self): 70 def get(self):
70 self.render('login.html', error='') 71 self.render('login.html', error='')
71 72
72 - # @gen.coroutine  
73 - def post(self): 73 + async def post(self):
74 uid = self.get_body_argument('uid') 74 uid = self.get_body_argument('uid')
75 if uid.startswith('l'): # remove prefix 'l' 75 if uid.startswith('l'): # remove prefix 'l'
76 uid = uid[1:] 76 uid = uid[1:]
77 pw = self.get_body_argument('pw') 77 pw = self.get_body_argument('pw')
78 78
79 - if self.testapp.login(uid, pw): 79 + loop = asyncio.get_event_loop()
  80 + login_ok = await loop.run_in_executor(None, self.testapp.login, uid, pw)
  81 +
  82 + if login_ok:
80 self.set_secure_cookie("user", str(uid), expires_days=30) 83 self.set_secure_cookie("user", str(uid), expires_days=30)
81 self.redirect(self.get_argument("next", "/")) 84 self.redirect(self.get_argument("next", "/"))
82 else: 85 else:
@@ -206,7 +209,7 @@ class TestHandler(BaseHandler): @@ -206,7 +209,7 @@ class TestHandler(BaseHandler):
206 209
207 # POST 210 # POST
208 @tornado.web.authenticated 211 @tornado.web.authenticated
209 - def post(self): 212 + async def post(self):
210 uid = self.current_user 213 uid = self.current_user
211 214
212 # self.request.arguments = {'answered-0': [b'on'], '0': [b'13.45']} 215 # self.request.arguments = {'answered-0': [b'on'], '0': [b'13.45']}
@@ -229,7 +232,9 @@ class TestHandler(BaseHandler): @@ -229,7 +232,9 @@ class TestHandler(BaseHandler):
229 'numeric-interval'): 232 'numeric-interval'):
230 ans[i] = ans[i][0] 233 ans[i] = ans[i][0]
231 234
232 - self.testapp.correct_test(uid, ans) 235 + loop = asyncio.get_event_loop()
  236 + await loop.run_in_executor(None, self.testapp.correct_test, uid, ans)
  237 +
233 self.testapp.logout(uid) 238 self.testapp.logout(uid)
234 self.clear_cookie('user') 239 self.clear_cookie('user')
235 240