openscap_report.scap_results_parser.parsers.oval_object_parser   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 47
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 35
dl 0
loc 47
ccs 28
cts 28
cp 1
rs 10
c 0
b 0
f 0
wmc 6

4 Methods

Rating   Name   Duplication   Size   Complexity  
A OVALObjectParser._get_oval_message() 0 7 2
A OVALObjectParser.__init__() 0 5 1
A OVALObjectParser.get_object() 0 16 2
A OVALObjectParser._get_collected_object_xml() 0 2 1
1
# Copyright 2022, Red Hat, Inc.
2
# SPDX-License-Identifier: LGPL-2.1-or-later
3
4 1
from lxml.builder import E
5
6 1
from ..data_structures import OvalObject, OvalObjectMessage
7 1
from ..namespaces import NAMESPACES
8 1
from .oval_endpoint_information_parser import OVALEndpointInformation
9 1
from .oval_items_parser import OVALItemsParser
10 1
from .shared_static_methods_of_parser import SharedStaticMethodsOfParser
11
12
13 1
class OVALObjectParser(OVALEndpointInformation):
14 1
    def __init__(self, objects, collected_objects, system_data):
15 1
        self.objects = objects
16 1
        self.collected_objects = collected_objects
17 1
        self.system_data = system_data
18 1
        self.item_parser = OVALItemsParser(collected_objects, system_data)
19
20 1
    def _get_oval_message(self, xml_collected_object):
21 1
        message = xml_collected_object.find(
22
            ".//oval-characteristics:message", NAMESPACES
23
        )
24 1
        if message is not None:
25 1
            return OvalObjectMessage(message.get("level", ""), message.text)
26 1
        return None
27
28 1
    def _get_collected_object_xml(self, id_object):
29 1
        return self.collected_objects.get(id_object, E.xml("empty"))
30
31 1
    def get_object(self, id_object):
32 1
        xml_object = self.objects.get(id_object)
33 1
        object_dict = {
34
            "object_id": xml_object.get("id"),
35
            "comment": xml_object.get("comment", ""),
36
            "object_type": SharedStaticMethodsOfParser.get_key_of_xml_element(xml_object),
37
            "object_data": self._get_items(xml_object),
38
            "collected_items": self.item_parser.get_oval_items(id_object)
39
        }
40 1
        xml_collected_object = self._get_collected_object_xml(id_object)
41
42 1
        message = self._get_oval_message(xml_collected_object)
43 1
        if message is not None:
44 1
            object_dict["message"] = message
45 1
        object_dict["flag"] = xml_collected_object.get("flag", "")
46
        return OvalObject(**object_dict)
47