Commit 9b8887c5a7ee01796e9d49a7d8658d784e5cfbb6

Authored by Miguel Barão
1 parent ec4fbd45
Exists in master and in 1 other branch dev

- added optional title to the questions

- check if questions have a "ref" key in the test configuration
Showing 3 changed files with 14 additions and 5 deletions   Show diff stats
@@ -44,7 +44,8 @@ class QuestionsPool(dict): @@ -44,7 +44,8 @@ class QuestionsPool(dict):
44 continue 44 continue
45 45
46 if q['ref'] in self: 46 if q['ref'] in self:
47 - print(' * question "{0}" in file "{1}" already exists in file "{2}". Ignoring...'.format(q['ref'], filename, self[q['ref']]['filename'])) 47 + print(' * question "{0}" in file "{1}" already exists in file "{2}".'.format(q['ref'], filename, self[q['ref']]['filename']))
  48 + sys.exit(1)
48 49
49 # filename and index (number in the file, 0 based) 50 # filename and index (number in the file, 0 based)
50 q['filename'] = filename 51 q['filename'] = filename
@@ -57,6 +58,9 @@ class QuestionsPool(dict): @@ -57,6 +58,9 @@ class QuestionsPool(dict):
57 # type (default type is 'information') 58 # type (default type is 'information')
58 q['type'] = str(q.get('type', 'information')) 59 q['type'] = str(q.get('type', 'information'))
59 60
  61 + # optional title (default empty string)
  62 + q['title'] = str(q.get('title', ''))
  63 +
60 # add question to the pool 64 # add question to the pool
61 self[q['ref']] = q 65 self[q['ref']] = q
62 66
templates/test.html
@@ -143,7 +143,7 @@ @@ -143,7 +143,7 @@
143 </div> 143 </div>
144 <div class="panel-body"> 144 <div class="panel-body">
145 <!-- <div class="well danger drop-shadow"> --> 145 <!-- <div class="well danger drop-shadow"> -->
146 - <h4> ${i+1}.</h4> 146 + <h3><small>${i+1}.</small> ${q['title']}</h3>
147 ${pretty(q['text'])} 147 ${pretty(q['text'])}
148 </div> 148 </div>
149 </div> 149 </div>
@@ -160,7 +160,7 @@ @@ -160,7 +160,7 @@
160 &nbsp;Classificar 160 &nbsp;Classificar
161 </div> 161 </div>
162 <div class="panel-body" id="example${i}"> 162 <div class="panel-body" id="example${i}">
163 - <h4> ${i+1}. </h4> 163 + <h3> <small>${i+1}.</small> ${q['title']}</h3>
164 164
165 <p class="question"> 165 <p class="question">
166 ${pretty(q['text'])} 166 ${pretty(q['text'])}
@@ -14,14 +14,14 @@ import database @@ -14,14 +14,14 @@ import database
14 def read_configuration(filename, debug=False, show_points=False, show_hints=False, practice=False, save_answers=False, show_ref=False): 14 def read_configuration(filename, debug=False, show_points=False, show_hints=False, practice=False, save_answers=False, show_ref=False):
15 # FIXME validar se ficheiros e directorios existem??? 15 # FIXME validar se ficheiros e directorios existem???
16 if not os.path.isfile(filename): 16 if not os.path.isfile(filename):
17 - print('Cannot find file "%s"' % filename) 17 + print(' * Cannot find file "%s"' % filename)
18 sys.exit(1) 18 sys.exit(1)
19 19
20 try: 20 try:
21 with open(filename, 'r') as f: 21 with open(filename, 'r') as f:
22 test = yaml.load(f) 22 test = yaml.load(f)
23 except: 23 except:
24 - print('Error reading yaml file "{0}".'.format(filename)) 24 + print(' * Error reading yaml file "{0}".'.format(filename))
25 raise 25 raise
26 26
27 # defaults: 27 # defaults:
@@ -78,6 +78,11 @@ def read_configuration(filename, debug=False, show_points=False, show_hints=Fals @@ -78,6 +78,11 @@ def read_configuration(filename, debug=False, show_points=False, show_hints=Fals
78 # instantiated. 78 # instantiated.
79 79
80 elif isinstance(q, dict): 80 elif isinstance(q, dict):
  81 + if 'ref' not in q:
  82 + print(' * Found a question without a "ref" key in the test "{}"'.format(filename))
  83 + print(' Dictionary contents:', q)
  84 + sys.exit(1)
  85 +
81 if isinstance(q['ref'], str): 86 if isinstance(q['ref'], str):
82 q['ref'] = [q['ref']] # ref is always a list 87 q['ref'] = [q['ref']] # ref is always a list
83 p = float(q.get('points', 1.0)) # default points is 1.0 88 p = float(q.get('points', 1.0)) # default points is 1.0