Passed
Pull Request — master (#120)
by Jan
02:28
created

oval_graph.arf_to_html.ArfToHtml.prepare_data()   A

Complexity

Conditions 2

Size

Total Lines 10
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 2.0078

Importance

Changes 0
Metric Value
cc 2
eloc 9
nop 2
dl 0
loc 10
ccs 7
cts 8
cp 0.875
crap 2.0078
rs 9.95
c 0
b 0
f 0
1 1
from datetime import datetime
2
3
4 1
from .client import Client
5 1
from .converter import Converter
6 1
from .exceptions import NotChecked
7
8
9 1
class ArfToHtml(Client):
10 1
    def __init__(self, args):
11 1
        super().__init__(args)
12 1
        self.off_webbrowser = self.arg.off_web_browser
13 1
        self.show_failed_rules = self.arg.show_failed_rules
14 1
        self.show_not_selected_rules = self.arg.show_not_selected_rules
15 1
        self.all_in_one = self.arg.all_in_one
16 1
        if self.all_in_one:
17
            self.all_rules = True
18
19 1
    def _get_message(self):
20 1
        MESSAGES = {
21
            'description': 'Client for visualization of SCAP rule evaluation results',
22
            '--output': 'The directory where to save output directory with files.',
23
            'source_filename': 'ARF scan file',
24
        }
25 1
        return MESSAGES
26
27 1
    def create_dict_of_rule(self, rule_id):
28 1
        converter = Converter(self.xml_parser.get_oval_tree(rule_id))
29 1
        return converter.to_JsTree_dict(self.hide_passing_tests)
30
31 1
    def _prepare_all_in_one_data(self, rules, dict_oval_trees, out, date):
32
        for rule in rules['rules']:
33
            try:
34
                dict_oval_trees[
35
                    'graph-of-' + rule + date] = self.create_dict_of_rule(rule)
36
            except NotChecked as error:
37
                self.print_red_text(error)
38
        src = self.get_save_src('rules')
39
        self.save_html_with_all_rules_in_one(
40
            dict_oval_trees, src, rules, out)
41
        return out
42
43 1
    def _prepare_data_by_one(self, rules, dict_oval_trees, out, date):
44 1
        for rule in rules['rules']:
45 1
            try:
46 1
                oval_tree_dict = self.create_dict_of_rule(rule)
47 1
                src = self.get_save_src(rule)
48 1
                self.save_html_and_open_html(
49
                    oval_tree_dict, src, rule, out)
50 1
            except NotChecked as error:
51
                self.print_red_text(error)
52 1
        return out
53
54 1
    def prepare_data(self, rules):
55 1
        out = []
56 1
        dict_oval_trees = dict()
57 1
        date = str(datetime.now().strftime("-%d_%m_%Y-%H_%M_%S"))
58 1
        if self.all_in_one:
59
            out = self._prepare_all_in_one_data(
60
                rules, dict_oval_trees, out, date)
61
        else:
62 1
            out = self._prepare_data_by_one(rules, dict_oval_trees, out, date)
63 1
        return out
64
65 1
    def prepare_parser(self):
66 1
        super().prepare_parser()
67 1
        self.parser.add_argument(
68
            '--all-in-one',
69
            action="store_true",
70
            default=False,
71
            help="Processes all rules into one file.")
72 1
        self.parser.add_argument(
73
            '--off-web-browser',
74
            action="store_true",
75
            default=False,
76
            help="It does not start the web browser.")
77 1
        self.parser.add_argument(
78
            '--show-failed-rules',
79
            action="store_true",
80
            default=False,
81
            help="Show only FAILED rules")
82 1
        self.parser.add_argument(
83
            '--show-not-selected-rules',
84
            action="store_true",
85
            default=False,
86
            help="Show notselected rules. These rules will not be visualized.")
87