55 ranker.SetScore(entity.key().name(), [entity.score]) |
55 ranker.SetScore(entity.key().name(), [entity.score]) |
56 |
56 |
57 super(Logic, self)._onCreate(entity) |
57 super(Logic, self)._onCreate(entity) |
58 |
58 |
59 def _updateField(self, entity, entity_properties, name): |
59 def _updateField(self, entity, entity_properties, name): |
60 """Update the ranker if the score changes |
60 """Update the ranker if the score changes and keep the score within bounds. |
61 """ |
61 """ |
62 |
62 |
63 value = entity_properties[name] |
63 value = entity_properties[name] |
64 |
64 |
65 if name == 'score': |
65 if name == 'score': |
|
66 # keep the score within bounds |
|
67 min_score, max_score = student_proposal.DEF_SCORE |
|
68 |
|
69 value = max(min_score, min(value, max_score-1)) |
|
70 entity_properties[name] = value |
|
71 |
|
72 # update the ranker |
66 fields = {'link_id': student_proposal.DEF_RANKER_NAME, |
73 fields = {'link_id': student_proposal.DEF_RANKER_NAME, |
67 'scope': entity.org} |
74 'scope': entity.org} |
68 |
75 |
69 ranker_root = ranker_logic.logic.getForFields(fields, unique=True) |
76 ranker_root = ranker_logic.logic.getForFields(fields, unique=True) |
70 ranker = ranker_logic.logic.getRootFromEntity(ranker_root) |
77 ranker = ranker_logic.logic.getRootFromEntity(ranker_root) |
71 ranker.SetScore(entity.key().name(), [value]) |
78 ranker.SetScore(entity.key().name(), [value]) |
72 |
79 |
|
80 |
73 return super(Logic, self)._updateField(entity, entity_properties, name) |
81 return super(Logic, self)._updateField(entity, entity_properties, name) |
74 |
82 |
75 |
83 |
76 logic = Logic() |
84 logic = Logic() |