"""Miscellaneous report related utils.""" import copy from processing_accounting.flows.custom_export import setting from processing_accounting.flows.custom_export.constants import report_type def is_physical_report(transaction_types): """Check if transaction_types correspond to physical report. Args: transaction_types (str): comma separated list of transaction types Returns: bool: True if transaction types correspond to physical export report, False otherwise. """ return transaction_types == report_type.PHYSICAL def get_report_schema(excluded_columns, report_version, transaction_types): """Build field to header report schema with respect to exclude columns. Args: excluded_columns (list): columns excluded from the report report_version (int): version of the report transaction_types (str): comma separated list of transaction types Returns: collections.OrderedDict: ordered mapping for the report """ if is_physical_report(transaction_types): header_map = setting.DEFAULT_PHYSICAL_REPORT_SCHEMA else: header_map = setting.header_mapping.get( report_version, setting.DEFAULT_HEADER_MAP) report_schema = copy.deepcopy(header_map) for excluded_column in excluded_columns: report_schema.pop(excluded_column, None) return report_schema