本文整理汇总了Python中pyasm.common.Xml.get_node_name方法的典型用法代码示例。如果您正苦于以下问题:Python Xml.get_node_name方法的具体用法?Python Xml.get_node_name怎么用?Python Xml.get_node_name使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pyasm.common.Xml
的用法示例。
在下文中一共展示了Xml.get_node_name方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _handle_ref_node
# 需要导入模块: from pyasm.common import Xml [as 别名]
# 或者: from pyasm.common.Xml import get_node_name [as 别名]
def _handle_ref_node(self, node, widget, upstream=False, recursive=True):
# get the reference snapshot (should maybe use the loader or
# at least share the code
instance = Xml.get_attribute(node,"instance")
search_type = Xml.get_attribute(node,"search_type")
search_id = Xml.get_attribute(node,"search_id")
context = Xml.get_attribute(node,"context")
version = Xml.get_attribute(node,"version")
# this is often the Maya file node name or XSI long clip name
node_name = Xml.get_attribute(node, "node")
my_name = Xml.get_node_name(node)
# get the snapshot
ref_snapshot = Snapshot.get_by_version(search_type, search_id,\
context, version)
#ref_snapshot = Snapshot.get_latest(search_type,search_id, context)
if ref_snapshot == None:
widget.add("|---> <font color='red'>Error: No reference found for [%s, %s, %s]</font>" % \
(search_type, search_id, context) )
return
toggle_id = self.generate_unique_id('toggle')
widget.add(FloatDivWdg(), toggle_id)
version = ref_snapshot.get_value("version")
try:
sobject = ref_snapshot.get_sobject()
except SObjectNotFoundException, e:
widget.add('[%s|%s] may have been deleted or is not viewable.' % (ref_snapshot.get_value('search_type'),\
ref_snapshot.get_value('search_id')))
return
示例2: get_action_nodes
# 需要导入模块: from pyasm.common import Xml [as 别名]
# 或者: from pyasm.common.Xml import get_node_name [as 别名]
def get_action_nodes(my, scope="dependent"):
action_nodes = []
nodes = Xml.get_children(my.node)
for node in nodes:
node_name = Xml.get_node_name(node)
if node_name == "action":
node_scope = Xml.get_attribute(node, "scope")
if scope and node_scope != scope:
continue
action_nodes.append(node)
return action_nodes
示例3: get_action_node
# 需要导入模块: from pyasm.common import Xml [as 别名]
# 或者: from pyasm.common.Xml import get_node_name [as 别名]
def get_action_node(my, event_name, scope="dependent"):
nodes = Xml.get_children(my.node)
for node in nodes:
node_name = Xml.get_node_name(node)
if node_name == "action":
node_event = Xml.get_attribute(node, "event")
if node_event != event_name:
continue
node_scope = Xml.get_attribute(node, "scope")
if scope and node_scope != scope:
continue
return node
示例4: get_action_options
# 需要导入模块: from pyasm.common import Xml [as 别名]
# 或者: from pyasm.common.Xml import get_node_name [as 别名]
def get_action_options(my, event_name, scope="dependent"):
options = {}
action_node = my.get_action_node(event_name, scope=scope)
if action_node is None:
return options
nodes = Xml.get_children(action_node)
for node in nodes:
name = Xml.get_node_name(node)
if name == "#text":
continue
value = Xml.get_node_value(node)
options[name] = value
return options
示例5: add_xml_rules
# 需要导入模块: from pyasm.common import Xml [as 别名]
# 或者: from pyasm.common.Xml import get_node_name [as 别名]
#.........这里部分代码省略.........
rule_key = "%s||%s" % (rule_key, rule_value)
# add a project code qualifier
rule_keys = []
if project_code == '*' and group_type != 'search_filter':
for code in my.project_codes:
key = "%s?project=%s" % (rule_key, code)
rule_keys.append(key)
else:
key= "%s?project=%s" % (rule_key, project_code)
#key = str(key) # may need to stringify unicode string
rule_keys.append(key)
rule_access = xml.get_attribute(rule_node, 'access')
#if rule_access == "":
# raise AccessException("Cannot have empty 'access':\n%s" \
# % xml.to_string(rule_node) )
# if no key is specified, it is considered a DEFAULT
if not rule_keys and not rule_value:
rule_keys = ['__DEFAULT__']
for rule_key in rule_keys:
# check if rule_access exists first, which doesn't for search_filter,
# but it has to go into the rules regardless
# if the rule already exists, take the highest one
if rule_access and rules.has_key(rule_key):
curr_access, cur_attrs = rules[rule_key]
try:
access_enum = my._get_access_enum(rule_access)
if my._get_access_enum(curr_access) > access_enum:
continue
except:
if group_type == "builtin":
continue
else:
raise
rules[rule_key] = rule_access, attrs2
#for rule, values in rules.items():
# print "rule: ", rule, values[0]
# FIXME: this one doesn't support the multi-attr structure
# convert this to a python data structure
group_nodes = xml.get_nodes("rules/group")
for group_node in group_nodes:
group_type = Xml.get_attribute( group_node, "type" )
# get an existing rule set or create a new one
if my.groups.has_key(group_type):
rules = my.groups[group_type]
else:
rules = {}
my.groups[group_type] = rules
# set the default, if specified
group_default = xml.get_attribute( group_node, "default" )
if group_default != "":
rules['__DEFAULT__'] = group_default
# get all of the rule nodes
rule_nodes = Xml.get_children(group_node)
for rule_node in rule_nodes:
project_code='*'
if Xml.get_node_name(rule_node) != 'rule':
continue
rule_key = xml.get_attribute(rule_node, 'key')
rule_access = xml.get_attribute(rule_node, 'access')
rule_project = xml.get_attribute(rule_node, 'project')
if rule_project:
project_code = rule_project
if rule_access == "":
raise AccessException("Cannot have empty 'access':\n%s" \
% xml.to_string(rule_node) )
rule_keys = []
attrs2 = {'key': rule_key}
# add a project code qualifier
if project_code == '*' and group_type != 'search_filter':
for code in my.project_codes:
key = "%s?project=%s" % (rule_key, code)
rule_keys.append(key)
else:
key= "%s?project=%s" % (rule_key, project_code)
rule_keys.append(key)
for rule_key in rule_keys:
rules[rule_key] = rule_access, attrs2
示例6: execute
# 需要导入模块: from pyasm.common import Xml [as 别名]
# 或者: from pyasm.common.Xml import get_node_name [as 别名]
def execute(my):
log = my.log
rules = my.rules
# Give rules. Only notes will get through
# we need heirarchical rules. This will ensure that only notes
# for project/assets will pass
# Here, the second one is much more difficult to do.
rulesXXX = '''
<rule group='heirarchy' key='project/asset.sthpw/note' access='allow'/>
<rule group='heirarchy' key="project/asset.sthpw/note['assigned','beth']" access='allow'/>"
'''
access_manager = AccessManager()
access_manager.add_xml_rules(rules)
# filter out project
namespace = log.get_value("namespace")
key1 = { 'code': namespace }
key2 = { 'code': '*' }
keys = [key1, key2]
if not access_manager.check_access("project", keys, "allow", default="deny"):
my.filtered_xml = Xml()
my.filtered_xml.read_string("<transaction/>")
my.message = "Transaction prevented due to project restriction"
return
# filter the transaction against the security model
xml = log.get_xml_value("transaction")
my.filtered_xml = Xml()
my.filtered_xml.create_doc("transaction")
root2 = my.filtered_xml.get_root_node()
nodes = xml.get_nodes("transaction/*")
num_nodes = len(nodes)
count = 0
for node in nodes:
if Xml.get_node_name(node) == "sobject":
search_type = xml.get_attribute(node, "search_type")
parts = search_type.split("?")
search_type = parts[0]
# filter search types
key1 = { 'code': search_type }
key2 = { 'code': "*" }
keys = [ key1, key2 ]
if not access_manager.check_access("search_type", keys, "allow", default="deny"):
continue
# check hierachical rule
parent_type = xml.get_attribute(node, "parent_type")
key = "%s.%s" % (parent_type, search_type)
my.filtered_xml.append_child(root2, node)
count += 1
else:
my.filtered_xml.append_child(root2, node)
count += 1
if len(nodes) != 0 and len(my.filtered_xml.get_nodes("transaction/*")) == 0:
my.message = "All actions filtered due to security restrictions (%s actions)" % num_nodes