2 # Thierry Parmentelat - INRIA
5 from PLC.Faults import *
6 from PLC.Method import Method
7 from PLC.Parameter import Parameter, Mixed
8 from PLC.Auth import Auth
10 from PLC.Sites import Site, Sites
11 from PLC.Nodes import Node, Nodes
12 from PLC.TagTypes import TagType, TagTypes
13 from PLC.NodeTags import NodeTag, NodeTags
15 class DeleteNodeTag(Method):
17 Deletes the specified node tag
19 Admins have full access. Non-admins need to
20 (1) have at least one of the roles attached to the tagtype,
21 and (2) belong in the same site as the tagged subject.
23 Returns 1 if successful, faults otherwise.
26 roles = ['admin', 'pi', 'user', 'tech']
30 NodeTag.fields['node_tag_id']
33 returns = Parameter(int, '1 if successful')
35 def call(self, auth, node_tag_id):
36 node_tags = NodeTags(self.api, [node_tag_id])
38 raise PLCInvalidArgument("No such node tag %r"%node_tag_id)
39 node_tag = node_tags[0]
41 tag_type_id = node_tag['tag_type_id']
42 tag_type = TagTypes (self.api,[tag_type_id])[0]
44 nodes = Nodes (self.api, node_tag['node_id'])
46 raise PLCInvalidArgument("No such node %d"%node_tag['node_id'])
49 # check authorizations
50 node.caller_may_write_tag(self.api,self.caller,tag_type)
53 self.object_ids = [node_tag['node_tag_id']]