Skip to content

Commit 879a8e2

Browse files
committed
Register charts in Overview and Data Quality Panel
Signed-off-by: Sampurna Pyne <sampurnapyne1710@gmail.com>
1 parent 1f51f4b commit 879a8e2

2 files changed

Lines changed: 99 additions & 0 deletions

File tree

insights/charts/__init__.py

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,21 @@
1111

1212
from insights.models import ChartDefinition
1313

14+
from .data_quality_panel import collect_data_quality_todos_resolutions
15+
from .data_quality_panel import collect_open_issues_to_datasource
16+
from .data_quality_panel import format_issue_contribution_donut
17+
from .data_quality_panel import format_issue_type_bar
18+
from .data_quality_panel import format_todos_resolution_timeline
1419
from .importer_panel import _get_snapshot_data
1520
from .importer_panel import build_importer_exploit_columns
1621
from .importer_panel import build_importer_package_columns
1722
from .importer_panel import collect_importers
23+
from .overview_panel import collect_kpi_card
24+
from .overview_panel import collect_yearly_distribution
25+
from .overview_panel import format_coverage_comparison
26+
from .overview_panel import format_growth_trend
27+
from .overview_panel import format_kpi_card
28+
from .overview_panel import format_yearly_distribution
1829
from .package_panel import collect_cwes
1930
from .package_panel import collect_ecosystem_distribution
2031
from .package_panel import collect_packages
@@ -25,6 +36,38 @@
2536
from .severity_panel import get_severity_snapshot_data
2637

2738
CHARTS = [
39+
ChartDefinition(
40+
id="overview-stats",
41+
title="Overview Stats",
42+
panel="overview_panel",
43+
chart_type="custom",
44+
formatter_fn=format_kpi_card,
45+
collect_fn=collect_kpi_card,
46+
),
47+
ChartDefinition(
48+
id="overview-cross-validation",
49+
title="Coverage Comparison",
50+
panel="overview_panel",
51+
chart_type="stacked_bar",
52+
formatter_fn=format_coverage_comparison,
53+
collect_fn=collect_importers,
54+
),
55+
ChartDefinition(
56+
id="overview-growth-trend",
57+
title="Advisories Imported in the last 30 days",
58+
panel="overview_panel",
59+
chart_type="colored_bar",
60+
formatter_fn=format_growth_trend,
61+
collect_fn=collect_kpi_card,
62+
),
63+
ChartDefinition(
64+
id="overview-historical",
65+
title="Advisories Published in the Last 10 years",
66+
panel="overview_panel",
67+
chart_type="colored_bar",
68+
formatter_fn=format_yearly_distribution,
69+
collect_fn=collect_yearly_distribution,
70+
),
2871
ChartDefinition(
2972
id="pkg-dist-donut",
3073
title="Ecosystem Distribution",
@@ -77,6 +120,29 @@
77120
formatter_fn=partial(_get_snapshot_data, build_columns_fn=build_importer_exploit_columns),
78121
collect_fn=collect_importers,
79122
),
123+
ChartDefinition(
124+
id="dq-issue-type-bar",
125+
title="Open Issues by Type per Datasource",
126+
panel="data_quality_panel",
127+
chart_type="colored_bar",
128+
formatter_fn=format_issue_type_bar,
129+
collect_fn=collect_open_issues_to_datasource,
130+
),
131+
ChartDefinition(
132+
id="dq-importer-contribution-donut",
133+
title="Datasource Contribution per Open Issue",
134+
panel="data_quality_panel",
135+
chart_type="donut",
136+
formatter_fn=format_issue_contribution_donut,
137+
),
138+
ChartDefinition(
139+
id="dq-resolution-timeline",
140+
title="Issue Opened and Resolved Monthly",
141+
panel="data_quality_panel",
142+
chart_type="line",
143+
formatter_fn=format_todos_resolution_timeline,
144+
collect_fn=collect_data_quality_todos_resolutions,
145+
),
80146
]
81147

82148
PANELS = [

insights/insights_snapshot_pipeline.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,11 @@
1111

1212
from insights.charts import CHARTS
1313
from insights.models import DailySnapshot
14+
from insights.models import DataQualityIssueByDatasourceInsight
15+
from insights.models import DataQualityToDosResolutionInsight
1416
from insights.models import ImporterInsight
17+
from insights.models import OverviewCoverageInsight
18+
from insights.models import OverviewYearlyInsight
1519
from insights.models import PackageCWEInsight
1620
from insights.models import PackageInsight
1721
from insights.models import PackageNameInsight
@@ -42,6 +46,11 @@ def compute_chart_analytics(self):
4246
self.package_cwes = []
4347
self.importer_insights = []
4448
self.severity_insight = None
49+
self.overview_insight = None
50+
self.overview_yearly_insights = []
51+
self.overview_coverage_insights = []
52+
self.data_quality_issue_types = []
53+
self.data_quality_todos_resolutions = []
4554
active_charts = [chart_def for chart_def in CHARTS if chart_def.collect_fn]
4655

4756
# Count steps for progress bar
@@ -78,8 +87,32 @@ def save_snapshot(self):
7887
self.severity_insight.snapshot_id = snapshot.id
7988
self.severity_insight.save()
8089

90+
if self.overview_insight:
91+
self.overview_insight.snapshot_id = snapshot.id
92+
self.overview_insight.save()
93+
94+
for yearly in self.overview_yearly_insights:
95+
yearly.overview_id = self.overview_insight.id
96+
for coverage in self.overview_coverage_insights:
97+
coverage.overview_id = self.overview_insight.id
98+
99+
for insight in self.data_quality_issue_types:
100+
insight.snapshot_id = snapshot.id
101+
for insight in self.data_quality_todos_resolutions:
102+
insight.snapshot_id = snapshot.id
103+
81104
PackageInsight.objects.bulk_create(self.package_insights.values(), batch_size=5000)
82105
PackageNameInsight.objects.bulk_create(self.package_names, batch_size=5000)
83106
PackageCWEInsight.objects.bulk_create(self.package_cwes, batch_size=5000)
84107
ImporterInsight.objects.bulk_create(self.importer_insights, batch_size=5000)
108+
OverviewYearlyInsight.objects.bulk_create(self.overview_yearly_insights, batch_size=5000)
109+
OverviewCoverageInsight.objects.bulk_create(
110+
self.overview_coverage_insights, batch_size=5000
111+
)
112+
DataQualityIssueByDatasourceInsight.objects.bulk_create(
113+
self.data_quality_issue_types, batch_size=5000
114+
)
115+
DataQualityToDosResolutionInsight.objects.bulk_create(
116+
self.data_quality_todos_resolutions, batch_size=5000
117+
)
85118
self.log("Snapshot saved successfully.")

0 commit comments

Comments
 (0)