Commit e20125b8f9839180e31ebd7e4e126a7bb27627a2
1 parent
af990045
Exists in
master
and in
1 other branch
- minor adjustments in looks and logs
Showing
4 changed files
with
10 additions
and
7 deletions
Show diff stats
BUGS.md
1 | 1 | |
2 | 2 | # BUGS |
3 | 3 | |
4 | +- on start topic, logs show questionhandler.get() twice. | |
4 | 5 | - generators e correct scripts que durem muito tempo podem bloquear o loop do tornado? |
5 | 6 | - detect questions in questions.yaml without ref -> error ou generate default. |
6 | -- topicos virtuais nao deveriam aparecer. na construção da árvore os sucessores seriam ligados directamente aos predecessores. | |
7 | 7 | - Criar outra estrutura organizada em capítulos (conjuntos de tópicos). Permitir capítulos de capítulos, etc. talvez usar grafos de grafos... |
8 | 8 | - session management. close after inactive time. |
9 | 9 | - generators not working: bcrypt (ver blog) |
... | ... | @@ -11,6 +11,7 @@ |
11 | 11 | |
12 | 12 | # TODO |
13 | 13 | |
14 | +- radio e checkboxes, aceitar numeros como seleccao das opcoes. | |
14 | 15 | - each topic only loads a sample of K questions (max) in random order. |
15 | 16 | - servir imagens/ficheiros. |
16 | 17 | - pertuntas tipo tristate: (sim, não, não sei | ... | ... |
knowledge.py
... | ... | @@ -54,7 +54,7 @@ class StudentKnowledge(object): |
54 | 54 | def unlock_topics(self): |
55 | 55 | # minimum level that the dependencies of a topic must have |
56 | 56 | # for the topic to be unlocked. |
57 | - min_level = 0.2 | |
57 | + min_level = 0.01 | |
58 | 58 | |
59 | 59 | for topic in self.topic_sequence: |
60 | 60 | if topic not in self.state: # if locked |
... | ... | @@ -89,8 +89,9 @@ class StudentKnowledge(object): |
89 | 89 | factory = self.deps.node[topic]['factory'] |
90 | 90 | questionlist = self.deps.node[topic]['questions'] |
91 | 91 | |
92 | - self.questions = [factory[qref].generate() for qref in questionlist] | |
93 | 92 | self.finished_questions = [] |
93 | + self.questions = [factory[qref].generate() for qref in questionlist] | |
94 | + logger.debug(f'Total: {len(self.questions)} questions') | |
94 | 95 | |
95 | 96 | try: |
96 | 97 | self.current_question = self.questions.pop(0) # FIXME crash if empty | ... | ... |
learnapp.py
... | ... | @@ -58,6 +58,8 @@ class LearnApp(object): |
58 | 58 | if bcrypt.checkpw(pw.encode('utf-8'), student.password): |
59 | 59 | if uid in self.online: |
60 | 60 | logger.warning(f'User "{uid}" already logged in, overwriting state') |
61 | + else: | |
62 | + logger.info(f'User "{uid}" logged in successfully') | |
61 | 63 | |
62 | 64 | tt = s.query(StudentTopic).filter(StudentTopic.student_id == uid) |
63 | 65 | state = {t.topic_id: |
... | ... | @@ -71,7 +73,6 @@ class LearnApp(object): |
71 | 73 | 'name': student.name, |
72 | 74 | 'state': StudentKnowledge(self.deps, state=state) |
73 | 75 | } |
74 | - logger.info(f'User "{uid}" logged in successfully') | |
75 | 76 | return True |
76 | 77 | |
77 | 78 | else: | ... | ... |
static/css/topic.css
1 | 1 | .progress { |
2 | 2 | /*position: fixed;*/ |
3 | 3 | top: 0; |
4 | - height: 90px; | |
4 | + height: 85px; | |
5 | 5 | border-radius: 0px; |
6 | 6 | } |
7 | 7 | body { |
8 | 8 | margin: 0; |
9 | 9 | padding-top: 0px; |
10 | - margin-bottom: 90px; /* Margin bottom by footer height */ | |
10 | + margin-bottom: 120px; /* Margin bottom by footer height */ | |
11 | 11 | } |
12 | 12 | |
13 | 13 | .footer { |
14 | 14 | position: absolute; |
15 | 15 | bottom: 0; |
16 | 16 | width: 100%; |
17 | - height: 70px; | |
17 | + height: 90px; | |
18 | 18 | line-height: 60px; |
19 | 19 | /*background-color: #f5f5f5;*/ |
20 | 20 | } | ... | ... |