- -
- -diff --git a/config/logger-debug.yaml b/config/logger-debug.yaml index 77a6193..9531d88 100644 --- a/config/logger-debug.yaml +++ b/config/logger-debug.yaml @@ -5,7 +5,7 @@ formatters: void: format: '' standard: - format: '%(asctime)s | %(levelname)-8s | %(name)-8s | %(message)s' + format: '%(asctime)s | %(levelname)-9s | %(name)-10s | %(message)s' handlers: default: diff --git a/knowledge.py b/knowledge.py index 3c13d34..051ed42 100644 --- a/knowledge.py +++ b/knowledge.py @@ -35,7 +35,6 @@ class StudentKnowledge(object): dt = now - s['date'] s['level'] *= 0.975 ** dt.days - # compute recommended sequence of topics ['a', 'b', ...] self.topic_sequence = list(nx.topological_sort(self.deps)) @@ -60,10 +59,27 @@ class StudentKnowledge(object): # ------------------------------------------------------------------------ - # Recommends a topic to practice/learn from the state + # Recommends a topic to practice/learn from the state. # ------------------------------------------------------------------------ - def recommend_topic(self): - pass # FIXME + def recommended_topic(self): + return min(self.state.items(), key=lambda x: x[1])[0] + + + # if not topic: + # for topic in self.topic_sequence: + # unlocked = topic in self.state + # needs_work = unlocked and self.state[topic]['level'] < 0.8 + # factory = self.deps.node[topic]['factory'] + # if factory and (not unlocked or needs_work): + # break + + # use given topic if possible + # else: + # unlocked = topic in self.state + # factory = self.deps.node[topic]['factory'] + # if not factory or not unlocked: + # logger.debug(f'Can\'t start topic "{topic}".') + # return # ------------------------------------------------------------------------ # Start a new topic. If not provided, selects the first with level < 0.8 @@ -71,34 +87,21 @@ class StudentKnowledge(object): # ------------------------------------------------------------------------ def start_topic(self, topic=''): # unlock topics whose dependencies are done - logger.debug('start_topic ' + topic) self.unlock_topics() - # choose topic if not topic: - for topic in self.topic_sequence: - unlocked = topic in self.state - needs_work = unlocked and self.state[topic]['level'] < 0.8 - factory = self.deps.node[topic]['factory'] - if factory and (not unlocked or needs_work): - break - - # use given topic if possible - else: - unlocked = topic in self.state - factory = self.deps.node[topic]['factory'] - if not factory or not unlocked: - logger.debug(f'Can\'t start topic "{topic}".') - return - + topic = self.recommended_topic() self.current_topic = topic logger.info(f'Topic set to "{topic}"') + # generate question instances for current topic + factory = self.deps.node[topic]['factory'] questionlist = self.deps.node[topic]['questions'] + self.questions = [factory[qref].generate() for qref in questionlist] self.current_question = self.questions.pop(0) # FIXME crashes if questions==[] self.current_question['start_time'] = datetime.now() diff --git a/serve.py b/serve.py index ce70ce9..c62c942 100755 --- a/serve.py +++ b/serve.py @@ -32,7 +32,7 @@ class WebApplication(tornado.web.Application): (r'/logout', LogoutHandler), (r'/change_password', ChangePasswordHandler), (r'/question', QuestionHandler), - (r'/', LearnHandler), + (r'/', RootHandler), (r'/topic/(.+)', TopicHandler), (r'/(.+)', FileHandler), ] @@ -112,7 +112,7 @@ class ChangePasswordHandler(BaseHandler): # Main page: / # Shows a list of topics and proficiency (stars, locked). # ---------------------------------------------------------------------------- -class LearnHandler(BaseHandler): +class RootHandler(BaseHandler): @tornado.web.authenticated def get(self): uid = self.current_user @@ -130,11 +130,12 @@ class TopicHandler(BaseHandler): def get(self, topic): uid = self.current_user # topic = self.get_query_argument('topic', default='') + self.learn.start_topic(uid, topic) self.render('topic.html', uid=uid, name=self.learn.get_student_name(uid), - title=self.learn.get_title(), + title=self.learn.get_title() ) diff --git a/static/css/learn.css b/static/css/learn.css index c4c8315..feb572e 100644 --- a/static/css/learn.css +++ b/static/css/learn.css @@ -1,6 +1,6 @@ body { margin: 0; - padding-top: 100px; + padding-top: 0px; } img { diff --git a/templates/learn.html b/templates/learn.html deleted file mode 100644 index cb5ff62..0000000 --- a/templates/learn.html +++ /dev/null @@ -1,256 +0,0 @@ - - -
- - - - - -- -
- -