#!/usr/bin/env python3
”'
functions that handle the global dictionary
”'
import json as _json
import os as _os
import HasyUtils
import tango
import json
environment = None
class PersistEnv( dict):
"""
create a persistent environment based on the environment attribute of the blueskyServer device
Usage:
env = PersistEnv()
env[ 'someKey'] = 12
Needed: BlueskyServer device
"""
def __init__(self):
lst = HasyUtils.getDeviceNamesByClass( "BlueskyServer")
if len( lst) != 1:
print( "env.PersistEnv: too many BlueskyServer, %s" % repr( lst))
return
try:
self.proxyBlueskyServer = tango.DeviceProxy( lst[0])
except Exception as e:
print( "env.PersistEnv: caught an exceptionm %s" % repr( e))
return
self._load()
return
def update( self, hsh):
for k, v in hsh.items():
self[k] = v
self._dump()
def _load(self):
hsh = json.loads( self.proxyBlueskyServer.read_attribute( 'Environment').w_value)
self.update( hsh)
def _dump(self):
self.proxyBlueskyServer.Environment = _json.dumps( self)
def __getitem__(self, key):
return dict.__getitem__(self, key)
def __setitem__(self, key, val):
dict.__setitem__(self, key, val)
self._dump()
def __repr__(self):
dictrepr = dict.__repr__(self)
return '%s(%s)' % (type(self).__name__, dictrepr)