def load_awarded(cnx, file_name):
    pk_atm_main, tender_case_no, root_element = eta.init(file_name)
    if root_element is None \
            or pk_atm_main is None or tender_case_no is None \
            or pk_atm_main == '' or tender_case_no == '':
        logger.error('Fail to extract data from file: ' + file_name)
        return

    pk = {'pk_atm_main': pk_atm_main, 'tender_case_no': tender_case_no}
    logger.info('Updating database (pkAtmMain: {}, tenderCaseNo: {})'.format(pk_atm_main, tender_case_no))

    try:
        cur = cnx.cursor(buffered=True)

        data = eta.get_organization_info_dic(root_element)
        data.update(pk)
        cur.execute(gen_insert_sql('organization_info', data))

        data = eta.get_procurement_info_dic(root_element)
        data.update(pk)
        cur.execute(gen_insert_sql('procurement_info', data))

        data = eta.get_tender_info_dic(root_element)
        for tender in data.values():
            tender.update(pk)
            cur.execute(gen_insert_sql('tender_info', tender))

        data = eta.get_tender_award_item_dic(root_element)
        for item in data.values():
            for tender in item.values():
                tender.update(pk)
                cur.execute(gen_insert_sql('tender_award_item', tender))

        data = eta.get_evaluation_committee_info_list(root_element)
        for committee in data:
            committee.update(pk)
            cur.execute(gen_insert_sql('evaluation_committee_info', committee))

        data = eta.get_award_info_dic(root_element)
        data.update(pk)

        cur.execute('SET NAMES utf8mb4')
        cur.execute(gen_insert_sql('award_info', data))
        cnx.commit()
    except mysql.connector.Error as e:
        outstr = 'Fail to update database (pkAtmMain: {}, tenderCaseNo: {})\n\t{}'.format(pk_atm_main,
                                                                                          tender_case_no,
                                                                                          e)
        logger.warn(outstr)
        with open('load.err', 'a', encoding='utf-8') as err_file:
            err_file.write(outstr)
    except AttributeError as e:
        outstr = 'Corrupted content. Update skipped (pkAtmMain: {}, tenderCaseNo: {})\n\t{}'.format(pk_atm_main,
                                                                                                    tender_case_no,
                                                                                                    e)
        logger.warn(outstr)
        with open('load.err', 'a', encoding='utf-8') as err_file:
            err_file.write(outstr)
Example #2
0
def load_awarded(cnx_info, file_name):
    pk_atm_main, tender_case_no, root_element = eta.init(file_name)
    if root_element is None \
            or pk_atm_main is None or tender_case_no is None \
            or pk_atm_main == '' or tender_case_no == '':
        logger.error('Fail to extract data from file: ' + file_name)
        return

    pk = {'pk_atm_main': pk_atm_main, 'tender_case_no': tender_case_no}
    logger.info('Updating database (pkAtmMain: {}, tenderCaseNo: {})'.format(
        pk_atm_main, tender_case_no))

    try:
        cnx = mysql.connector.connect(**cnx_info)
        cnx.autocommit = False
        cur = cnx.cursor(buffered=True)

        data = eta.get_organization_info_dic(root_element)
        data.update(pk)
        cur.execute(gen_insert_sql('organization_info', data))

        data = eta.get_procurement_info_dic(root_element)
        data.update(pk)
        cur.execute(gen_insert_sql('procurement_info', data))

        data = eta.get_tender_info_dic(root_element)
        for tender in data.values():
            tender.update(pk)
            cur.execute(gen_insert_sql('tender_info', tender))

        data = eta.get_tender_award_item_dic(root_element)
        for item in data.values():
            for tender in item.values():
                tender.update(pk)
                cur.execute(gen_insert_sql('tender_award_item', tender))

        data = eta.get_evaluation_committee_info_list(root_element)
        for committee in data:
            committee.update(pk)
            cur.execute(gen_insert_sql('evaluation_committee_info', committee))

        data = eta.get_award_info_dic(root_element)
        data.update(pk)

        cur.execute('SET NAMES utf8mb4')
        cur.execute(gen_insert_sql('award_info', data))
        cnx.commit()
    except mysql.connector.Error as e:
        if e.errno == errorcode.ER_ACCESS_DENIED_ERROR:
            logger.error("Something is wrong with your user name or password.")
        elif e.errno == errorcode.ER_BAD_DB_ERROR:
            logger.error("Database does not exist.")
        else:
            outstr = 'Fail to update database (pkAtmMain: {}, tenderCaseNo: {})\n\t{}'.format(
                pk_atm_main, tender_case_no, e)
            logger.warn(outstr)
            with open('load.err', 'a', encoding='utf-8') as err_file:
                err_file.write(outstr)
    except AttributeError as e:
        outstr = 'Corrupted content. Update skipped (pkAtmMain: {}, tenderCaseNo: {})\n\t{}'.format(
            pk_atm_main, tender_case_no, e)
        logger.warn(outstr)
        with open('load.err', 'a', encoding='utf-8') as err_file:
            err_file.write(outstr)
    else:
        cnx.close()
Example #3
0
def load_awarded(cnx_info, file_name):
    pk_atm_main, tender_case_no, root_element = eta.init(file_name)
    if root_element is None \
            or pk_atm_main is None or tender_case_no is None \
            or pk_atm_main == '' or tender_case_no == '':
        logger.error('Fail to extract data from file: ' + file_name)
        return

    pk = {'pk_atm_main': pk_atm_main, 'tender_case_no': tender_case_no}
    logger.info('Updating database (pkAtmMain: {}, tenderCaseNo: {})'.format(
        pk_atm_main, tender_case_no))

    try:
        cnx = psycopg2.connect(**cnx_info)
        cnx.autocommit = False
        cur = cnx.cursor()

        data = eta.get_organization_info_dic(root_element)
        data.update(pk)
        cur.execute(gen_insert_sql('organization_info', data))

        data = eta.get_procurement_info_dic(root_element)
        data.update(pk)
        cur.execute(gen_insert_sql('procurement_info', data))

        data = eta.get_tender_info_dic(root_element)
        for tender in data.values():
            tender.update(pk)
            cur.execute(gen_insert_sql('tender_info', tender))

        data = eta.get_tender_award_item_dic(root_element)
        for item in data.values():
            for tender in item.values():
                tender.update(pk)
                cur.execute(gen_insert_sql('tender_award_item', tender))

        data = eta.get_evaluation_committee_info_list(root_element)
        for committee in data:
            committee.update(pk)
            cur.execute(gen_insert_sql('evaluation_committee_info', committee))

        data = eta.get_award_info_dic(root_element)
        data.update(pk)

        cur.execute(gen_insert_sql('award_info', data))
        cnx.commit()
    except psycopg2.Error as e:
        logger.error(e)
        outstr = 'Fail to update database (pkAtmMain: {}, tenderCaseNo: {})\n\t{}'.format(
            pk_atm_main, tender_case_no, e)
        logger.warn(outstr)
        with open('load.err', 'a', encoding='utf-8') as err_file:
            err_file.write(outstr)
        cnx.rollback()
    except AttributeError as e:
        outstr = 'Corrupted content. Update skipped (pkAtmMain: {}, tenderCaseNo: {})\n\t{}'.format(
            pk_atm_main, tender_case_no, e)
        logger.warn(outstr)
        with open('load.err', 'a', encoding='utf-8') as err_file:
            err_file.write(outstr)
    else:
        cnx.close()