Merge branch 'master' of ssh://git.planet-lab.org/git/plcapi
authorTony Mack <tmack@paris.CS.Princeton.EDU>
Wed, 1 Jun 2011 17:09:15 +0000 (13:09 -0400)
committerTony Mack <tmack@paris.CS.Princeton.EDU>
Wed, 1 Jun 2011 17:09:15 +0000 (13:09 -0400)
PLC/Methods/GetPersons.py
PLC/Methods/UpdateNode.py
PLC/Persons.py

index 9439420..06da9f5 100644 (file)
@@ -44,11 +44,11 @@ class GetPersons(Method):
            'admin' not in self.caller['roles']:
             # Get accounts that we are able to view
             valid_person_ids = [self.caller['person_id']]
-            if 'pi' in self.caller['roles'] and self.caller['site_ids']:
+            if ('pi' in self.caller['roles'] or 'tech' in self.caller['roles']) \
+               and self.caller['site_ids']:
                 sites = Sites(self.api, self.caller['site_ids'])
                 for site in sites:
                     valid_person_ids += site['person_ids']
-
             if not valid_person_ids:
                 return []
 
index 2927f73..9f94d0a 100644 (file)
@@ -98,8 +98,10 @@ class UpdateNode(Method):
 
         for (tagname,value) in tags.iteritems():
             # the tagtype instance is assumed to exist, just check that
-            if not TagTypes(self.api,{'tagname':tagname}):
+            tag_types = TagTypes(self.api,{'tagname':tagname})
+            if not tag_types:
                 raise PLCInvalidArgument,"No such TagType %s"%tagname
+            tag_type = tag_types[0]
             node_tags=NodeTags(self.api,{'tagname':tagname,'node_id':node['node_id']})
             if not node_tags:
                 node_tag = NodeTag(self.api)
index 060a46f..d5f1533 100644 (file)
@@ -155,7 +155,7 @@ class Person(Row):
 
         1. We are the person.
         2. We are an admin.
-        3. We are a PI and the person is at one of our sites.
+        3. We are a PI or Tech and the person is at one of our sites.
         """
 
         assert isinstance(person, Person)
@@ -163,7 +163,7 @@ class Person(Row):
         if self.can_update(person):
             return True
 
-        if 'pi' in self['roles']:
+        if 'pi' in self['roles'] or 'tech' in self['roles']:
             if set(self['site_ids']).intersection(person['site_ids']):
                 # Can view people with equal or higher role IDs
                 return 'admin' not in person['roles']