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!
--- 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)
+