svn keywords
[plcapi.git] / PLC / Persons.py
index 887f780..c2fd613 100644 (file)
@@ -5,6 +5,7 @@
 # Copyright (C) 2006 The Trustees of Princeton University
 #
 # $Id$
+# $URL$
 #
 
 from types import StringTypes
@@ -152,8 +153,8 @@ class Person(Row):
 
         if 'pi' in self['roles']:
             if set(self['site_ids']).intersection(person['site_ids']):
-                # Can update people with higher role IDs
-                return min(self['role_ids']) < min(person['role_ids'])
+                # Can update person is neither a PI or ADMIN
+                return (not (('pi' in person['roles']) or ('admin' in person['roles'])))
 
         return False
 
@@ -175,7 +176,7 @@ class Person(Row):
         if 'pi' in self['roles']:
             if set(self['site_ids']).intersection(person['site_ids']):
                 # Can view people with equal or higher role IDs
-                return min(self['role_ids']) <= min(person['role_ids'])
+                return 'admin' not in person['roles']
 
         return False
 
@@ -235,11 +236,11 @@ class Person(Row):
        assert 'person_id' in self
        assert isinstance(value, list)
        
-       (role_ids, roles_names) = self.separate_types(value)[0:2]
+       (role_ids, role_names) = self.separate_types(value)[0:2]
        
        # Translate roles into role_ids
-       if roles_names:
-           roles = Roles(self.api, role_names, ['role_id']).dict('role_id')
+       if role_names:
+           roles = Roles(self.api, role_names).dict('role_id')
            role_ids += roles.keys()
        
        # Add new ids, remove stale ids