Notice: curl_setopt(): CURLOPT_SSL_VERIFYHOST no longer accepts the value 1, value...
[plcapi.git] / PLC / Methods / AddPersonTag.py
index edd3970..3a43893 100644 (file)
@@ -10,6 +10,7 @@ from PLC.Persons import Person, Persons
 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):
@@ -39,12 +40,12 @@ 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
@@ -52,18 +53,11 @@ class AddPersonTag(Method):
                                           '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']