Commit 62736e37e3bab866f1f864252b95923feb49bbfd
1 parent
3539d1d0
Exists in
master
and in
1 other branch
fixed some errors not being reported
show legend in topics table show puzzle icon for nongoal dependencies modified looks of chapters
Showing
3 changed files
with
42 additions
and
27 deletions
Show diff stats
aprendizations/__init__.py
| @@ -30,7 +30,7 @@ are progressively uncovered as the students progress. | @@ -30,7 +30,7 @@ are progressively uncovered as the students progress. | ||
| 30 | ''' | 30 | ''' |
| 31 | 31 | ||
| 32 | APP_NAME = 'aprendizations' | 32 | APP_NAME = 'aprendizations' |
| 33 | -APP_VERSION = '2020.01.dev3' | 33 | +APP_VERSION = '2020.01.dev4' |
| 34 | APP_DESCRIPTION = __doc__ | 34 | APP_DESCRIPTION = __doc__ |
| 35 | 35 | ||
| 36 | __author__ = 'Miguel Barão' | 36 | __author__ = 'Miguel Barão' |
aprendizations/learnapp.py
| @@ -434,19 +434,19 @@ class LearnApp(object): | @@ -434,19 +434,19 @@ class LearnApp(object): | ||
| 434 | # makes factory for a single topic | 434 | # makes factory for a single topic |
| 435 | # ------------------------------------------------------------------------ | 435 | # ------------------------------------------------------------------------ |
| 436 | def factory_for(self, tref: str) -> Dict[str, QFactory]: | 436 | def factory_for(self, tref: str) -> Dict[str, QFactory]: |
| 437 | - factory: Dict[str, QFactory] = {} | 437 | + factory: Dict[str, QFactory] = dict() |
| 438 | g = self.deps | 438 | g = self.deps |
| 439 | t = g.nodes[tref] # get node | 439 | t = g.nodes[tref] # get node |
| 440 | - | ||
| 441 | # load questions as list of dicts | 440 | # load questions as list of dicts |
| 442 | topicpath: str = path.join(g.graph['prefix'], tref) | 441 | topicpath: str = path.join(g.graph['prefix'], tref) |
| 443 | try: | 442 | try: |
| 444 | fullpath: str = path.join(topicpath, t['file']) | 443 | fullpath: str = path.join(topicpath, t['file']) |
| 445 | except Exception: | 444 | except Exception: |
| 446 | msg1 = f'Invalid topic "{tref}"' | 445 | msg1 = f'Invalid topic "{tref}"' |
| 447 | - msg2 = f'Check dependencies of {", ".join(g.successors(tref))}' | ||
| 448 | - raise LearnException(f'{msg1}. {msg2}') | ||
| 449 | - | 446 | + msg2 = f'Check dependencies of: {", ".join(g.successors(tref))}' |
| 447 | + msg = f'{msg1}. {msg2}' | ||
| 448 | + logger.error(msg) | ||
| 449 | + raise LearnException(msg) | ||
| 450 | logger.debug(f' Loading {fullpath}') | 450 | logger.debug(f' Loading {fullpath}') |
| 451 | try: | 451 | try: |
| 452 | questions: List[QDict] = load_yaml(fullpath) | 452 | questions: List[QDict] = load_yaml(fullpath) |
| @@ -457,9 +457,9 @@ class LearnApp(object): | @@ -457,9 +457,9 @@ class LearnApp(object): | ||
| 457 | msg = f'Failed to load "{fullpath}"' | 457 | msg = f'Failed to load "{fullpath}"' |
| 458 | logger.error(msg) | 458 | logger.error(msg) |
| 459 | raise LearnException(msg) | 459 | raise LearnException(msg) |
| 460 | - | ||
| 461 | if not isinstance(questions, list): | 460 | if not isinstance(questions, list): |
| 462 | msg = f'File "{fullpath}" must be a list of questions' | 461 | msg = f'File "{fullpath}" must be a list of questions' |
| 462 | + logger.error(msg) | ||
| 463 | raise LearnException(msg) | 463 | raise LearnException(msg) |
| 464 | 464 | ||
| 465 | # update refs to include topic as prefix. | 465 | # update refs to include topic as prefix. |
aprendizations/templates/maintopics-table.html
| @@ -60,7 +60,21 @@ | @@ -60,7 +60,21 @@ | ||
| 60 | 60 | ||
| 61 | <div id="notifications"></div> | 61 | <div id="notifications"></div> |
| 62 | 62 | ||
| 63 | - <h4>{{ course['title'] }}</h4> | 63 | + <div class="alert alert-warning alert-dismissible fade show" role="alert"> |
| 64 | + <p><strong>Legenda:</strong></p> | ||
| 65 | + <p class="ml-3"> | ||
| 66 | + <i class="fas fa-book"></i> - Material de estudo<br> | ||
| 67 | + <i class="fas fa-pencil-alt"></i> - Exercícios<br> | ||
| 68 | + <i class="fas fa-puzzle-piece"></i> - Tópico que não faz parte dos objectivos deste curso mas que é necessário saber<br> | ||
| 69 | + <i class="fas fa-flag"></i> - Milestone, terminou um certo conjunto de tópicos | ||
| 70 | + </p> | ||
| 71 | + | ||
| 72 | + <button type="button" class="close" data-dismiss="alert" aria-label="Close"> | ||
| 73 | + <span aria-hidden="true">×</span> | ||
| 74 | + </button> | ||
| 75 | + </div> | ||
| 76 | + | ||
| 77 | + <h4 class="p-4">{{ course['title'] }}</h4> | ||
| 64 | 78 | ||
| 65 | <table class="table table-hover"> | 79 | <table class="table table-hover"> |
| 66 | <thead class=""> | 80 | <thead class=""> |
| @@ -75,21 +89,21 @@ | @@ -75,21 +89,21 @@ | ||
| 75 | {% if t['level'] is None %} | 89 | {% if t['level'] is None %} |
| 76 | <tr class="table-secondary"> | 90 | <tr class="table-secondary"> |
| 77 | <td> | 91 | <td> |
| 78 | - {% if t['type']=='chapter' %} | ||
| 79 | - <div class="text-muted lead"> | ||
| 80 | - {{ t['name'] }} | ||
| 81 | - </div> | ||
| 82 | - {% elif t['type']=='learn' %} | ||
| 83 | - <div class="text-muted"> | 92 | + <div class="text-muted"> |
| 93 | + {% if t['ref'] not in course['goals'] %} | ||
| 94 | + <i class="fas fa-puzzle-piece"></i> | ||
| 95 | + {% end %} | ||
| 96 | + | ||
| 97 | + {% if t['type']=='chapter' %} | ||
| 98 | + <i class="fas fa-flag"></i> | ||
| 99 | + {% elif t['type']=='learn' %} | ||
| 84 | <i class="fas fa-book"></i> | 100 | <i class="fas fa-book"></i> |
| 85 | - {{ t['name'] }} | ||
| 86 | - </div> | ||
| 87 | - {% else %} | ||
| 88 | - <div class="text-muted"> | 101 | + {% else %} |
| 89 | <i class="fas fa-pencil-alt"></i> | 102 | <i class="fas fa-pencil-alt"></i> |
| 90 | - {{ t['name'] }} | ||
| 91 | - </div> | ||
| 92 | - {% end %} | 103 | + {% end %} |
| 104 | + | ||
| 105 | + {{ t['name'] }} | ||
| 106 | + </div> | ||
| 93 | </td> | 107 | </td> |
| 94 | <td class="text-center"> | 108 | <td class="text-center"> |
| 95 | <i class="fas fa-lock text-muted"></i> | 109 | <i class="fas fa-lock text-muted"></i> |
| @@ -100,18 +114,19 @@ | @@ -100,18 +114,19 @@ | ||
| 100 | 114 | ||
| 101 | <tr class="clickable-row " data-href="/topic/{{t['ref']}}"> | 115 | <tr class="clickable-row " data-href="/topic/{{t['ref']}}"> |
| 102 | <td class="text-primary"> | 116 | <td class="text-primary"> |
| 117 | + {% if t['ref'] not in course['goals'] %} | ||
| 118 | + <i class="fas fa-puzzle-piece"></i> | ||
| 119 | + {% end %} | ||
| 120 | + | ||
| 103 | {% if t['type']=='chapter' %} | 121 | {% if t['type']=='chapter' %} |
| 104 | - <h5> | ||
| 105 | - <i class="fas fa-flag-checkered"></i> | ||
| 106 | - {{ t['name'] }} | ||
| 107 | - </h5> | 122 | + <i class="fas fa-flag-checkered"></i> |
| 108 | {% elif t['type']=='learn' %} | 123 | {% elif t['type']=='learn' %} |
| 109 | <i class="fas fa-book"></i> | 124 | <i class="fas fa-book"></i> |
| 110 | - {{ t['name'] }} | ||
| 111 | {% else %} | 125 | {% else %} |
| 112 | <i class="fas fa-pencil-alt"></i> | 126 | <i class="fas fa-pencil-alt"></i> |
| 113 | - {{ t['name'] }} | ||
| 114 | {% end %} | 127 | {% end %} |
| 128 | + | ||
| 129 | + {{ t['name'] }} | ||
| 115 | </td> | 130 | </td> |
| 116 | 131 | ||
| 117 | <td class="text-center"> | 132 | <td class="text-center"> |