use precalculated scores per question group for team result
This commit is contained in:
		
							parent
							
								
									94463df4d5
								
							
						
					
					
						commit
						d994b646e9
					
				
					 2 changed files with 13 additions and 11 deletions
				
			
		|  | @ -84,7 +84,11 @@ Team evaluation | ||||||
|   >>> resp03 = Response(quest, 'mary') |   >>> resp03 = Response(quest, 'mary') | ||||||
|   >>> resp03.values = {qu01: 1, qu02: 2, qu03: 4} |   >>> resp03.values = {qu01: 1, qu02: 2, qu03: 4} | ||||||
| 
 | 
 | ||||||
|   >>> res, ranks, averages = resp01.getTeamResult([resp01, resp03]) |   >>> resp01.values[qugroup] = resp01.getGroupedResult()[0][2] | ||||||
|   >>> ranks, averages |   >>> resp03.values[qugroup] = resp03.getGroupedResult()[0][2] | ||||||
|   ([2], [0.6666...]) | 
 | ||||||
|  |   >>> ranks, averages = resp01.getTeamResult(resp03.getGroupedResult(),  | ||||||
|  |   ...                                        [resp01, resp03]) | ||||||
|  |   >>> ranks, averages | ||||||
|  |   ([1], [0.6666...]) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -110,18 +110,16 @@ class Response(object): | ||||||
|                 result.append((qugroup, qugroup.feedbackItems[int(wScore)], relScore)) |                 result.append((qugroup, qugroup.feedbackItems[int(wScore)], relScore)) | ||||||
|         return result |         return result | ||||||
| 
 | 
 | ||||||
|     def getTeamResult(self, teamData): |     def getTeamResult(self, mine, teamData): | ||||||
|         mine = self.getGroupedResult() |  | ||||||
|         all = [d.getGroupedResult() for d in teamData] |  | ||||||
|         averages = [] |         averages = [] | ||||||
|         ranks = [] |         ranks = [] | ||||||
|         for idx, qgdata in enumerate(mine): |         for idx, qgdata in enumerate(mine): | ||||||
|             total = 0.0 |             total = 0.0 | ||||||
|             pos = len(teamData) |             values = sorted([data.values[qgdata[0]] for data in teamData]) | ||||||
|             for j, data in enumerate(all): |             for j, value in enumerate(values): | ||||||
|                 total += data[idx][2] |                 total += value | ||||||
|                 if qgdata[2] >= data[idx][2]: |                 if qgdata[2] >= value: | ||||||
|                     pos = len(teamData) - j |                     pos = len(teamData) - j | ||||||
|             ranks.append(pos) |             ranks.append(pos) | ||||||
|             averages.append(total / len(teamData)) |             averages.append(total / len(teamData)) | ||||||
|         return mine, ranks, averages |         return ranks, averages | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue