eb7e04aa14a5938d0a5fc258b3d608f6bb11e10f
[pyi2ncommon] / src / test_data_sync.py
1 # The software in this package is distributed under the GNU General
2 # Public License version 2 (with a special exception described below).
3 #
4 # A copy of GNU General Public License (GPL) is included in this distribution,
5 # in the file COPYING.GPL.
6 #
7 # As a special exception, if other files instantiate templates or use macros
8 # or inline functions from this file, or you compile this file and link it
9 # with other works to produce a work based on this file, this file
10 # does not by itself cause the resulting work to be covered
11 # by the GNU General Public License.
12 #
13 # However the source code for this file must still be made available
14 # in accordance with section (3) of the GNU General Public License.
15 #
16 # This exception does not invalidate any other reasons why a work based
17 # on this file might be covered by the GNU General Public License.
18 #
19 # Copyright (c) 2016-2018 Intra2net AG <info@intra2net.com>
20
21 """
22
23 SUMMARY
24 ------------------------------------------------------
25 Utility to customize email and other test data.
26
27 Copyright: Intra2net AG
28
29
30 INTERFACE
31 ------------------------------------------------------
32
33 """
34
35 import os
36 import re
37 import logging
38 log = logging.getLogger('pyi2ncommon.test_data_sync')
39
40
41 def append_email_id_header(data_dir):
42     """
43     Use to append unique autotest id header to emails.
44
45     :param str data_dir: directory containing the emails
46     """
47     email_id = 10000
48     files = []
49     for main_dir, _, files in os.walk(data_dir):
50         for i in range(len(files)):
51             file_path = os.path.join(main_dir, files[i])
52             if i % 100 == 0:
53                 log.info("%i done\n", i)
54
55             if not re.match("^[0-9]+\.$", files[i]):
56                 continue
57             if os.path.getsize(file_path) == 0:
58                 log.warning("Skipping empty file %s", file_path)
59                 continue
60
61             log.info("Adding header to email %s", file_path)
62             id_line = ""
63             message_file = open(file_path, "r")
64             for line in message_file:
65                 if re.match("^Message-Id:", line, re.IGNORECASE):
66                     id_line = line
67                     message_file.close()
68                     break
69
70             readed = open(file_path, "r").read()
71             autotest_id_line = "Autotest-Message-ID: <" + str(email_id + i) + ".63D49232CC@gwt-intranator.m.i2n>\r\n"
72             if id_line == "":
73                 final = autotest_id_line + readed
74             else:
75                 final = readed.replace(id_line, autotest_id_line)
76                 log.info("%s >> %s", id_line, autotest_id_line)
77             open(file_path, "w").write(final)
78     log.info("%i mails replaced.", len(files))