app/soc/models/comment.py
changeset 1678 80411f57f31a
child 1687 8203c805edc7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/soc/models/comment.py	Thu Mar 05 19:21:43 2009 +0000
@@ -0,0 +1,74 @@
+#!/usr/bin/python2.5
+#
+# Copyright 2008 the Melange authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""This module contains the comment Model."""
+
+__authors__ = [
+  '"Matthew Wilkes" <matthew@matthewwilkes.co.uk>',
+]
+
+from google.appengine.ext import db
+
+import soc.models.work
+import soc.models.user
+from soc.models import base
+import soc.models.linkable
+
+
+from django.utils.translation import ugettext as _
+
+
+class Comment(soc.models.linkable.Linkable):
+  """Model of a comment on a work.
+
+  A comment is associated with a Work, for example a Document or a Proposal,
+  and with a user, the author.  There are two types of comment, public (i.e.
+  visible to the student), or private (i.e. visible to programme/club staff).
+  Neither type are visible to people who are not connected to the work being
+  commented on.
+  """
+
+  #: A required many:1 relationship with a Work, where the comment entity
+  #: provides additional textual information about the commented work.
+  #: There is a backreference in Work called comments, which is a db.Query
+  #: instance
+  commented = db.ReferenceProperty(reference_class=soc.models.work.Work,
+                                  required=False, collection_name="comments")
+
+  #: A required many:1 relationship with a comment entity indicating
+  #: the user who provided that comment.  There is a backreference in Work
+  #: called comments, which is a db.Query instance.
+  author = db.ReferenceProperty(reference_class=soc.models.user.User,
+                                  required=True, collection_name="commented")
+
+  #: The rich textual content of this comment
+  content = db.TextProperty(verbose_name=_('Content'))
+
+  #: Indicated if the comment should be visible to the appropriate student
+  is_public = db.BooleanProperty(
+    verbose_name=_('Public comment'))
+
+  #: Date when the comment was added
+  created = db.DateTimeProperty(auto_now_add=True)
+
+  #: date when the work was last modified
+  modified = db.DateTimeProperty(auto_now=True)
+
+  # indicating wich user last modified the work. Used in displaying Work
+  modified_by = db.ReferenceProperty(reference_class=soc.models.user.User,
+                                     required=False,
+                                     collection_name="modified_comments",
+                                     verbose_name=_('Modified by'))