"""Helpers.""" from connectors.abacus_db import AbacusMysqlConnection from connectors.art_relation_db import ARMysqlConnection from adjustment.data_class import DataClass from adjustment.sql_templates import GET_ACCOUNT_BY_IDS from adjustment.sql_templates import GET_ADJUSTMENT_TYPES from adjustment.sql_templates import GET_CONTRACTS_BY_IDS from adjustment.sql_templates import GET_CONTRACT_TERMS_BY_TYPE_AND_CONTRACT_ID from adjustment.sql_templates import GET_STATEMENT_PERIODS_BY_STATEMENT_YEARS from adjustment.sql_templates import GET_UPCS def get_adjustments(): """Get adjustments and store data in dataclass variable.""" adjustments = AbacusMysqlConnection.execute_sql_query(GET_ADJUSTMENT_TYPES) if adjustments is not None: adjustments_types = [adjustment['type_name'] for adjustment in adjustments] DataClass._set_adjustments_types(adjustments_types) def get_and_set_valid_account_ids(account_ids: list): """Get account_ids present in abacus db and store it in dataclass variable.""" if not account_ids: return False valid_account_ids = AbacusMysqlConnection.execute_sql_query( GET_ACCOUNT_BY_IDS.format(account_ids=(', '.join(account_ids))) ) if valid_account_ids: account_ids = [str(account['account_id']) for account in valid_account_ids] DataClass._set_account_ids(account_ids) def get_and_set_valid_contract_ids(contract_ids: list): """Get contract_ids present in abacus db and store it in dataclass variable.""" if not contract_ids: return False valid_contract_ids = AbacusMysqlConnection.execute_sql_query( GET_CONTRACTS_BY_IDS.format(contract_ids=(', '.join(contract_ids))) ) if valid_contract_ids: contract_ids = [str(contract['contract_id']) for contract in valid_contract_ids] DataClass._set_contract_ids(contract_ids) def get_and_set_statement_periods(years: list): """Get statement_periods present in abacus db and store it in dataclass variable.""" if not years: return False statement_periods = AbacusMysqlConnection.execute_sql_query( GET_STATEMENT_PERIODS_BY_STATEMENT_YEARS.format(statement_years=(', '.join(years))) ) if statement_periods: DataClass._set_statement_periods(statement_periods) def get_and_set_upcs(upcs: list): """Get ups present in art-relation db and store it in dataclass variable.""" if not upcs: return False release_upcs = ARMysqlConnection.execute_sql_query( GET_UPCS.format(upcs=(', '.join(upcs))) ) if release_upcs: DataClass._set_upcs(release_upcs) def get_and_set_contract_product_terms(contract_ids: list): """Get product terms for specified contract ids and store it in dataclass variable.""" if not contract_ids: return False CONTRACT_PRODUCT_TERM = 'product' contract_product_terms = AbacusMysqlConnection.execute_sql_query( GET_CONTRACT_TERMS_BY_TYPE_AND_CONTRACT_ID.format( contract_ids=(', '.join(contract_ids)) ), tuple([CONTRACT_PRODUCT_TERM]) ) if contract_product_terms: DataClass._set_contract_product_terms(contract_product_terms) def get_and_set_contract_label_terms(contract_ids): """Get label terms for specified contract ids and store it in dataclass variable.""" if not contract_ids: return False CONTRACT_LABEL_TERM = 'label' contract_label_terms = AbacusMysqlConnection.execute_sql_query( GET_CONTRACT_TERMS_BY_TYPE_AND_CONTRACT_ID.format( contract_ids=(', '.join(contract_ids)) ), tuple([CONTRACT_LABEL_TERM]) ) if contract_label_terms: DataClass._set_contract_label_terms(contract_label_terms)