Promene u dizajnu dokumenata, controla, residual graph, residual tabele...
This commit is contained in:
@@ -294,4 +294,51 @@ def generate_risk_graph(risks_with_controls):
|
||||
buffer.close()
|
||||
plt.close()
|
||||
|
||||
return base64.b64encode(image_png).decode("utf-8")
|
||||
return base64.b64encode(image_png).decode("utf-8")
|
||||
|
||||
def generate_residual_risk_graph(risks_with_controls):
|
||||
impacts = [risk.get('residual_impact', 0) for risk in risks_with_controls]
|
||||
likelihoods = [risk.get('residual_likelihood', 0) for risk in risks_with_controls]
|
||||
risk_ids = [risk['risk']['id'] for risk in risks_with_controls]
|
||||
|
||||
bg_img_path = find('img/graph_matrix.png')
|
||||
bg_img = mpimg.imread(bg_img_path)
|
||||
|
||||
fig, ax = plt.subplots(figsize=(10, 8))
|
||||
|
||||
ax.imshow(bg_img, extent=[0.0, 5.4, 0.0, 5.4], aspect='auto')
|
||||
|
||||
scatter = ax.scatter(
|
||||
likelihoods, impacts,
|
||||
c="blue", edgecolors="white", s=500, alpha=0.9
|
||||
)
|
||||
|
||||
for i, risk_id in enumerate(risk_ids):
|
||||
ax.annotate(
|
||||
str(risk_id),
|
||||
(likelihoods[i], impacts[i]),
|
||||
color="white",
|
||||
fontsize=12,
|
||||
ha="center",
|
||||
va="center",
|
||||
weight="bold",
|
||||
)
|
||||
|
||||
ax.set_xticks([])
|
||||
ax.set_yticks([])
|
||||
ax.set_xticklabels([])
|
||||
ax.set_yticklabels([])
|
||||
|
||||
ax.spines['top'].set_visible(False)
|
||||
ax.spines['right'].set_visible(False)
|
||||
ax.spines['left'].set_visible(False)
|
||||
ax.spines['bottom'].set_visible(False)
|
||||
|
||||
buffer = io.BytesIO()
|
||||
plt.savefig(buffer, format="png", transparent=True, bbox_inches='tight', pad_inches=0)
|
||||
buffer.seek(0)
|
||||
image_png = buffer.getvalue()
|
||||
buffer.close()
|
||||
plt.close()
|
||||
|
||||
return base64.b64encode(image_png).decode("utf-8")
|
||||
|
||||
Reference in New Issue
Block a user