Skip to content
Snippets Groups Projects
Commit 6ef7f79f authored by John Swinbank's avatar John Swinbank
Browse files

Don't do all that decoding

parent 0d4d3e41
No related branches found
No related tags found
No related merge requests found
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
Date created: 2020-02-07 Date created: 2020-02-07
Description: ESAP services for VO. Description: ESAP services for VO.
""" """
from collections import namedtuple
from rest_framework import serializers from rest_framework import serializers
from .query_base import query_base from .query_base import query_base
import pyvo as vo import pyvo as vo
...@@ -154,30 +155,14 @@ class tap_service_connector(query_base): ...@@ -154,30 +155,14 @@ class tap_service_connector(query_base):
# http://www.ivoa.net/documents/ObsCore/20170509/REC-ObsCore-v1.1-20170509.pdf # http://www.ivoa.net/documents/ObsCore/20170509/REC-ObsCore-v1.1-20170509.pdf
record = {} record = {}
result = ''
# if * then iterate on the full row, otherwise just on the selection # if * then iterate on the full row, otherwise just on the selection
if dataset.select_fields=='*': if dataset.select_fields=='*':
values = row.values() result = ",".join(str(value) for value in row.values())
for value in values:
try:
result = result + value.decode('utf-8') + ','
except:
try:
result = result + str(value) + ','
except:
pass
else: else:
select_list = dataset.select_fields.split(',') select_list = dataset.select_fields.split(',')
result = ",".join(str(row[key]) for key in select_list)
for select in select_list:
try:
result = result + row[select].decode('utf-8') + ','
except:
pass
# cut off the last ','
result = result[:-1]
record['dataset'] = dataset.uri record['dataset'] = dataset.uri
record['dataset_name'] = dataset_name record['dataset_name'] = dataset_name
record['result'] = result record['result'] = result
...@@ -185,77 +170,35 @@ class tap_service_connector(query_base): ...@@ -185,77 +170,35 @@ class tap_service_connector(query_base):
# add some fields to return some rendering information for the frontend. # add some fields to return some rendering information for the frontend.
# for ivoa.obscore field names see: http://www.ivoa.net/documents/ObsCore/20170509/REC-ObsCore-v1.1-20170509.pdf # for ivoa.obscore field names see: http://www.ivoa.net/documents/ObsCore/20170509/REC-ObsCore-v1.1-20170509.pdf
try:
record['title'] = row[dataset.title_field].decode('utf-8')
except:
pass
try:
record['dataproduct_type'] = row['dataproduct_type'].decode('utf-8')
except:
pass
try:
record['calibration_level'] = row['calib_level']
record['level'] = row['calib_level']
except:
pass
try:
record['thumbnail'] = row[dataset.thumbnail_field].decode('utf-8')
except:
record['thumbnail'] = ''
try:
record['url'] = row[dataset.url_field].decode('utf-8')
except:
pass
try:
record['name'] = row['target_name'].decode('utf-8')
except:
record['name'] = 'unknown'
try: # We'll map field "src" in the result to field "dst" in the output
record['ra'] = row['s_ra'] # record. If "src" doesn't exist, we'll use "default" if specified,
except: # otherwise we won't set the field.
pass KeywordMapping = namedtuple('KeywordMapping', ['src', 'dst', 'default'])
keyword_mappings = [
try: KeywordMapping(dataset.title_field, 'title', None),
record['dec'] = row['s_dec'] KeywordMapping('dataproduct_type', 'dataproduct_type', None),
except: KeywordMapping('calib_level', 'calibration_level', None),
pass KeywordMapping('calib_level', 'level', None),
KeywordMapping(dataset.thumbnail_field, 'thumbnail', ''),
try: KeywordMapping(dataset.url_field, 'url', None),
record['fov'] = row['s_fov'] KeywordMapping('target_name', 'name', 'unknown'),
except: KeywordMapping('target_name', 'target', None),
pass KeywordMapping('s_ra', 'ra', None),
KeywordMapping('s_dec', 'dec', None),
try: KeywordMapping('s_fov', 'fov', None),
record['target'] = row['target_name'].decode('utf-8') KeywordMapping('s_fov', 'fov', None),
except: KeywordMapping('obs_collection', 'obs_collection', None),
pass KeywordMapping('obs_collection', 'collection', 'unknown'),
KeywordMapping('access_estsize', 'size', None),
try: KeywordMapping('facility_name', 'facility', None),
record['obs_collection'] = row['obs_collection'].decode('utf-8') KeywordMapping('instrument_name', 'instrument', None)
record['collection'] = row['obs_collection'].decode('utf-8') ]
except: for mapping in keyword_mappings:
record['collection'] = 'unknown' if mapping.src in row:
record[mapping.dst] = row[mapping.src]
try: elif mapping.default is not None:
record['size'] = row['access_estsize'] record[mapping.dst] = mapping.default
except:
pass
try:
record['facility'] = row['facility_name'].decode('utf-8')
except:
pass
try:
record['instrument'] = row['instrument_name'].decode('utf-8')
except:
pass
results.append(record) results.append(record)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment