give groups as parameters to team calculation to make evaluation independent of user data

This commit is contained in:
Helmut Merz 2015-04-21 10:04:52 +02:00
parent abdf27372b
commit aa8814b29b
2 changed files with 5 additions and 6 deletions

View file

@ -87,8 +87,7 @@ Team evaluation
>>> resp01.values[qugroup] = resp01.getGroupedResult()[0]['score']
>>> resp03.values[qugroup] = resp03.getGroupedResult()[0]['score']
>>> teamData = resp01.getTeamResult(resp03.getGroupedResult(),
... [resp01, resp03])
>>> teamData = resp01.getTeamResult([qugroup], [resp01, resp03])
>>> teamData
[{'average': 0.6666...}]

View file

@ -125,14 +125,14 @@ class Response(object):
r['rank'] = ranks[idx]
return result
def getTeamResult(self, mine, teamData):
def getTeamResult(self, groups, teamData):
result = []
for idx, qgdata in enumerate(mine):
values = [data.values.get(qgdata['group']) for data in teamData]
for idx, group in enumerate(groups):
values = [data.values.get(group) for data in teamData]
values = [v for v in values if v is not None]
#avg = sum(values) / len(teamData)
avg = sum(values) / len(values)
result.append(dict(group=qgdata['group'], average=avg))
result.append(dict(group=group, average=avg))
ranks = getRanks([r['average'] for r in result])
for idx, r in enumerate(result):
r['rank'] = ranks[idx]