def __init__(self, arg_sd=None, arg_ed=None, arg_to=None, pivoted='pivoted'): self.log_prefix = BUCKET_FOLDER + '_' + PROJECT Log.init(self.log_prefix) Log.info(self.log_prefix + ' Opening SQL connector') self.project_name = PROJECT self.rds_conn = ProjectConnector(self.project_name, DbUsers.CalculationEng) self.pivoted = True if pivoted == 'pivoted' else False self.current_date = datetime.datetime.utcnow().date() self.start_date = self.current_date - datetime.timedelta(1) self.end_date = self.current_date - datetime.timedelta(1) self.start_date = arg_sd if arg_sd else self.start_date.strftime( '%Y-%m-%d') self.end_date = arg_ed if arg_ed else self.end_date.strftime( '%Y-%m-%d') self.report_name = FILE_NAME + '_' + str(self.start_date) + '_' + str(self.end_date) \ + ('_pivoted' if self.pivoted else '') \ + '_' + str(int(time.mktime(datetime.datetime.now().timetuple()))) \ + '.xlsx' self.receivers = arg_to.split(',') if arg_to else None
def __init__(self, host, user_name, password, port=22): cnopts = pysftp.CnOpts() cnopts.hostkeys = None self.sftp = pysftp.Connection(host, username=user_name, password=None, cnopts=cnopts, port=port, private_key=os.path.join( os.path.dirname( os.path.realpath(__file__)), 'carrefourar.pem')) Log.init('connected to SFTP')
('300013', 'SANOFI_SECONDARY_MINIMUM_FACINGS', 'Product Minimum Facings Secondary', '1.0.0', '999', '999', '1990-01-01', '2150-10-15', 'PS Customer Specific', '3') , ('300014', 'SANOFI_SECONDARY_MINIMUM_FACINGS_BY_SKU', 'Product Minimum Facings Secondary By SKU', '1.0.0', '1', '999', '1990-01-01', '2150-10-15', 'PS Customer Specific', '3') , ('300015', 'SANOFI_MSL_COMPLIANCE', 'MSL Compliance', '1.0.0', '999', '999', '1990-01-01', '2150-10-15', 'PS Customer Specific', '3') , ('300016', 'SANOFI_MSL_COMPLIANCE_BY_SKU', 'MSL Compliance By SKU', '1.0.0', '1', '999', '1990-01-01', '2150-10-15', 'PS Customer Specific', '3')""" cur = self.aws_conn.db.cursor() try: cur.execute(kpi_calculation_stage_query) self.aws_conn.db.commit() except: pass try: cur.execute(kpi_entity_type_query) self.aws_conn.db.commit() except: pass # try: # cur.execute(level2_query) # self.aws_conn.db.commit() # except: # pass if __name__ == '__main__': Log.init('test') Config.init() for project in ['diageogh']: print 'start project: ' + str(project) kpi = AddKPIs(project) kpi.add_kpi_level_2()
# """ # DELETE FROM `pservice`.`kpi_targets`; # INSERT INTO `static`.`kpi_calculation_stage` (`pk`, `name`) VALUES ('3', 'PS Customer Specific'); # INSERT INTO `static`.`kpi_family` (`pk`, `name`, `kpi_calculation_stage_fk`) VALUES ('21', 'assortment', '3'); # INSERT INTO `static`.`kpi_family` (`pk`, `name`, `kpi_calculation_stage_fk`) VALUES ('22', 'sos', '3'); # INSERT INTO `static`.`kpi_level_2` (`pk`, `type`, `client_name`, `kpi_family_fk`, `version`, `numerator_type_fk`, `denominator_type_fk`, `kpi_calculation_stage_fk`, `session_relevance`, `scene_relevance`, `planogram_relevance`, `live_session_relevance`, `live_scene_relevance`, `is_percent`) VALUES ('1', 'SOS_manufacturer_category_cooler', 'SOS Cooler', '22', '1', '3', '4', '3', '1', '0', '0', '0', '0', '0'); # INSERT INTO `static`.`kpi_level_2` (`pk`, `type`, `client_name`, `kpi_family_fk`, `version`, `numerator_type_fk`, `denominator_type_fk`, `kpi_calculation_stage_fk`, `session_relevance`, `scene_relevance`, `planogram_relevance`, `live_session_relevance`, `live_scene_relevance`, `is_percent`) VALUES ('2', 'SOS_manufacturer_category_ambient', 'SOS Ambient', '22', '1', '3', '4', '3', '1', '0', '0', '0', '0', '0'); # INSERT INTO `static`.`kpi_entity_type` (`pk`, `name`, `table_name`) VALUES ('1010', 'assortment', 'pservice.assortment'); # """ for statement in statements.split('\n'): if len(statement): cur = self.aws_conn.db.cursor() print statement cur.execute(statement) self.aws_conn.db.commit() if __name__ == '__main__': Log.init('Run SQL') Config.init() for project in ['molsoncoorshr-sand']: print 'Start Project: ' + str(project) sql_to_run = MOLSONCOORSHRRunSql(project) sql_to_run.run_it()
Log.info("Execution targets are uploaded successfully. " + ("Incorrect template data were ignored (see above)" if self.invalid_stores or self.stores_with_invalid_dates or self.stores_with_invalid_targets else "")) @staticmethod def parse_arguments(): """ This function gets the arguments from the command line / configuration in case of a local run and manages them. To run it locally just copy: -e prod --file **your file path** to the configuration parameters :return: """ parser = argparse.ArgumentParser(description='Execution Contract') parser.add_argument('--env', '-e', type=str, help='The environment - dev/int/prod') parser.add_argument('--file', type=str, required=True, help='The targets template') return parser.parse_args() if __name__ == '__main__': # LoggerInitializer.init(PROJECT) Log.init(PROJECT, 'CCRU Contract Execution targets upload') Config.init() CCRU_SANDContract().parse_and_upload_file()
def save_file(self, file_path, file_to_zip): with self.sftp.cd(file_path): self.sftp.put(file_to_zip) Log.init('upload file success')