--- /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]