Coverage for product_risk_suite / product / views.py: 56%
32 statements
« prev ^ index » next coverage.py v7.14.0, created at 2026-05-13 23:42 +0000
« prev ^ index » next coverage.py v7.14.0, created at 2026-05-13 23:42 +0000
1from django.shortcuts import get_object_or_404, render
2from django.views.decorators.csrf import csrf_protect
3from django.contrib.auth.decorators import login_required
4from django.core.exceptions import PermissionDenied
6from guardian.decorators import permission_required_or_403
7from guardian.shortcuts import get_objects_for_user
9from .models import Product, ProductRiskAnalysis, ProductRiskEntry
11@csrf_protect
12@login_required
13def product_index(request):
14 products = get_objects_for_user(request.user, 'product.view_product')
16 context = {"product_list": products}
17 return render(request, "product_index.html", context)
19@csrf_protect
20@login_required
21@permission_required_or_403("product.view_product", (Product, "slug", "product_slug"))
22def product(request, product_slug):
23 product = get_object_or_404(Product, slug=product_slug)
25 all_analysis = ProductRiskAnalysis.objects.filter(id__in=product.analyzes.all())
27 context = {"product": product, "all_analysis": all_analysis}
28 return render(request, "product.html", context)
30@csrf_protect
31@login_required
32@permission_required_or_403("product.view_product", (Product, "slug", "product_slug"))
33def product_analysis(request, product_slug, analysis_slug):
34 product = get_object_or_404(Product, slug=product_slug)
35 product_analysis = get_object_or_404(ProductRiskAnalysis, slug=analysis_slug)
36 product_analysis_entries = ProductRiskEntry.objects.filter(id__in=product_analysis.risk_entries.all()).order_by("risk__custom_id")
38 risk_summery = ProductRiskAnalysis.get_risk_summary(product_analysis_entries)
40 pr_edit_allowed = request.user.has_perm("product.change_product", product)
42 context = {"product_edit": pr_edit_allowed, "product": product, "product_analysis": product_analysis, "product_analysis_entries": product_analysis_entries, "risk_summery": risk_summery}
43 return render(request, "product_analysis.html", context)