Passed
Push — master ( f92a60...087b33 )
by Matěj
02:24 queued 11s
created

oval_graph.arf_to_html.ArfToHtml.prepare_data()   A

Complexity

Conditions 3

Size

Total Lines 14
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 14
CRAP Score 3

Importance

Changes 0
Metric Value
cc 3
eloc 14
nop 2
dl 0
loc 14
rs 9.7
c 0
b 0
f 0
ccs 14
cts 14
cp 1
crap 3
1 1
import webbrowser
2 1
import json
3 1
import os
4 1
import shutil
5 1
from datetime import datetime
6
7
8 1
from .converter import Converter
9 1
from .client import Client
10
11
12 1
class ArfToHtml(Client):
13 1
    def __init__(self, args):
14 1
        super().__init__(args)
15 1
        self.off_webbrowser = self.arg.off_web_browser
16
17 1
    def create_dict_of_rule(self, rule_id):
18 1
        converter = Converter(self.xml_parser.get_oval_tree(rule_id))
19 1
        return converter.to_JsTree_dict()
20
21 1
    def save_dict(self, dict_, src):
22 1
        with open(os.path.join(src, 'data.js'), "w+") as data_file:
23 1
            data_file.write("var data_json =" + str(json.dumps(
24
                dict_, sort_keys=False, indent=4) + ";"))
25
26 1
    def copy_interpreter(self, dst):
27 1
        src = self.xml_parser.get_src('tree_html_interpreter')
28 1
        os.mkdir(dst)
29 1
        for item in os.listdir(src):
30 1
            s = os.path.join(src, item)
31 1
            d = os.path.join(dst, item)
32 1
            if os.path.isdir(s):
33 1
                shutil.copytree(s, d)
34
            else:
35 1
                shutil.copy2(s, d)
36
37 1
    def prepare_data(self, rules):
38 1
        try:
39 1
            out = []
40 1
            for rule in rules['rules']:
41 1
                oval_tree_dict = self.create_dict_of_rule(rule)
42 1
                src = self.get_save_src(rule)
43 1
                self.copy_interpreter(src)
44 1
                self.save_dict(oval_tree_dict, src)
45 1
                self.open_web_browser(src)
46 1
                print('Rule "{}" done!'.format(rule))
47 1
                out.append(src)
48 1
            return out
49 1
        except Exception as error:
50 1
            raise ValueError('Rule: "{}" Error: "{}"'.format(rule, error))
51
52 1
    def open_web_browser(self, src):
53 1
        if not self.off_webbrowser:
54
            src = os.path.join(src, 'index.html')
55
            try:
56
                webbrowser.get('firefox').open_new_tab(src)
57
            except BaseException:
58
                webbrowser.open_new_tab(src)
59
60 1
    def prepare_parser(self):
61 1
        super().prepare_parser()
62 1
        self.parser.add_argument(
63
            '--off-web-browser',
64
            action="store_true",
65
            default=False,
66
            help="It does not start the web browser.")
67