You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

68 lines
2.3 KiB
Python

"""
This file contains the implementation of interactions with the registry
"""
import cms
import transport
import copy
import json
@cms.Plugin(mimetype='application/json',method='GET')
def get (**_args) :
"""
This function will return the list of labels available
"""
_data = copy.copy(transport.registry.DATA)
_context = _args['config']['system']['context']
_labels = []
for _key in _data :
if _key not in ['default','email','version'] :
_provider = _data[_key]['provider']
_name = None
if 'table' in _data[_key] :
_name = 'table'
elif 'collection' in _data[_key] :
_name = 'collection'
_table = 'NA' if not _name else _data[_key][_name]
_plugins = [] if 'plugins' not in _data[_key]else _data[_key]['plugins']
_icon = f'{_context}/api/disk/read?uri=www/html/_assets/images/{_provider}.png'
_labels.append({"label":_key,"provider":_provider,'table':_table,'icon':_icon})
else:
continue
return _labels
@cms.Plugin(mimetype="application/json",method="GET")
def providers (**_args):
technologies = []
transport.supported().apply(lambda row: [technologies.append({"group":row.name,"name":_name}) for _name in row if _name != '' and row.name in ['sql','nosql','warehouse']],axis=0).tolist()
return technologies
@cms.Plugin(mimetype="text/plain")
def version (**_args) :
return transport.__edition__+ ' Edition '+transport.__version__
@cms.Plugin(mimetype="application/json",method="POST")
def apply (**_args):
_request = _args['request']
_label = _request.json['label']
_query = _request.json['query']
_qreader = transport.get.reader(label=_label)
if not _query.startswith("{") :
_data = _qreader.apply(_query) #.astype(str).to_dict(orient='split')
else:
_data = _qreader.read( **json.loads(_query))
if _data.shape[0] :
_data = _data.astype(str).to_dict(orient='split')
if 'index' in _data:
del _data['index']
else:
_data = []
_qreader.close()
return _data
def set(**_args):
"""
This function will update the registry with data for supported technologies
"""
pass