Passed
Push — master ( 0b781a...6f2783 )
by Matěj
04:25 queued 11s
created

oval_graph.json_to_html.JsonToHtml.__init__()   A

Complexity

Conditions 1

Size

Total Lines 7
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 7
nop 2
dl 0
loc 7
ccs 7
cts 7
cp 1
crap 1
rs 10
c 0
b 0
f 0
1 1
import webbrowser
2 1
import json
3 1
import os
4 1
import argparse
5 1
import shutil
6 1
from datetime import datetime
7
8
9 1
from .client import Client
10 1
from .oval_node import restore_dict_to_tree
11 1
from .converter import Converter
12
13
14 1
class JsonToHtml(Client):
15 1
    def __init__(self, args):
16 1
        self.parser = None
17 1
        self.arg = self.parse_arguments(args)
18 1
        self.off_webbrowser = self.arg.off_web_browser
19 1
        self.source_filename = self.arg.source_filename
20 1
        self.out = self.arg.output
21 1
        self.oval_tree = None
22
23 1
    def load_json_to_oval_tree(self, rule):
24 1
        with open(self.source_filename, 'r') as f:
25 1
            try:
26 1
                return restore_dict_to_tree(json.load(f)[rule])
27
            except Exception as error:
28
                raise ValueError("err- Used file is not json or valid.")
29
30 1
    def create_dict_of_oval_node(self, oval_node):
31 1
        converter = Converter(oval_node)
32 1
        return converter.to_JsTree_dict()
33
34 1
    def load_rule_names(self):
35 1
        with open(self.source_filename, 'r') as f:
36 1
            try:
37 1
                return json.load(f).keys()
38
            except Exception as error:
39
                raise ValueError("err- Used file is not json or valid.")
40
41 1
    def prepare_data(self):
42 1
        try:
43 1
            out = []
44 1
            for rule in self.load_rule_names():
45 1
                self.oval_tree = self.load_json_to_oval_tree(rule)
46 1
                rule_name = self.oval_tree.node_id
47 1
                oval_tree_dict = self.create_dict_of_oval_node(self.oval_tree)
48 1
                src = self.get_save_src(rule_name)
49 1
                self.copy_interpreter(src)
50 1
                self.save_dict(oval_tree_dict, src)
51 1
                self.open_web_browser(src)
52 1
                print('Rule "{}" done!'.format(rule_name))
53 1
                out.append(src)
54 1
            return out
55
        except Exception as error:
56
            raise ValueError(
57
                'Rule: "{}" Error: "{}"'.format(
58
                    self.source_filename, error))
59
60 1
    def prepare_parser(self):
61 1
        self.parser = argparse.ArgumentParser(
62
            description="Client for visualization of SCAP rule evaluation results")
63 1
        self.parser.add_argument(
64
            '--off-web-browser',
65
            action="store_true",
66
            default=False,
67
            help="It does not start the web browser.")
68 1
        self.parser.add_argument(
69
            '--output',
70
            action="store",
71
            default=None,
72
            help="Save the output files where it is defined.")
73
        self.parser.add_argument("source_filename", help="ARF scan file")
74