Commit c2ba471528e12fcb36bffe11756caac1e2f982c9
1 parent
a1b9de76
Exists in
master
and in
1 other branch
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
BUGS.md
| 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. |
learnapp.py
| @@ -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 |
serve.py
| @@ -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: |