refactor result data structure, fix rank calculation, add team rank

This commit is contained in:
Helmut Merz 2014-05-24 14:49:52 +02:00
parent 11f3218ea4
commit 6ff8e8211a
4 changed files with 30 additions and 28 deletions

View file

@ -76,7 +76,8 @@ class SurveyView(ConceptView):
if data: if data:
resp = Response(self.adapted, None) resp = Response(self.adapted, None)
for qu in self.adapted.questions: for qu in self.adapted.questions:
resp.values[qu] = data[qu.uid] if qu.uid in data:
resp.values[qu] = data[qu.uid]
qgAvailable = True qgAvailable = True
for qg in self.adapted.questionGroups: for qg in self.adapted.questionGroups:
if qg.uid in data: if qg.uid in data:
@ -85,8 +86,8 @@ class SurveyView(ConceptView):
qgAvailable = False qgAvailable = False
if not qgAvailable: if not qgAvailable:
values = resp.getGroupedResult() values = resp.getGroupedResult()
for qugroup, info, score in values: for v in values:
resp.values[qugroup] = score resp.values[v['group']] = v['score']
result.append(resp) result.append(resp)
return result return result
@ -106,22 +107,22 @@ class SurveyView(ConceptView):
data[uid] = value data[uid] = value
response.values[question] = value response.values[question] = value
values = response.getGroupedResult() values = response.getGroupedResult()
for qugroup, info, score in values: for v in values:
data[self.getUidForObject(qugroup)] = score data[self.getUidForObject(v['group'])] = v['score']
respManager.save(data) respManager.save(data)
self.data = data self.data = data
self.errors = self.check(response) self.errors = self.check(response)
if self.errors: if self.errors:
return [] return []
result = [dict(category=r[0].title, text=r[1].text, result = [dict(category=r['group'].title, text=r['feedback'].text,
score=int(round(r[2] * 100))) score=int(round(r['score'] * 100)), rank=r['rank'])
for r in values] for r in values]
if self.adapted.showTeamResults: if self.adapted.showTeamResults:
teamData = self.getTeamData(respManager) teamData = self.getTeamData(respManager)
ranks, averages = response.getTeamResult(values, teamData) values = response.getTeamResult(values, teamData)
for idx, qgdata in enumerate(result): for idx, r in enumerate(values):
qgdata['rank'] = ranks[idx] result[idx]['average'] = int(round(r['average'] * 100))
qgdata['average'] = int(round(averages[idx] * 100)) result[idx]['teamRank'] = r['rank']
return result return result
def check(self, response): def check(self, response):

View file

@ -13,21 +13,21 @@
<h3 i18n:translate="">Feedback</h3> <h3 i18n:translate="">Feedback</h3>
<div tal:define="header item/adapted/feedbackHeader" <div tal:define="header item/adapted/feedbackHeader"
tal:condition="header" tal:condition="header"
tal:content="structure python:item.renderText(header, 'text/restructured')" /> tal:content="structure python:
item.renderText(header, 'text/restructured')" />
<table class="listing"> <table class="listing">
<tr> <tr>
<th i18n:translate="">Category</th> <th i18n:translate="">Category</th>
<th tal:condition="item/showFeedbackText" <th tal:condition="item/showFeedbackText"
i18n:translate="">Response</th> i18n:translate="">Response</th>
<th class="center" <th class="center"
i18n:translate="">Score %</th> i18n:translate="">Score</th>
<th class="center"
i18n:translate="">Rank</th>
<tal:team condition="item/adapted/showTeamResults"> <tal:team condition="item/adapted/showTeamResults">
<th class="center" <th class="center"
i18n:translate="">Rank</th> i18n:translate="">Team Score</th>
<th class="center" <th class="center"
i18n:translate="">Team Score %</th>
<th class="center"
tal:condition="nothing"
i18n:translate="">Team Rank</th> i18n:translate="">Team Rank</th>
</tal:team> </tal:team>
</tr> </tr>
@ -37,12 +37,13 @@
tal:content="fbitem/text" /> tal:content="fbitem/text" />
<td class="center" <td class="center"
tal:content="fbitem/score" /> tal:content="fbitem/score" />
<td class="center"
tal:content="fbitem/rank" />
<tal:team condition="item/adapted/showTeamResults"> <tal:team condition="item/adapted/showTeamResults">
<td class="center"
tal:content="fbitem/rank" />
<td class="center" <td class="center"
tal:content="fbitem/average" /> tal:content="fbitem/average" />
<td tal:condition="nothing" /> <td class="center"
tal:content="fbitem/teamRank" />
</tal:team> </tal:team>
</tr> </tr>
</table> </table>

Binary file not shown.

View file

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: 0.13.0\n" "Project-Id-Version: 0.13.0\n"
"POT-Creation-Date: 2007-05-22 12:00 CET\n" "POT-Creation-Date: 2007-05-22 12:00 CET\n"
"PO-Revision-Date: 2014-05-07 12:00 CET\n" "PO-Revision-Date: 2014-05-24 12:00 CET\n"
"Last-Translator: Helmut Merz <helmutm@cy55.de>\n" "Last-Translator: Helmut Merz <helmutm@cy55.de>\n"
"Language-Team: loops developers <helmutm@cy55.de>\n" "Language-Team: loops developers <helmutm@cy55.de>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -265,17 +265,17 @@ msgstr "Bitte beantworten Sie die angegebene Mindestanzahl an Fragen je Fragengr
msgid "Obligatory question, must be answered" msgid "Obligatory question, must be answered"
msgstr "Pflichtfrage, muss beantwortet werden" msgstr "Pflichtfrage, muss beantwortet werden"
msgid "Score %" msgid "Score"
msgstr "Bewertung %" msgstr "Bewertung"
msgid "Team Score %" msgid "Team Score"
msgstr "Durchschnitt Team %" msgstr "Durchschnitt Team"
msgid "Rank" msgid "Rank"
msgstr "Rang im Team" msgstr "Rang"
msgid "Team Rank" msgid "Team Rank"
msgstr "Rang des Teams" msgstr "Rang Team"
# competence (qualification) # competence (qualification)