Passed
Push — master ( c760c6...20de05 )
by Daniel
01:04
created

LocalizationsMaintainSources.evaluate_single_domain()   A

Complexity

Conditions 3

Size

Total Lines 29
Code Lines 26

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 26
nop 3
dl 0
loc 29
rs 9.256
c 0
b 0
f 0
1
"""
2
localization_update - facilitates localization file maintenance
3
"""
4
import os
5
6
from localizations_common import LocalizationsCommon
7
8
9
class LocalizationsMaintainSources(LocalizationsCommon):
10
    domain_locale_file_counter = 0
11
    domains_locale_to_maintain = []
12
13
    def evaluate_update_necessity(self, in_list_localisation_source_files):
14
        list_size = len(in_list_localisation_source_files)
15
        self.operation_is_required = False
16
        file_list_paring_complete = False
17
        file_counter = 0
18
        while not file_list_paring_complete:
19
            template_localisation_file = in_list_localisation_source_files[file_counter]
20
            self.evaluate_single_domain(template_localisation_file, file_counter)
21
            file_counter += 1
22
            file_list_paring_complete = self.file_counter_limit(file_counter, list_size)
23
24
    def evaluate_single_domain(self, template_localisation_file, file_counter):
25
        for current_locale in self.locale_implemented:
26
            join_separator = os.path.altsep
27
            elements_to_join = [
28
                os.path.dirname(template_localisation_file),
29
                current_locale,
30
                'LC_MESSAGES',
31
                os.path.basename(template_localisation_file).replace('.pot', '.po'),
32
            ]
33
            fn_dict = {
34
                'destination': join_separator.join(elements_to_join),
35
                'counter': file_counter,
36
                'locale': current_locale,
37
                'source': template_localisation_file,
38
                'source file type name': 'template',
39
                'destination operation name': 'update',
40
            }
41
            operation_check_result, file_situation_verdict = self.check_file_pairs(fn_dict)
42
            operation, operation_final_flags = self.operations_dict(file_situation_verdict)
43
            if operation_check_result:
44
                self.domains_locale_to_maintain.append(self.domain_locale_file_counter)
45
                self.domains_locale_to_maintain[self.domain_locale_file_counter] = {
46
                    'input-file': fn_dict['source'],
47
                    'operation': operation,
48
                    'operation final flags': operation_final_flags,
49
                    'output-file': fn_dict['destination'],
50
                    'locale': fn_dict['locale'],
51
                }
52
                self.domain_locale_file_counter += 1
53
54
    @staticmethod
55
    def operations_dict(file_situation_verdict):
56
        operation_to_execute = ''
57
        operation_final_flags = ''
58
        if 'missing' in file_situation_verdict:
59
            operation_to_execute = 'init_catalog'
60
        elif 'newer' in file_situation_verdict:
61
            operation_to_execute = 'update_catalog'
62
            operation_final_flags = ' --previous'
63
        return operation_to_execute, operation_final_flags
64
65
66
my_class = LocalizationsMaintainSources()
67
68
locale_source_files = my_class.get_project_localisation_source_files('pot')
69
my_class.evaluate_update_necessity(locale_source_files)
70
my_class.operate_localisation_files(my_class.domains_locale_to_maintain)
71