#summary The User entity model
#labels Phase-Design,Contents-Skeleton,Design-Model

The User entity stores a single private user email address and login
credentials in the [http://code.google.com/appengine/docs/datastore/
Datastore].  The User
[http://code.google.com/appengine/docs/datastore/entitiesandmodels.html#The_Model_Interface Model] currently contains only a single
[http://code.google.com/appengine/docs/datastore/typesandpropertyclasses.html#UserProperty UserProperty].

It is important to keep in mind that a given User can have more than one
[UserRoles role] at a time in a given Program and can also participate in more
than one Program.  Contrast this with the [PersonModel Person entity] which
can only participate in a single Program.

_*Eventually, this topic should be populated by the output of*_ `pydoc`.

{{{
class User(db.Model):
  """A user and associated login credentials, the fundamental identity entity.

  User.id is a Google Account, which also provides a "private" email address.

  User is a separate Model class from Person because the same login ID may be
  used to, for exmaple, serve as Contributor in one Program and a Reviewer in
  another.

  Also, this allows a Person to, in the future, associate that Person entity
  with a different Google Account if necessary.

  A User entity currently participates in only a single relationship:

   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.

  """
  id = db.UserProperty(required=True)
}}}

----
_Copyright 2008 Google Inc._
_This work is licensed under a_
[http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-attribution-2_5.html Creative Commons Attribution 2.5 License].
[http://creativecommons.org/licenses/by/2.5/ http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-2_5-88x31.png]
