"""Fetches all contracts and calls ows-event to trigger sync to sap.""" import datetime import os import mysql.connector import requests RUN_CONTROLLER_ID = 6 CONTRACT_IDS_TO_RUN = None # if none ALL contracts in run controller will be run ENVIRONMENT = os.environ.get('ENVIRONMENT', 'qa') OWS_ABACUS_EVENT = f'https://{ENVIRONMENT}-ows-abacus-event.theorchard.io' DB_USERNAME = os.environ.get('DB_USERNAME', 'dczinsky') DB_PASSWORD = os.environ.get('DB_PASSWORD') DB_HOST = os.environ.get('DB_HOST', 'qa-royalty-accounting-db.theorchard.io') DB_NAME = os.environ.get('DB_NAME', 'royalty_accounting') def run_contract(contract_id): if CONTRACT_IDS_TO_RUN is None: return True if contract_id in CONTRACT_IDS_TO_RUN: return True return False cnx = mysql.connector.connect( user=DB_USERNAME, password=DB_PASSWORD, host=DB_HOST, database=DB_NAME ) cursor = cnx.cursor() query = (f'SELECT contract_id FROM run_controller_contract WHERE run_controller_id={RUN_CONTROLLER_ID};') cursor.execute(query) for contract in cursor: contract_id = contract[0] if run_contract(contract_id): print(contract_id) requests.post( f'{OWS_ABACUS_EVENT}/abacus-event', json={ 'event_date': datetime.datetime.now().strftime('%Y-%m-%dT%H:%M:%S.%f+0000'), 'event_name': 'sap_sync_contract', 'target_id': contract_id, 'target_type': 'contract'}) # Sleep 2 seconds bc Airflow is a pain in the butt # time.sleep(2) cnx.close()