diff --git a/main.py b/main.py
index 4a19f73..8286d94 100644
--- a/main.py
+++ b/main.py
@@ -44,7 +44,7 @@ def restore_uuid(oid):
return str(uuid)
-def get_catalog(params, files, url):
+def load_catalog(params, files, url):
date = datetime.datetime.now()
rxmls = RequestXmlService()
req = ET.fromstring(params['query_data'])
@@ -99,7 +99,6 @@ def get_objects(params, files, url):
main_filename = None
for uid in uids:
obj = json.loads(get_object(uid))
- print(type(obj))
for file in obj['properties'].get('c1000', []):
if not main_filename:
main_filename = file['fileName']
@@ -107,20 +106,66 @@ def get_objects(params, files, url):
zipf.writestr(f'{main_filename}/{file["fileName"]}', res.content)
zipf.close()
response_files = [{'name': filename, 'url': filepath, 'size': os.path.getsize(filepath)}]
- print(response_files)
- # proxy = ServerProxy(url)
- # proxy.send(response_params, response_files, 'http://10.10.8.27:9000/')
+ proxy = ServerProxy(url)
+ proxy.send(response_params, response_files, 'http://10.10.8.27:9000/')
def get_metadata(params, files, url):
- pass
+ date = datetime.datetime.now()
+ rxmls = RequestXmlService()
+ req = ET.fromstring(params['query_data'])
+ req_id = rxmls.get_request_uuid(req)
+ res_id = uuid4().hex
+ res = rxmls.get_request_document(res_id, req_id)
+ rxmls.set_result(res, 0, '')
+ objs = req.find('getMetadataByIds')
+ uids = [restore_uuid(x.get('id')) for x in objs.findall('chart')]
+
+ rxmls.set_result(res, 0, '')
+ response_params = {
+ 'from': params['to'],
+ 'to': params['from'],
+ 'ts_added': date.timestamp(),
+ 'user_id': '1',
+ 'user_id_to': params['user_id'],
+ 'query_type': 1024,
+ 'query_data': ET.tostring(res, encoding='unicode', xml_declaration=True)
+ }
+ filename = uuid4().hex
+ filepath = '/tmp/' + filename
+ zipf = zipfile.ZipFile(filepath, "w")
+ content = ET.Element('getMetadataResponse')
+
+ for uid in uids:
+ obj = json.loads(get_object(uid))
+ date = datetime.datetime.fromisoformat(obj['date_updated'])
+ chart = ET.SubElement(content, 'chart', {
+ 'id': UUID(obj['uid']).hex,
+ 'updated': str(date.timestamp()),
+ })
+ for key in obj['properties']:
+ if not key.startswith('c'):
+ continue
+ mdel = ET.SubElement(chart, 'mdItem', {
+ 'code': key.replace('_', '.'),
+ 'name': key,
+ 'value': str(obj['properties'].get(key, '')),
+ 'isBase': 'false',
+ 'groupId': '',
+ 'groupName': '',
+ })
+ zipf.writestr(f'metadata.xml', ET.tostring(content, encoding='unicode', xml_declaration=True))
+ zipf.close()
+ response_files = [{'name': filename, 'url': filepath, 'size': os.path.getsize(filepath)}]
+ proxy = ServerProxy(url)
+ proxy.send(response_params, response_files, 'http://10.10.8.27:9000/')
def accept(params, files, url):
print(params, files, url)
print('Accept')
if params['query_type'] == 4:
- get_catalog(params, files, url)
+ load_catalog(params, files, url)
if params['query_type'] == 1:
get_objects(params, files, url)
if params['query_type'] == 24:
@@ -150,13 +195,13 @@ def main():
def test():
- params = {"from": "tcp://kptsp_vb", "query_data": "", "query_type": 1, "to": "tcp://bnd127", "user_id": "3302", "ts_added": 1679825320.653038}
+ params = {"from": "tcp://kptsp_vb", "query_data": "", "query_type": 24, "to": "tcp://bnd127", "user_id": "3302", "ts_added": 1679825320.653038}
files = []
url = 'http://127.0.0.1:7000/xmlrpc'
# accept(params, files, url)
- get_objects(params, files, url)
+ get_metadata(params, files, url)
if __name__ == '__main__':
- # main()
- test()
+ main()
+ # test()