Beispiel #1
0
def _read_and_process_data(templateHelper):
    """
        Reading file csv, before an file with success
    """
    sender = Sender(config, templateHelper)

    name_file_data_email = config.name_file_data_email

    with open("../data/input/{}".format(name_file_data_email)) as csv_file:
        csv_reader = csv.reader(csv_file, delimiter=';')

        line_count = 0

        name_file_working = _create_name_file_working(name_file_data_email)

        with open('../data/working/{}'.format(name_file_working),
                  mode='w',
                  newline='') as csv_file_writer:
            writer = csv.DictWriter(csv_file_writer,
                                    fieldnames=Client.columns_name(),
                                    delimiter=";")

            writer.writeheader()
            client_dict = {}
            value = ''
            numRows = _get_lines_csv_reader(name_file_data_email)
            for row in csv_reader:
                if line_count > 0:
                    client = _get_client(row)

                    if client.state != StateClient.ACTIVE.value:
                        logger.debug(
                            'mail to {} <{}> not send but the state is {}'.
                            format(client.contact, client.email, client.state))
                        value = '--'
                    else:
                        try:
                            sender.sendMessage(client)
                        except SendMailException as sEx:
                            logger.fatal(sEx)
                            raise
                        except smtplib.SMTPRecipientsRefused as rR:
                            logger.error(rR)
                            value = 'KO'
                        except IOError as e:
                            logger.error(e)
                            sys.exit(1)  # Not found template
                        except:
                            logger.error(
                                "Problem sending email for client : {} ".
                                format(client.to_string()))
                            value = 'KO'
                        else:
                            logger.debug(
                                'mail to {} <{}> successfully send success'.
                                format(client.contact, client.email))
                            value = 'OK'

                    client_dict = client.to_dict()
                    client_dict['result'] = value
                    writer.writerow(client_dict)

                    p.calculateAndUpdate(line_count, numRows)
                line_count += 1

            logger.info(f'Processed {line_count - 1} mails.')

        _move_file_to_processed_directory(name_file_working,
                                          templateHelper.name_template)