in 5-app-infra/3-artifact-publish/docker/cdmc/tag_engine_api/DataCatalogController.py [0:0]
def get_template(self, included_fields=None):
fields = []
try:
tag_template = self.client.get_tag_template(name=self.template_path)
except Exception as e:
msg = 'Error retrieving tag template {}'.format(self.template_path)
log_error(msg, e)
return fields
for field_id, field_value in tag_template.fields.items():
field_id = str(field_id)
if included_fields:
match_found = False
for included_field in included_fields:
if included_field['field_id'] == field_id:
match_found = True
if 'field_value' in included_field:
assigned_value = included_field['field_value']
else:
assigned_value = None
if 'query_expression' in included_field:
query_expression = included_field['query_expression']
else:
query_expression = None
break
if match_found == False:
continue
display_name = field_value.display_name
is_required = field_value.is_required
order = field_value.order
enum_values = []
field_type = None
if field_value.type_.primitive_type == datacatalog.FieldType.PrimitiveType.DOUBLE:
field_type = "double"
if field_value.type_.primitive_type == datacatalog.FieldType.PrimitiveType.STRING:
field_type = "string"
if field_value.type_.primitive_type == datacatalog.FieldType.PrimitiveType.BOOL:
field_type = "bool"
if field_value.type_.primitive_type == datacatalog.FieldType.PrimitiveType.TIMESTAMP:
field_type = "datetime"
if field_value.type_.primitive_type == datacatalog.FieldType.PrimitiveType.RICHTEXT:
field_type = "richtext"
if field_value.type_.primitive_type == datacatalog.FieldType.PrimitiveType.PRIMITIVE_TYPE_UNSPECIFIED:
field_type = "enum"
index = 0
enum_values_long = str(field_value.type_).split(":")
for long_value in enum_values_long:
if index > 0:
enum_value = long_value.split('"')[1]
#print("enum value: " + enum_value)
enum_values.append(enum_value)
index = index + 1
# populate dict
field = {}
field['field_id'] = field_id
field['display_name'] = display_name
field['field_type'] = field_type
field['is_required'] = is_required
field['order'] = order
if field_type == "enum":
field['enum_values'] = enum_values
if included_fields:
if assigned_value:
field['field_value'] = assigned_value
if query_expression:
field['query_expression'] = query_expression
fields.append(field)
return sorted(fields, key=itemgetter('order'), reverse=True)