summaryrefslogtreecommitdiff
path: root/scripts/simple_ooo_replace.py
blob: 62cbab7a5fdcaa404232b6a9404456c225a309fe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import os
import shutil
import sys
from zipfile import ZipFile, ZIP_DEFLATED

rpl_lst = [
    ('adminact_associated_file_general_contractor_attached_to_name',
     'adminact_associated_file_corporation_general_contractor_name'),
    ('adminact_associated_file_general_contractor_'
     'attached_to_address',
     'adminact_associated_file_corporation_general_contractor_'
     'address'),
    ('adminact_associated_file_general_contractor_'
     'address_complement',
     'adminact_associated_file_corporation_general_contractor_'
     'address_complement '),
    ('adminact_associated_file_general_contractor_'
     'attached_to_postal_code',
     'adminact_associated_file_corporation_general_contractor_'
     'postal_code '),
    ('adminact_associated_file_general_contractor_attached_to_town',
     'adminact_associated_file_corporation_general_contractor_town',
     ),
    ('adminact_associated_file_address',
     'adminact_associated_file_get_locality',
     )
]

context = dict(rpl_lst)


def value_replace(content):
    value = content
    modified = False
    for key in context:
        if key in value:
            modified = True
            value = value.replace(key, context[key])
    return value, modified


def replace(directory, infile):
    print("Processing {}".format(infile))
    outfile = "PREPROCESS--" + infile
    infile = directory + os.sep + infile
    outfile = directory + os.sep + outfile

    inzip = ZipFile(infile, 'r', ZIP_DEFLATED)
    outzip = ZipFile(outfile, 'w', ZIP_DEFLATED)

    values = {}
    idx = 0
    for xml_file in ('content.xml', 'styles.xml'):
        content = inzip.read(xml_file)
        values[xml_file], modified = value_replace(content)
        if modified:
            idx += 1

    for f in inzip.infolist():
        if f.filename in values:
            outzip.writestr(f.filename, values[f.filename])
        else:
            outzip.writestr(f, inzip.read(f.filename))

    inzip.close()
    outzip.close()
    # replace original by PREPROCESS
    shutil.move(outfile, infile)
    return idx

directory = sys.argv[-1]
idx = 0


for fle in os.listdir(directory):
    if fle.endswith('.odt'):
        idx += replace(directory, fle)

print("{} modifications".format(idx))