in django_airavata/apps/api/thrift_utils.py [0:0]
def process_field(field, enable_date_time_conversion, required=False, read_only=False, allow_null=False):
"""
Used to process a thrift data type field
:param field:
:param required:
:param read_only:
:param allow_null:
:return:
"""
if field[1] in mapping:
# handling scenarios when the thrift field type is present in the
# mapping
field_class = mapping[field[1]]
kwargs = dict(required=required, read_only=read_only)
# allow_null isn't allowed for BooleanField
if field_class not in (BooleanField,):
kwargs['allow_null'] = allow_null
# allow_null CharField are also allowed to be blank
if field_class == CharField:
kwargs['allow_blank'] = allow_null
thrift_model_class = mapping[field[1]]
if enable_date_time_conversion and thrift_model_class == IntegerField and field[2].lower().endswith("time"):
thrift_model_class = UTCPosixTimestampDateTimeField
return thrift_model_class(**kwargs)
elif field[1] == TType.LIST:
# handling scenario when the thrift field type is list
list_field_serializer = process_list_field(field)
return ListField(child=list_field_serializer,
required=required,
read_only=read_only,
allow_null=allow_null)
elif field[1] == TType.STRUCT:
# handling scenario when the thrift field type is struct
return create_serializer(field[3][0],
required=required,
read_only=read_only,
allow_null=allow_null)