"""Lambda managerights_enable function module.""" from common_config import logger from constants import general import mysql import sql_queries import sqlalchemy from warmer_util import catch_warmer_event @catch_warmer_event() def handler(event, context): """Lambda entry point.""" active_contracts = get_active_contracts() if not active_contracts: return logger.info('There are no active Contract(s)') enable_feature_vendors = [] disable_feature_vendors = [] update_feature_vendors = [] for contract in active_contracts: if contract.royalty_collection_territory: update_feature_vendors.append(contract.vendor_id) enable_feature_vendors.append(contract.vendor_id) else: disable_feature_vendors.append(contract.vendor_id) enable_message = 'Not enabled feature' disable_message = 'Not disabled feature' if update_feature_vendors: update_feature(update_feature_vendors) if enable_feature_vendors: enable_message = enable_feature(enable_feature_vendors) if disable_feature_vendors: disable_message = disable_feature(disable_feature_vendors) return logger.info('%s and %s.' % (enable_message, disable_message)) @mysql.wrap_db_errors def get_active_contracts(): """Get set of active_contracts details from AR. Returns: list: active_contracts details as dict """ with mysql.ar_db_session() as session: # execute query query = session.execute( sqlalchemy.text(sql_queries.OBTAIN_ACTIVE_CONTRACTS)) contracts = query.all() return [contract for contract in contracts] @mysql.wrap_db_errors def enable_feature(vendors): """Enable Performance Rights feature for the vendors. Args: message (list): list of vendor_id """ with mysql.ar_db_session() as session: # execute query session.execute( sqlalchemy.text( sql_queries.ENABLE_FEATURE.format( vendor_ids=', '.join( str(e) for e in vendors)))) return 'Enabled feature for vendors {vendors}'.format( vendors=vendors) @mysql.wrap_db_errors def update_feature(vendors): """Update Performance Rights feature for the vendors. Args: message (list): list of vendor_id """ with mysql.ar_db_session() as session: # execute query session.execute( sqlalchemy.text( sql_queries.UPDATE_FEATURE.format( vendor_ids=', '.join( str(e) for e in vendors), last_modified_by=general.LAST_MODIFIED_BY, user_type=general.USER_TYPE))) return True @mysql.wrap_db_errors def disable_feature(vendors): """Disable Performance Rights feature for the vendors. Args: message (list): list of vendor_id """ insert_list = [] for e in vendors: insert_list.append( '({vendor_id}, 10, 0, {last_modified_by}, "{user_type}")'.format( vendor_id=e, last_modified_by=general.LAST_MODIFIED_BY, user_type=general.USER_TYPE)) with mysql.ar_db_session() as session: # execute query session.execute( sqlalchemy.text( sql_queries.DISABLE_FEATURE.format( vendor_values=', '.join(insert_list)))) return 'Disabled feature for vendors {vendors}'.format( vendors=vendors)