Passed
Push — master ( 3cb769...40ab20 )
by Jan
06:17
created

JsonToHtml.get_json_data_file()   A

Complexity

Conditions 3

Size

Total Lines 8
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 3

Importance

Changes 0
Metric Value
cc 3
eloc 8
nop 1
dl 0
loc 8
ccs 6
cts 6
cp 1
crap 3
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
from datetime import datetime
6 1
import shutil
7 1
import sys
8 1
import re
9
10 1
from .client import Client
11 1
from .oval_node import restore_dict_to_tree
12 1
from .converter import Converter
13 1
from .exceptions import NotChecked
14
15
16 1
class JsonToHtml(Client):
17 1
    def __init__(self, args):
18 1
        self.parser = None
19 1
        self.MESSAGES = self._get_message()
20 1
        self.arg = self.parse_arguments(args)
21 1
        self.hide_passing_tests = self.arg.hide_passing_tests
22 1
        self.source_filename = self.arg.source_filename
23 1
        self.rule_name = self.arg.rule_id
24 1
        self.out = self.arg.output
25 1
        self.all_in_one = self.arg.all_in_one
26 1
        self.all_rules = True if self.all_in_one else self.arg.all
27 1
        self.isatty = sys.stdout.isatty()
28 1
        self.show_failed_rules = False
29 1
        self.show_not_selected_rules = False
30 1
        self.oval_tree = None
31 1
        self.display_html = True if self.out is None else self.arg.display
32 1
        self.json_data_file = self.get_json_data_file()
33 1
        self.parts = self.get_src('parts')
34 1
        self.START_OF_FILE_NAME = 'graph-of-'
35 1
        self.date = datetime.now().strftime("-%d_%m_%Y-%H_%M_%S")
36 1
        self.verbose = self.arg.verbose
37
38 1
    def _get_message(self):
39 1
        MESSAGES = {
40
            'description': 'Client for visualization of JSON created by command arf-to-json',
41
            'source_filename': 'JSON file',
42
        }
43 1
        return MESSAGES
44
45 1
    def get_json_data_file(self):
46 1
        with open(self.source_filename, 'r') as f:
47 1
            try:
48 1
                return json.load(f)
49 1
            except Exception as error:
50 1
                raise ValueError(
51
                    'Used file "{}" is not valid json.'.format(
52
                        self.source_filename))
53
54 1
    def load_json_to_oval_tree(self, rule):
55 1
        dict_of_tree = self.json_data_file[rule]
56 1
        if isinstance(dict_of_tree, str):
57
            raise NotChecked(dict_of_tree)
58 1
        try:
59 1
            return restore_dict_to_tree(dict_of_tree)
60 1
        except Exception as error:
61 1
            raise ValueError('Data is not valid for OVAL tree.')
62
63 1
    def create_dict_of_oval_node(self, oval_node):
64 1
        converter = Converter(oval_node)
65 1
        return converter.to_JsTree_dict(self.hide_passing_tests)
66
67 1
    def load_rule_names(self):
68 1
        return self.json_data_file.keys()
69
70 1
    def search_rules_id(self):
71 1
        rules = self._get_wanted_rules_from_array_of_IDs(
72
            self.load_rule_names())
73 1
        notselected_rules = []
74 1
        return self._check_rules_id(rules, notselected_rules)
75
76 1
    def create_dict_of_rule(self, rule):
77 1
        self.oval_tree = self.load_json_to_oval_tree(rule)
78 1
        return self.create_dict_of_oval_node(self.oval_tree)
79
80 1
    def _put_to_dict_oval_trees(self, dict_oval_trees, rule):
81 1
        dict_oval_trees[rule.replace(
82
            self.START_OF_FILE_NAME, '')] = self.create_dict_of_rule(rule)
83
84 1
    def _get_src_for_one_graph(self, rule):
85 1
        return self.get_save_src(rule.replace(self.START_OF_FILE_NAME, ''))
86
87 1
    def prepare_parser(self):
88 1
        super().prepare_parser()
89
        self.prepare_args_when_output_is_html()
90