Added a rights module
authorSverre Rabbelier <srabbelier@gmail.com>
Sat, 31 Jan 2009 22:32:01 +0000
changeset 1133 4bb31d9a58e0
parent 1132 046668855732
child 1134 493e7b5d3ab2
Added a rights module The purpose of this module is to translate from document prefix and status to a set of access checks. Patch by: Sverre Rabbelier
app/soc/logic/rights.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/soc/logic/rights.py	Sat Jan 31 22:32:01 2009 +0000
@@ -0,0 +1,91 @@
+#!/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.
+
+"""Module with rights related methods.
+"""
+
+__authors__ = [
+  '"Sverre Rabbelier" <sverre@rabbelier.nl>',
+  ]
+
+
+class Checker(object):
+  """
+  """
+
+  SITE_MEMBERSHIP = {
+      'admin': [],
+      'restricted': ['host'],
+      'member': ['user'],
+      }
+
+  CLUB_MEMBERSHIP = {
+      'admin': ['host', 'club_admin'],
+      'restricted': ['host', 'club_admin'],
+      'member': ['host', 'club_admin', 'club_member'],
+      }
+
+  SPONSOR_MEMBERSHIP = {
+      'admin': ['host'],
+      'restricted': ['host'],
+      'member': ['host'],
+      }
+
+  PROGRAM_MEMBERSHIP = {
+      'admin': ['host'],
+      'restricted': ['host', 'org_admin'],
+      'member': ['host', 'org_admin', 'org_mentor', 'org_student'],
+      }
+
+  ORGANIZATION_MEMBERSHIP = {
+      'admin': ['host', 'org_admin'],
+      'restricted': ['host', 'org_admin', 'org_mentor'],
+      'member': ['host', 'org_admin', 'org_mentor', 'org_student'],
+      }
+
+  USER_MEMBERSHIP = {
+      'admin': ['user_self'],
+      'restricted': ['user_self'], # ,'friends'
+      'member': ['user'],
+      }
+
+  RIGHTS = {
+      'site': SITE_MEMBERSHIP,
+      'club': CLUB_MEMBERSHIP,
+      'sponsor': SPONSOR_MEMBERSHIP,
+      'program': PROGRAM_MEMBERSHIP,
+      'organization': ORGANIZATION_MEMBERSHIP,
+      'user': USER_MEMBERSHIP,
+      }
+
+  def __init__(self, prefix):
+    """Constructs a Checker for the specified prefix
+    """
+
+    self.prefix = prefix
+    self.rights = self.RIGHTS[prefix]
+
+  def getMembership(self, status):
+    """
+    """
+
+    if status == 'user':
+      return ['user']
+
+    if status == 'public':
+      return ['anyone']
+
+    return self.rights[status]