Commit c2ba471528e12fcb36bffe11756caac1e2f982c9

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

start topic is now async. this is important because a set of questions is genera…

…ted at this point. maybe questions should be generated in parallel?
Showing 3 changed files with 10 additions and 4 deletions   Show diff stats
1 1
2 # BUGS 2 # BUGS
3 3
  4 +- SQLAlchemy error (rollback em accao no final de um topico):
  5 + Users/mjsb/Library/Python/3.7/lib/python/site-packages/sqlalchemy/sql/crud.py:700: SAWarning: Column 'studenttopic.student_id' is marked as a member of the primary key for table 'studenttopic', but has no Python-side or server-side default generator indicated, nor does it indicate 'autoincrement=True' or 'nullable=True', and no explicit value is passed. Primary key columns typically may not store NULL. Note that as of SQLAlchemy 1.1, 'autoincrement=True' must be indicated explicitly for composite (e.g. multicolumn) primary keys if AUTO_INCREMENT/SERIAL/IDENTITY behavior is expected for one of the columns in the primary key. CREATE TABLE statements are impacted by this change as well on most backends.
  6 + util.warn(msg)
  7 +
4 - quando a pergunta devolve comments, este é apresentado, mas fica persistente nas tentativas seguintes. devia ser limpo apos a segunda submissao. 8 - quando a pergunta devolve comments, este é apresentado, mas fica persistente nas tentativas seguintes. devia ser limpo apos a segunda submissao.
5 - a opcao max_tries na especificacao das perguntas é cumbersome... usar antes tries? 9 - a opcao max_tries na especificacao das perguntas é cumbersome... usar antes tries?
6 - tabelas nas perguntas radio/checkbox não ocupam todo o espaço como em question. 10 - tabelas nas perguntas radio/checkbox não ocupam todo o espaço como em question.
@@ -195,9 +195,11 @@ class LearnApp(object): @@ -195,9 +195,11 @@ class LearnApp(object):
195 # ------------------------------------------------------------------------ 195 # ------------------------------------------------------------------------
196 # Start new topic 196 # Start new topic
197 # ------------------------------------------------------------------------ 197 # ------------------------------------------------------------------------
198 - def start_topic(self, uid, topic): 198 + async def start_topic(self, uid, topic):
  199 + loop = asyncio.get_running_loop()
199 try: 200 try:
200 - self.online[uid]['state'].init_topic(topic) 201 + await loop.run_in_executor(None, self.online[uid]['state'].init_topic, topic)
  202 + # self.online[uid]['state'].init_topic(topic)
201 except KeyError as e: 203 except KeyError as e:
202 logger.warning(f'User "{uid}" tried to open nonexistent topic: "{topic}"') 204 logger.warning(f'User "{uid}" tried to open nonexistent topic: "{topic}"')
203 raise e 205 raise e
@@ -146,11 +146,11 @@ class RootHandler(BaseHandler): @@ -146,11 +146,11 @@ class RootHandler(BaseHandler):
146 # ---------------------------------------------------------------------------- 146 # ----------------------------------------------------------------------------
147 class TopicHandler(BaseHandler): 147 class TopicHandler(BaseHandler):
148 @tornado.web.authenticated 148 @tornado.web.authenticated
149 - def get(self, topic): 149 + async def get(self, topic):
150 uid = self.current_user 150 uid = self.current_user
151 151
152 try: 152 try:
153 - self.learn.start_topic(uid, topic) 153 + await self.learn.start_topic(uid, topic)
154 except KeyError: 154 except KeyError:
155 self.redirect('/') 155 self.redirect('/')
156 else: 156 else: