app/soc/logic/models/survey.py
changeset 2455 a023b71ce125
parent 2453 9b8f3240e3bf
child 2459 accd8ba94b44
--- a/app/soc/logic/models/survey.py	Tue Jun 30 00:06:53 2009 +0200
+++ b/app/soc/logic/models/survey.py	Tue Jun 30 03:02:53 2009 -0700
@@ -430,7 +430,58 @@
     super(Logic, self).__init__(model=model, base_model=base_model,
                                 scope_logic=scope_logic)
 
+class ResultsLogic(work.Logic):
+  """Logic methods for the Survey model
+  """
+
+  def __init__(self, model=SurveyRecord,
+               base_model=Work, scope_logic=linkable_logic):
+    """Defines the name, key_name and model for this entity.
+    """
+
+    super(ResultsLogic, self).__init__(model=model, base_model=base_model,
+                                scope_logic=scope_logic)
+
+  def getKeyValuesFromEntity(self, entity):
+    """See base.Logic.getKeyNameValues.
+    """
+
+    return [entity.prefix, entity.scope_path, entity.link_id]
+
+  def getKeyValuesFromFields(self, fields):
+    """See base.Logic.getKeyValuesFromFields.
+    """
+
+    return [fields['prefix'], fields['scope_path'], fields['link_id']]
+
+  def getKeyFieldNames(self):
+    """See base.Logic.getKeyFieldNames.
+    """
+
+    return ['prefix', 'scope_path', 'link_id']
+
+  def isDeletable(self, entity):
+    """See base.Logic.isDeletable.
+    """
+
+    return not entity.home_for
+
+  def _updateField(self, entity, entity_properties, name):
+    """Special logic for role. If state changes to active we flush the sidebar.
+    """
+
+    value = entity_properties[name]
+
+    if (name == 'is_featured') and (entity.is_featured != value):
+      sidebar.flush()
+
+    home_for = entity.home_for
+    if (name != 'home_for') and home_for:
+      home.flush(home_for)
+    return True
+
 
 logic = Logic()
 project_logic = ProjectLogic()
 grading_logic = GradingProjectLogic()
+results_logic = ResultsLogic()