from .named_enum import DocStatus from .models import HILDoc, AFCDoc from . import consts class DocHandler: @staticmethod def get_name(info, key, length): if not isinstance(info, dict): return '' src_name = info.get(key, '') if len(src_name) < length: return src_name else: return consts.LONG_NAME @staticmethod def get_link(doc_id, business_type, file='pdf'): if file == 'pdf': return '/data/{1}/{2}/{0}/{0}.pdf'.format(doc_id, business_type, consts.TMP_DIR_NAME) elif file == 'img': return '/data/{1}/{2}/{0}/{0}_img.zip'.format(doc_id, business_type, consts.TMP_DIR_NAME) elif file == 'src_excel': return '/data/{1}/{2}/{0}/src.xlsx'.format(doc_id, business_type, consts.TMP_DIR_NAME) else: return '/data/{1}/{2}/{0}/{0}.xlsx'.format(doc_id, business_type, consts.TMP_DIR_NAME) def get_doc_list(self, doc_queryset, business_type): for doc_dict in doc_queryset: if doc_dict['status'] not in [DocStatus.COMPLETE.value, DocStatus.UPLOAD_FAILED.value]: continue doc_id = doc_dict.get('id') doc_dict['pdf_link'] = self.get_link(doc_id, business_type) doc_dict['img_link'] = self.get_link(doc_id, business_type, file='img') doc_dict['excel_link'] = self.get_link(doc_id, business_type, file='excel') doc_dict['src_excel_link'] = self.get_link(doc_id, business_type, file='src_excel') return list(doc_queryset) @staticmethod def get_doc_class(business_type): return (HILDoc, consts.HIL_PREFIX) if business_type in consts.HIL_SET else (AFCDoc, consts.AFC_PREFIX) @staticmethod def fix_scheme(scheme): if scheme in consts.DOC_SCHEME_LIST: return scheme elif scheme.upper() in consts.DOC_SCHEME_LIST: return scheme.upper() else: return consts.DOC_SCHEME_LIST[0] @staticmethod def fix_data_source(data_source): if data_source in consts.DATA_SOURCE_LIST: return data_source elif data_source.upper() in consts.DATA_SOURCE_LIST: return data_source.upper() else: return consts.DATA_SOURCE_LIST[0]