X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FMethods%2FDeleteInterfaceTag.py;h=5ef9635fa9654f8b9e3a0cfbe90e9aaf251986b7;hb=0fa905f9b5a075e509787a74c56f1f3ced669ec4;hp=1bb4aad6609aa822bfd6ed1df075ab1333d39b35;hpb=02fbeb3d8ae6da8ed1ce4c83ec64fa174906c5f7;p=plcapi.git diff --git a/PLC/Methods/DeleteInterfaceTag.py b/PLC/Methods/DeleteInterfaceTag.py index 1bb4aad..5ef9635 100644 --- a/PLC/Methods/DeleteInterfaceTag.py +++ b/PLC/Methods/DeleteInterfaceTag.py @@ -12,6 +12,9 @@ from PLC.Interfaces import Interface, Interfaces from PLC.TagTypes import TagType, TagTypes from PLC.InterfaceTags import InterfaceTag, InterfaceTags +# need to import so the core classes get decorated with caller_may_write_tag +from PLC.AuthorizeHelpers import AuthorizeHelpers + class DeleteInterfaceTag(Method): """ Deletes the specified interface setting @@ -40,17 +43,14 @@ class DeleteInterfaceTag(Method): tag_type_id = interface_tag['tag_type_id'] tag_type = TagTypes (self.api,[tag_type_id])[0] - interface = Interfaces (self.api, interface_tag['interface_id']) + + interfaces = Interfaces (self.api, interface_tag['interface_id']) + if not interfaces: + raise PLCInvalidArgument, "No such interface %d"%interface_tag['interface_id'] + interface=interfaces[0] # check authorizations - if 'admin' in self.caller['roles']: - pass - elif not AuthorizeHelpers.caller_may_access_tag_type (self.api, self.caller, tag_type): - raise PLCPermissionDenied, "%s, forbidden tag %s"%(self.name,tag_type['tagname']) - elif AuthorizeHelpers.interface_belongs_to_person (self.api, interface, self.caller): - pass - else: - raise PLCPermissionDenied, "%s: you must belong in the same site as subject interface"%self.name + interface.caller_may_write_tag(self.api,self.caller,tag_type) interface_tag.delete() self.object_ids = [interface_tag['interface_tag_id']]