67 def _onCreate(self, entity): |
67 def _onCreate(self, entity): |
68 """Adds this proposal to the organization ranker entity. |
68 """Adds this proposal to the organization ranker entity. |
69 """ |
69 """ |
70 |
70 |
71 ranker = self.getRankerFor(entity) |
71 ranker = self.getRankerFor(entity) |
72 ranker.SetScore(entity.key().name(), [entity.score]) |
72 ranker.SetScore(entity.key().id_or_name(), [entity.score]) |
73 |
73 |
74 super(Logic, self)._onCreate(entity) |
74 super(Logic, self)._onCreate(entity) |
75 |
75 |
76 def _updateField(self, entity, entity_properties, name): |
76 def _updateField(self, entity, entity_properties, name): |
77 """Called when the fields of the student_proposal are updated. |
77 """Called when the fields of the student_proposal are updated. |
89 value = max(min_score, min(value, max_score-1)) |
89 value = max(min_score, min(value, max_score-1)) |
90 entity_properties[name] = value |
90 entity_properties[name] = value |
91 |
91 |
92 # update the ranker |
92 # update the ranker |
93 ranker = self.getRankerFor(entity) |
93 ranker = self.getRankerFor(entity) |
94 ranker.SetScore(entity.key().name(), [value]) |
94 ranker.SetScore(entity.key().id_or_name(), [value]) |
95 |
95 |
96 if name == 'status': |
96 if name == 'status': |
97 |
97 |
98 if value in ['invalid', 'rejected'] and entity.status != value: |
98 if value in ['invalid', 'rejected'] and entity.status != value: |
99 # the proposal is going into invalid or rejected state |
99 # the proposal is going into invalid or rejected state |
100 # remove the score from the ranker |
100 # remove the score from the ranker |
101 ranker = self.getRankerFor(entity) |
101 ranker = self.getRankerFor(entity) |
102 |
102 |
103 # entries in the ranker can be removed by setting the score to None |
103 # entries in the ranker can be removed by setting the score to None |
104 ranker.SetScore(entity.key().name(), None) |
104 ranker.SetScore(entity.key().id_or_name(), None) |
105 |
105 |
106 return super(Logic, self)._updateField(entity, entity_properties, name) |
106 return super(Logic, self)._updateField(entity, entity_properties, name) |
107 |
107 |
108 def delete(self, entity): |
108 def delete(self, entity): |
109 """Removes Ranker entry and all ReviewFollowers before deleting the entity. |
109 """Removes Ranker entry and all ReviewFollowers before deleting the entity. |
114 |
114 |
115 from soc.logic.models.review_follower import logic as review_follower_logic |
115 from soc.logic.models.review_follower import logic as review_follower_logic |
116 |
116 |
117 # entries in the ranker can be removed by setting the score to None |
117 # entries in the ranker can be removed by setting the score to None |
118 ranker = self.getRankerFor(entity) |
118 ranker = self.getRankerFor(entity) |
119 ranker.SetScore(entity.key().name(), None) |
119 ranker.SetScore(entity.key().id_or_name(), None) |
120 |
120 |
121 # get all the ReviewFollwers that have this entity as it's scope |
121 # get all the ReviewFollwers that have this entity as it's scope |
122 fields = {'scope': entity} |
122 fields = {'scope': entity} |
123 |
123 |
124 # TODO be sure that this captures all the followers |
124 # TODO be sure that this captures all the followers |