app/soc/models/review.py
changeset 1709 5cb1167ff879
parent 1308 35b75ffcbb37
child 1757 0f909179ccf2
--- a/app/soc/models/review.py	Sat Mar 07 14:56:22 2009 +0000
+++ b/app/soc/models/review.py	Sat Mar 07 15:07:17 2009 +0000
@@ -19,76 +19,29 @@
 __authors__ = [
   '"Todd Larsen" <tlarsen@google.com>',
   '"Sverre Rabbelier" <sverre@rabbelier.nl>',
+  '"Lennard de Rijk" <ljvderijk@gmail.com>',
 ]
 
 from google.appengine.ext import db
 
-import soc.models.linkable
-# TODO: Uncomment when Survey model is committed
-#import soc.models.survey
-import soc.models.reviewer
-import soc.models.work
-
-
-class Review(soc.models.linkable.Linkable):
-  """Model of a review of a Proposal or a Task.
-
-  A Review entity is a specific instance of a completed Survey, collecting
-  the Answers to the Questions that are found in that Survey.
-
-  Reviews are also used to implement comments and scoring annotations
-  to Proposals and Tasks. For example, a commment attached to a
-  Proposal is a Review with the Answer to a single "question" (with
-  that answer being the comment itself).  A scoring  evaluation might
-  be made up of Answers to two "questions", one containg the comment
-  the other containing the score.
+import soc.models.comment
 
-  A Review entity participates in the following relationships implemented 
-  as a db.ReferenceProperty elsewhere in another db.Model:
-
-   answers) A 1:many relationship (but not required, since initially
-     none of the Questions to be answered by a Review will have
-     Answers) that relates the specific answers to the Survey
-     questions for a specfic Review instance. This relation is
-     implemented as a back-reference Query of the Answer model
-     'review' reference.
-
-     Some (zero or more) of the Questions answered by a Review may
-     define an 'approval_style' string and one or more
-     'approval_answers'. See the Question and Answer models for
-     details. All Questions answered in the Review that provide
-     non-empty 'approval_style' and 'approval_answers' must meet the
-     described approval conditions for the Review to represent 
-     "approval" (or a "positive outcome" or a "passing grade", so to
-     speak). Most Reviews answer Questions in a Survey that contains
-     only a single "approval" question (if they contain one at all).
+class Review(soc.models.comment.Comment):
+  """Model of a Review.
   """
 
-  #: A required many:1 relationship with a Survey which acts as a
-  #: "template" for the Review, containing the Questions that are
-  #: anwered by the Answers associated with the Review. The
-  #: back-reference in the Survey model is a Query named 'reviews'
-  #: which represents all of the Reviews that contains Answers to the
-  #: Questions in that particular Survey.
-  # TODO: Uncomment when Survey model is committed
-  #survey = db.ReferenceProperty(reference_class=soc.models.survey.Survey,
-  #                              required=True, collection_name="reviews")
+  #: the score given by the reviewer
+  score = db.IntegerProperty(required=True, default=0)
+
+  #: An optional reference property to a reviewer so the information
+  #: from the Role can be used as well
+  reviewer = db.ReferenceProperty(reference_class=soc.models.role.Role,
+                                  required=False, collection_name="reviews")
 
-  #: A required many:1 relationship with a Work, where the Review
-  #: answers are attached to the Work as a comment, evaluation,
-  #: review, report, acceptance, etc. Reviews are the mechanism by
-  #: which non-authors of the Work make annotations to it. The
-  #: back-reference in the Work model is a Query named 'reviews'
-  #: which represents all of the annotations attached to that
-  #: particular work.
-  reviewed = db.ReferenceProperty(reference_class=soc.models.work.Work, 
-                                  required=True, collection_name="reviews")
-                                  
-  #: A required many:1 relationship with a Reviewer entity indicating
-  #: the "author" of the actual answers for a specific Review
-  #: instance. The back-reference in the Reviewer model is a Query
-  #: named 'reviews' which represents all of the Reviews by that
-  #: particular Reviewer.
-  reviewer = db.ReferenceProperty(reference_class=soc.models.reviewer.Reviewer,
-                                  required=True, collection_name="reviews")
-
+  def author_name(self):
+    """Property as 'author_name' for use in common templates.
+    """
+    if self.reviewer:
+      return self.reviewer.name()
+    else:
+      return self.author.name