from PLC.TagTypes import TagType, TagTypes
from PLC.PersonTags import PersonTag, PersonTags
+# need to import so the core classes get decorated with caller_may_write_tag
from PLC.AuthorizeHelpers import AuthorizeHelpers
class AddPersonTag(Method):
def call(self, auth, person_id, tag_type_id_or_name, value):
persons = Persons(self.api, [person_id])
if not persons:
- raise PLCInvalidArgument, "No such person %r"%person_id
+ raise PLCInvalidArgument("No such person %r"%person_id)
person = persons[0]
tag_types = TagTypes(self.api, [tag_type_id_or_name])
if not tag_types:
- raise PLCInvalidArgument, "No such tag type %r"%tag_type_id_or_name
+ raise PLCInvalidArgument("No such tag type %r"%tag_type_id_or_name)
tag_type = tag_types[0]
# checks for existence - does not allow several different settings
'tag_type_id':tag_type['tag_type_id']})
if len(conflicts) :
- raise PLCInvalidArgument, "Person %d (%s) already has setting %d"% \
- (person['person_id'],person['email'], tag_type['tag_type_id'])
+ raise PLCInvalidArgument("Person %d (%s) already has setting %d"% \
+ (person['person_id'],person['email'], tag_type['tag_type_id']))
# check authorizations
- if 'admin' in self.caller['roles']:
- pass
- # user can change tags on self
- elif AuthorizeHelpers.person_may_access_person (self.api, self.caller, person):
- pass
- else:
- raise PLCPermissionDenied, "%s: you can only change your own tags"%self.name
-
+ person.caller_may_write_tag (self.api,self.caller,tag_type)
person_tag = PersonTag(self.api)
person_tag['person_id'] = person['person_id']