from datetime import datetime from pathlib import Path from jinja2 import Environment, FileSystemLoader class HTMLReportGenerator: def generate(self, findings): template_dir = Path(__file__).parent / "templates" env = Environment( loader=FileSystemLoader(template_dir) ) template = env.get_template("report.html") critical = sum( 1 for f in findings if f.metadata.severity.value == "CRITICAL" ) high = sum( 1 for f in findings if f.metadata.severity.value == "HIGH" ) report = template.render( findings=findings, generated=datetime.now().strftime( "%d %B %Y %H:%M" ), users=len(set(f.user for f in findings)), findings_count=len(findings), critical=critical, high=high ) output_dir = Path(__file__).parent / "output" output_dir.mkdir(exist_ok=True) report_path = output_dir / "security_report.html" report_path.write_text( report, encoding="utf-8" ) return report_path