app/soc/models/contributor.py
changeset 54 03e267d67478
parent 14 aec6d7b8e745
child 181 fdd29818a954
equal deleted inserted replaced
53:57b4279d8c4e 54:03e267d67478
       
     1 #!/usr/bin/python2.5
       
     2 #
       
     3 # Copyright 2008 the Melange authors.
       
     4 #
       
     5 # Licensed under the Apache License, Version 2.0 (the "License");
       
     6 # you may not use this file except in compliance with the License.
       
     7 # You may obtain a copy of the License at
       
     8 # 
       
     9 #   http://www.apache.org/licenses/LICENSE-2.0
       
    10 # 
       
    11 # Unless required by applicable law or agreed to in writing, software
       
    12 # distributed under the License is distributed on an "AS IS" BASIS,
       
    13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
       
    14 # See the License for the specific language governing permissions and
       
    15 # limitations under the License.
       
    16 
       
    17 """This module contains the Contributor Model."""
       
    18 
       
    19 __authors__ = [
       
    20   '"Todd Larsen" <tlarsen@google.com>',
       
    21   '"Sverre Rabbelier" <sverre@rabbelier.nl>',
       
    22 ]
       
    23 
       
    24 from google.appengine.ext import db
       
    25 
       
    26 from soc import models
       
    27 import soc.models.author
       
    28 
       
    29 
       
    30 class Contributor(db.Model):
       
    31   """Contributor details for a specific Program.
       
    32 
       
    33   Some Contributor workflows have the Contributor (acting as an Author)
       
    34   creating Proposals and desiring for one (or more?) of them to be
       
    35   converted into Tasks by Reviewers and Hosts.  Other workflows have the
       
    36   Reviewers (acting as an Author) proposing Proposals, that Contributors
       
    37   claim to convert them into Tasks.
       
    38 
       
    39   A Contributor entity participates in the following relationships implemented 
       
    40   as a db.ReferenceProperty elsewhere in another db.Model:
       
    41 
       
    42    tasks)  a many:many relationship associating all of the Tasks to which
       
    43      a specific Contributor has contributed with that Contributor.  See
       
    44      the TasksContributors model for details.
       
    45   """
       
    46   
       
    47   #: a 1:1 relationship associating a Contributor with generic Author
       
    48   #: details and capabilities. The back-reference in the Author
       
    49   #: model is a Query named 'contributor'.
       
    50   author = db.ReferenceProperty(reference_class=models.author.Author, 
       
    51                                 required=True, 
       
    52                                 collection_name="contributor")