Commit be6193cf authored by Ivan Tyagov's avatar Ivan Tyagov

Read previous state from ERP5 backend.

parent a72e0f59
...@@ -40,9 +40,12 @@ class ERP5Handler(asyncua.common.subscription.SubHandler): ...@@ -40,9 +40,12 @@ class ERP5Handler(asyncua.common.subscription.SubHandler):
if self.url is not None: if self.url is not None:
return f"%s/%s" %(self.url, ERP5_REQUEST_API) return f"%s/%s" %(self.url, ERP5_REQUEST_API)
def call(self, **data): def call(self, http_method = "POST", **data):
params = urllib.parse.quote_plus(json.dumps({k: str(v) for k, v in data.items()})) params = urllib.parse.quote_plus(json.dumps({k: str(v) for k, v in data.items()}))
self.session.post(f"{self.uri}?data={params}") if http_method == "POST":
self.session.post(f"{self.uri}?data={params}")
elif http_method == "GET":
return self.session.get(f"{self.uri}")
def datachange_notification(self, node, val, data): def datachange_notification(self, node, val, data):
self.call(node=node, val=val, data=data) self.call(node=node, val=val, data=data)
...@@ -72,6 +75,17 @@ async def main(): ...@@ -72,6 +75,17 @@ async def main():
if xml is not None: if xml is not None:
await server.import_xml(xml) await server.import_xml(xml)
# read previous state as saved in ERP5 backend
erp5_json = erp5_handler.call(http_method="GET").json()
_logger.error(erp5_json)
for k,v in erp5_json.items():
# set
node = server.get_node(k)
_logger.error("Set %s = %s at %s" %(k, v, node))
# XXX: this leads to a change notification which calls ERP5 and endless loop!
#await node.write_value(v)
if erp5_handler: if erp5_handler:
subscription = await server.create_subscription(1000, erp5_handler) subscription = await server.create_subscription(1000, erp5_handler)
await subscription.subscribe_events() await subscription.subscribe_events()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment