Initial revision of the user.py module, containing the User Model, from the
authorTodd Larsen <tlarsen@google.com>
Tue, 06 May 2008 22:06:43 +0000
changeset 7 5c72db822ebb
parent 6 466837359a1c
child 8 102f69ecb4e4
Initial revision of the user.py module, containing the User Model, from the patch contributed by Sverre Rabbelier. Thanks, Sverre, for contributing our first external patch!
AUTHORS
soc/models/user.py
--- a/AUTHORS	Tue May 06 21:58:48 2008 +0000
+++ b/AUTHORS	Tue May 06 22:06:43 2008 +0000
@@ -4,4 +4,5 @@
 # Lines beginning with # can be stripped from the file, as can blank lines.
 
 "Todd Larsen" <tlarsen@google.com>
+"Sverre Rabbelier" <sverre@rabbelier.nl>
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/soc/models/user.py	Tue May 06 22:06:43 2008 +0000
@@ -0,0 +1,51 @@
+#!/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 User Model."""
+
+__authors__ = [
+  '"Todd Larsen" <tlarsen@google.com>',
+  '"Sverre Rabbelier" <sverre@rabbelier.nl>',
+]
+
+from google.appengine.ext import db
+
+
+class User(db.Model):
+  """A user and associated login credentials, the fundamental identity entity.
+
+  User is a separate Model class from Person because the same login 
+  ID may be used to, for example, serve as Contributor in one Program 
+  and a Reviewer in another.
+
+  Also, this allows a Person to, in the future, re-associate that 
+  Person entity with a different Google Account if necessary.
+
+  A User entity participates in the following relationships implemented 
+  as a db.ReferenceProperty elsewhere in another db.Model:
+
+   persons)  a 1:many relationship of Person entities identified by the
+     User.  This relation is implemented as the 'persons' back-reference
+     Query of the Person model 'user' reference.
+
+  """
+
+  #: A Google Account, which also provides a "private" email address.
+  #: This email address is only used in an automated fashion by 
+  #: Melange web applications and is not made visible to other users 
+  #: of any Melange application.
+  id = db.UserProperty(required=True)
+