"""Warms the cache before workers start consuming it.""" import datetime from os import environ from accounting import config from accounting.adapters.log import getlogger from accounting.cacheable import get_cache_adapter from accounting.data import buffered_cache_appended_fields from accounting.data import cache_active_label_contracts from accounting.data import cache_item from accounting.data import get_transaction_start_id from accounting.data import load_exchange_rates from accounting.data import load_owner_contracts from accounting.data import load_statements logger = getlogger() def update_cache_timestamp(): """Set cache's last_updated timestamp to the current time.""" cache_item( 'data', 'last_updated', datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')) def flush_cache(): """Flush Cache.""" adapter = get_cache_adapter() logger.info('Flushing cache.') adapter.flushall() logger.info('Warming Cache') def cache_statements(): """Cache statements.""" logger.info('Caching Statements.') statement_count = load_statements(environ.get('STATEMENTS_FILE')) logger.info('{:d} Statements Cached.'.format(statement_count)) def import_statements(): """Save statements to db.""" pass def cache_owner_contracts(): """Cache current owner contract data.""" load_owner_contracts() def cache_upc_metadata(): """Cache upc metadata.""" logger.info('Caching UPC Data.') row_count = buffered_cache_appended_fields() logger.info('{:d} UPC Rows Cached.'.format(row_count)) def start_id(): """Cache start id.""" logger.info('Caching Start ID') start_id = get_transaction_start_id() logger.info('Start ID Cached as {:d}.'.format(start_id)) def cache_label_contracts(): """Cache active label contracts.""" logger.info('Caching active label contracts') label_contract_count = cache_active_label_contracts() logger.info('Cached {:d} label contracts'.format(label_contract_count)) def cache_exchange_rates(): """Cache exchange rates for the current period.""" return load_exchange_rates(config.PERIOD_ID)