app/soc/logic/models/student_proposal.py
changeset 2160 3f9dd37d98a8
parent 1885 6b7d5e6a7fd2
child 2197 efa28a1ccf76
equal deleted inserted replaced
2159:a1f1eaaf458b 2160:3f9dd37d98a8
    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