Add an export as CSV feature of the validation errors
This commit is contained in:
parent
55cfd4a7de
commit
18532f4bc0
1 changed files with 43 additions and 1 deletions
|
@ -317,7 +317,11 @@ def mass_validate_email(mail, simple=False):
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
||||||
from optparse import OptionParser
|
from optparse import OptionParser, OptionGroup
|
||||||
|
|
||||||
|
# Default options
|
||||||
|
default_output_delimiter = ";"
|
||||||
|
default_output_quotechar = '"'
|
||||||
|
|
||||||
parser = OptionParser()
|
parser = OptionParser()
|
||||||
# options
|
# options
|
||||||
|
@ -391,6 +395,33 @@ if __name__ == '__main__':
|
||||||
help="Read emails addresses to validate from from"
|
help="Read emails addresses to validate from from"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
output_opts = OptionGroup(parser, u"Output options")
|
||||||
|
output_opts.add_option(
|
||||||
|
'-o',
|
||||||
|
'--output-file',
|
||||||
|
action="store",
|
||||||
|
type='string',
|
||||||
|
dest="output_file",
|
||||||
|
help="Write emails addresses validation result as a CSV file"
|
||||||
|
)
|
||||||
|
output_opts.add_option(
|
||||||
|
'--delimiter',
|
||||||
|
action='store',
|
||||||
|
type='string',
|
||||||
|
dest='output_delimiter',
|
||||||
|
help="CSV ouput file delimiter (Default: %s)" % default_output_delimiter,
|
||||||
|
default=default_output_delimiter
|
||||||
|
)
|
||||||
|
output_opts.add_option(
|
||||||
|
'--quotechar',
|
||||||
|
action='store',
|
||||||
|
type='string',
|
||||||
|
dest='output_quotechar',
|
||||||
|
help="CSV ouput file quote character (Default: %s)" % default_output_quotechar,
|
||||||
|
default=default_output_quotechar
|
||||||
|
)
|
||||||
|
parser.add_option_group(output_opts)
|
||||||
|
|
||||||
(opts, emails) = parser.parse_args()
|
(opts, emails) = parser.parse_args()
|
||||||
|
|
||||||
# Enable and configure logging
|
# Enable and configure logging
|
||||||
|
@ -417,6 +448,10 @@ if __name__ == '__main__':
|
||||||
if not emails:
|
if not emails:
|
||||||
parser.error('You must specify emails address as arguments')
|
parser.error('You must specify emails address as arguments')
|
||||||
|
|
||||||
|
# If output is enabled, import csv library
|
||||||
|
if opts.output_file:
|
||||||
|
import csv
|
||||||
|
|
||||||
# Configure other options from command line arguments
|
# Configure other options from command line arguments
|
||||||
options.raiseonerror = True
|
options.raiseonerror = True
|
||||||
options.debugsmtp = opts.debugsmtp
|
options.debugsmtp = opts.debugsmtp
|
||||||
|
@ -469,5 +504,12 @@ if __name__ == '__main__':
|
||||||
else:
|
else:
|
||||||
logging.info('All %s emails addresses provided are valid.', len(emails))
|
logging.info('All %s emails addresses provided are valid.', len(emails))
|
||||||
|
|
||||||
|
if opts.output_file:
|
||||||
|
logging.info('Write emails validation result to file %s', opts.output_file)
|
||||||
|
with open(opts.output_file, 'w') as fd:
|
||||||
|
csv_output = csv.writer(fd, delimiter=opts.output_delimiter, quotechar=opts.output_quotechar)
|
||||||
|
for email in not_validated:
|
||||||
|
csv_output.writerow([email, not_validated[email].error_msg])
|
||||||
|
|
||||||
# Adapt exit code on validation result
|
# Adapt exit code on validation result
|
||||||
sys.exit(1 if not_validated else 0)
|
sys.exit(1 if not_validated else 0)
|
||||||
|
|
Loading…
Reference in a new issue