Add connection module in soc and gsoc.
diff --git a/app/soc/models/connection.py b/app/soc/models/connection.py
new file mode 100755
index 0000000..5774ef0
--- /dev/null
+++ b/app/soc/models/connection.py
@@ -0,0 +1,72 @@
+#!/usr/bin/env python2.5
+#
+# Copyright 2012 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 object used to represent invitations and
+requests between a user and an organization
+"""
+from google.appengine.ext import db
+from soc.models.organization import Organization
+from soc.models.profile import Profile
+
+
+class Connection(db.Model):
+  """ GSoCConnection model.
+  This model is intended to be used to represent either an invitation or 
+  request between a User and an Organization. The type of role to be granted
+  to the user is determined by the four states: user_mentor, user_org_admin,
+  org_mentor, and org_org_admin, which correspond to the respective party's
+  acceptance of a given role. The parent of this entity is the user object
+  and the profile is that which corresponds to the parent.
+  """
+  
+  # For each of the next four properties, None represents Pending, True
+  # is an acceptance and False is a rejection of a role.
+  
+  # The User's state in respect to a mentoring role.
+  user_mentor = db.BooleanProperty(default=None)
+  
+  # The User's state in respect to an org admin role.
+  user_org_admin = db.BooleanProperty(default=None)
+  
+  # An org's state in respect to a mentoring role for the user.
+  org_mentor = db.BooleanProperty(default=None)
+  
+  # An org's state in respect to an org admin role for the user.
+  org_org_admin = db.BooleanProperty(default=None)
+  
+  # The organization entity involved in the connection for which a user
+  # may gain heightened privileges.
+  organization = db.ReferenceProperty(Organization, 
+      required=True,
+      collection_name='connections')
+                                     
+  # The profile of the User who has either requested or been invited to either
+  # a mentor or org admin role.
+  profile = db.ReferenceProperty(Profile,
+      required=True,
+      collection_name='connections')
+                            
+  # A message from the initiating party (user or org admin) to the other.
+  message = db.StringProperty()
+  
+  # Property for the ShowConnection page to keep track of the time that the
+  # connection was initiated.
+  created_on = db.DateTimeProperty(auto_now_add=True)
+  
+  def keyName(self):
+    """Returns a string which uniquely represents the entity.
+    """
+    return '/'.join([self.parent_key().name(), str(self.key().id())])
diff --git a/app/soc/modules/gsoc/models/connection.py b/app/soc/modules/gsoc/models/connection.py
new file mode 100644
index 0000000..f5de3a1
--- /dev/null
+++ b/app/soc/modules/gsoc/models/connection.py
@@ -0,0 +1,24 @@
+#!/usr/bin/env python2.5
+#
+# Copyright 2009 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 object used to represent invitations and
+requests between a user and an organization
+'''
+from soc.models.connection import Connection
+
+class GSoCConnection(Connection):
+  """ GSoCConnection Model. See Connection model for details """
+  pass
\ No newline at end of file