53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
from violation import Violation
|
|
import datetime
|
|
import json
|
|
|
|
class Sheet:
|
|
def __init__(self, json_obj : dict) -> None:
|
|
self.name : str = json_obj["path"]
|
|
self.name_md : str = self.name.replace(" ", "-")
|
|
self.number_of_errors : int = 0
|
|
self.number_of_warns : int = 0
|
|
self.errors : list[Violation] = list()
|
|
self.warns : list[Violation] = list()
|
|
|
|
for violation in json_obj["violations"]:
|
|
v = Violation(violation, "erc")
|
|
if (v.violation_type == "error"):
|
|
self.errors.append(v)
|
|
self.number_of_errors += 1
|
|
if (v.violation_type == "warn"):
|
|
self.warns.append(v)
|
|
self.number_of_warns += 1
|
|
|
|
def to_dict(self) -> dict:
|
|
out_dict = self.__dict__
|
|
errors_strings = []
|
|
warns_strings = []
|
|
|
|
for error in out_dict["errors"]:
|
|
errors_strings.append(error.__dict__)
|
|
out_dict["errors"] = errors_strings
|
|
|
|
for warn in out_dict["warns"]:
|
|
warns_strings.append(warn.__dict__)
|
|
out_dict["warns"] = warns_strings
|
|
|
|
return out_dict
|
|
|
|
def process_report(report : str) -> dict:
|
|
out_dict : dict = json.loads(report)
|
|
|
|
sheets = [Sheet(sheet) for sheet in out_dict["sheets"]]
|
|
out_dict["sheets"] = [sheet.to_dict() for sheet in sheets]
|
|
|
|
out_dict.setdefault(
|
|
"total_errors",
|
|
sum(sheet.number_of_errors for sheet in sheets)
|
|
)
|
|
out_dict.setdefault(
|
|
"total_warns",
|
|
sum(sheet.number_of_warns for sheet in sheets)
|
|
)
|
|
|
|
return out_dict |