Commit b5a62c5c96f95b78c3c4350943c477e4070818c3
1 parent
7838cd47
Exists in
master
and in
1 other branch
- fixed code to run with networkx 2.0
Showing
3 changed files
with
9 additions
and
9 deletions
Show diff stats
BUGS.md
| ... | ... | @@ -24,6 +24,7 @@ TODO: |
| 24 | 24 | |
| 25 | 25 | FIXED: |
| 26 | 26 | |
| 27 | +- ver documentacao de migracao para networkx 2.0 https://networkx.github.io/documentation/stable/release/migration_guide_from_1.x_to_2.0.html | |
| 27 | 28 | - script para adicionar users/reset passwords. |
| 28 | 29 | - os topicos locked devem estar inactivos no sidebar. |
| 29 | 30 | - enter faz GET /question, que responde com json no ecran. (solution: disabled enter) | ... | ... |
app.py
| ... | ... | @@ -39,7 +39,6 @@ class LearnApp(object): |
| 39 | 39 | |
| 40 | 40 | self.depgraph = build_dependency_graph(conffile) |
| 41 | 41 | |
| 42 | - | |
| 43 | 42 | # connect to database and check registered students |
| 44 | 43 | self.db_setup(self.depgraph.graph['database']) |
| 45 | 44 | |
| ... | ... | @@ -153,7 +152,7 @@ class LearnApp(object): |
| 153 | 152 | def db_add_topics(self): |
| 154 | 153 | with self.db_session() as s: |
| 155 | 154 | tt = [t[0] for t in s.query(Topic.id)] # db list of topics |
| 156 | - nn = self.depgraph.nodes_iter() # topics in the graph | |
| 155 | + nn = self.depgraph.nodes() # topics in the graph | |
| 157 | 156 | s.add_all([Topic(id=n) for n in nn if n not in tt]) |
| 158 | 157 | |
| 159 | 158 | # ------------------------------------------------------------------------ |
| ... | ... | @@ -276,7 +275,7 @@ def build_dependency_graph(config_file): |
| 276 | 275 | |
| 277 | 276 | # iterate over topics and create question factories |
| 278 | 277 | logger.info('Loading:') |
| 279 | - for tref in g.nodes_iter(): | |
| 278 | + for tref in g.nodes(): | |
| 280 | 279 | tnode = g.node[tref] # current node (topic) |
| 281 | 280 | fullpath = path.expanduser(path.join(prefix, tref)) |
| 282 | 281 | filename = path.join(fullpath, 'questions.yaml') | ... | ... |
knowledge.py
| ... | ... | @@ -33,8 +33,8 @@ class Knowledge(object): |
| 33 | 33 | |
| 34 | 34 | self.state = state # {'topic_id': {'level':0.5, 'date': datetime}, ...} |
| 35 | 35 | |
| 36 | - # compute recommended sequence of topics ['a', 'b',...] | |
| 37 | - self.topic_sequence = nx.topological_sort(self.depgraph) | |
| 36 | + # compute recommended sequence of topics ['a', 'b', ...] | |
| 37 | + self.topic_sequence = list(nx.topological_sort(self.depgraph)) | |
| 38 | 38 | |
| 39 | 39 | # select a topic to do and initialize questions |
| 40 | 40 | self.start_topic() |
| ... | ... | @@ -44,15 +44,15 @@ class Knowledge(object): |
| 44 | 44 | # If all levels > 0.8, will stay in the last one forever... |
| 45 | 45 | # ------------------------------------------------------------------------ |
| 46 | 46 | def start_topic(self, topic=''): |
| 47 | - # unlock topics that have satisfied dependencies | |
| 48 | - unlock_topics = [] | |
| 47 | + # unlock topics whose dependencies are done | |
| 48 | + unlocked_topics = [] | |
| 49 | 49 | for t in self.topic_sequence: |
| 50 | 50 | if t not in self.state: # is locked |
| 51 | 51 | deps = self.depgraph.predecessors(t) |
| 52 | 52 | if all(d in self.state and self.state[d]['level'] > 0.01 for d in deps): # dependencies done |
| 53 | - unlock_topics.append(t) | |
| 53 | + unlocked_topics.append(t) | |
| 54 | 54 | |
| 55 | - for t in unlock_topics: | |
| 55 | + for t in unlocked_topics: | |
| 56 | 56 | self.state[t] = {'level': 0.0, 'date': datetime.now()} |
| 57 | 57 | logger.info(f'User "{self.student}" unlocked "{t}"') |
| 58 | 58 | ... | ... |