X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FPersons.py;h=d5f1533cf219d4e7545904d382985a95a2610c91;hb=97e45f2f1aace5f3f34eaa5170e45e915424fbb8;hp=7917306df6a8969030153c510dbaf318b5bcd1a2;hpb=dbb01d93a67bf3a8cb470e9ccb95f3f139651478;p=plcapi.git diff --git a/PLC/Persons.py b/PLC/Persons.py index 7917306..d5f1533 100644 --- a/PLC/Persons.py +++ b/PLC/Persons.py @@ -4,9 +4,6 @@ # Mark Huang # Copyright (C) 2006 The Trustees of Princeton University # -# $Id$ -# $URL$ -# from types import StringTypes try: @@ -158,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) @@ -166,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'] @@ -393,10 +390,10 @@ class Persons(Table): person_filter = Filter(Person.fields, person_filter) sql += " AND (%s) %s" % person_filter.sql(api, "AND") elif isinstance (person_filter, StringTypes): - person_filter = Filter(Person.fields, {'email':[person_filter]}) + person_filter = Filter(Person.fields, {'email':person_filter}) sql += " AND (%s) %s" % person_filter.sql(api, "AND") - elif isinstance (person_filter, int): - person_filter = Filter(Person.fields, {'person_id':[person_filter]}) + elif isinstance (person_filter, (int, long)): + person_filter = Filter(Person.fields, {'person_id':person_filter}) sql += " AND (%s) %s" % person_filter.sql(api, "AND") else: raise PLCInvalidArgument, "Wrong person filter %r"%person_filter