- raise PLCInvalidArgument, "Person %d already has setting %d"%(person['person_id'],
- tag_type['tag_type_id'])
-
- # check permission : it not admin, is the user affiliated with the same site as this person
- if 'admin' not in self.caller['roles']:
- # check caller is affiliated with at least one of Person's sites
- if len(set(person['site_ids']) & set(self.caller['site_ids'])) == 0:
- raise PLCPermissionDenied, "Not a member of the person's sites: %s"%person['site_ids']
-
- required_min_role = tag_type ['min_role_id']
- if required_min_role is not None and \
- min(self.caller['role_ids']) > required_min_role:
- raise PLCPermissionDenied, "Not allowed to modify the specified person setting, requires role %d",required_min_role
+ raise PLCInvalidArgument, "Person %d (%s) already has setting %d"% \
+ (person['person_id'],person['email'], tag_type['tag_type_id'])
+
+ # check authorizations
+ person.caller_may_write_tag (self.api,self.caller,tag_type)