Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
opcua-asyncio
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nikola Balog
opcua-asyncio
Commits
0fc5af03
Commit
0fc5af03
authored
Aug 14, 2016
by
olivier R-D
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix copy
parent
8ffc283c
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
20 additions
and
10 deletions
+20
-10
opcua/common/copy.py
opcua/common/copy.py
+7
-9
opcua/common/ua_utils.py
opcua/common/ua_utils.py
+13
-1
No files found.
opcua/common/copy.py
View file @
0fc5af03
...
...
@@ -2,15 +2,15 @@ from opcua import ua
from
opcua
import
Node
def
copy_node
(
parent
,
node
,
nodeid
=
None
,
idx
=
0
,
recursive
=
True
):
def
copy_node
(
parent
,
node
,
nodeid
=
None
,
recursive
=
True
):
"""
Copy a node or node tree as child of parent node
"""
print
(
"Copying"
,
node
,
"into "
,
parent
,
"in idx"
,
idx
)
print
(
"Copying"
,
node
,
"into "
,
parent
)
rdesc
=
_rdesc_from_node
(
parent
,
node
)
if
nodeid
is
None
:
nodeid
=
ua
.
NodeId
(
namespaceidx
=
idx
)
# will trigger automatic node generation in namespace idx
nodeid
=
ua
.
NodeId
(
namespaceidx
=
node
.
nodeid
.
NamespaceIndex
)
added_nodeids
=
_copy_node
(
parent
.
server
,
parent
.
nodeid
,
rdesc
,
nodeid
,
recursive
)
return
[
Node
(
parent
.
server
,
nid
)
for
nid
in
added_nodeids
]
...
...
@@ -24,21 +24,19 @@ def _copy_node(server, parent_nodeid, rdesc, nodeid, recursive):
addnode
.
TypeDefinition
=
rdesc
.
TypeDefinition
addnode
.
NodeClass
=
rdesc
.
NodeClass
node_t
ype
=
Node
(
server
,
rdesc
.
NodeId
)
node_t
o_copy
=
Node
(
server
,
rdesc
.
NodeId
)
attrObj
=
getattr
(
ua
,
rdesc
.
NodeClass
.
name
+
"Attributes"
)
print
(
"attrObj"
is
attrObj
)
_read_and_copy_attrs
(
node_type
,
attrObj
(),
addnode
)
_read_and_copy_attrs
(
node_to_copy
,
attrObj
(),
addnode
)
res
=
server
.
add_nodes
([
addnode
])[
0
]
print
(
"Added result"
,
res
)
added_nodes
=
[
res
.
AddedNodeId
]
if
recursive
:
descs
=
node_t
ype
.
get_children_descriptions
()
descs
=
node_t
o_copy
.
get_children_descriptions
()
for
desc
in
descs
:
nodes
=
_copy_node
(
server
,
res
.
AddedNodeId
,
desc
,
nodeid
=
ua
.
NodeId
(
namespaceidx
=
res
.
AddedNodeId
.
NamespaceIndex
),
recursive
=
recursiv
e
)
nodes
=
_copy_node
(
server
,
res
.
AddedNodeId
,
desc
,
nodeid
=
ua
.
NodeId
(
namespaceidx
=
desc
.
NodeId
.
NamespaceIndex
),
recursive
=
Tru
e
)
added_nodes
.
extend
(
nodes
)
return
added_nodes
...
...
opcua/common/ua_utils.py
View file @
0fc5af03
...
...
@@ -104,6 +104,18 @@ def string_to_variant(string, vtype):
return
ua
.
Variant
(
string_to_val
(
string
,
vtype
),
vtype
)
def
get_node_children
(
node
,
nodes
=
None
):
"""
Get recursively all children of a node
"""
if
nodes
is
None
:
nodes
=
[
node
]
for
child
in
node
.
get_children
():
nodes
.
append
(
child
)
get_node_children
(
child
,
nodes
)
return
nodes
def
get_node_subtypes
(
node
,
nodes
=
None
):
if
nodes
is
None
:
nodes
=
[
node
]
...
...
@@ -157,4 +169,4 @@ def is_child_present(node, browsename):
if
child_desc
.
BrowseName
==
browsename
:
return
True
return
False
\ No newline at end of file
return
False
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment