Skip to content

Commit 3d26fc9

Browse files
authored
Merge pull request #1220 from devEricA/dev
Enhancement #1120
2 parents 3aa9a84 + 008f2a8 commit 3d26fc9

File tree

4 files changed

+36
-6
lines changed

4 files changed

+36
-6
lines changed

dojo/benchmark/views.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,19 +41,15 @@ def return_score(queryset):
4141
def score_asvs(product, benchmark_type):
4242
# Compliant to ASVS level 1 benchmarks
4343
asvs_level_1 = Benchmark_Product.objects.filter(enabled=True, control__enabled=True, product=product, control__category__type=benchmark_type, control__category__enabled=True, control__level_1=True).values('pass_fail').annotate(Count('pass_fail')).order_by()
44-
4544
asvs_level_1_benchmark, asvs_level_1_score = return_score(asvs_level_1)
4645

4746
# Compliant to ASVS level 2 benchmarks
4847
asvs_level_2 = Benchmark_Product.objects.filter(~Q(control__level_1=True), enabled=True, control__enabled=True, product=product, control__category__type=benchmark_type, control__category__enabled=True, control__level_2=True).values('pass_fail').annotate(Count('pass_fail')).order_by()
49-
5048
asvs_level_2_benchmark, asvs_level_2_score = return_score(asvs_level_2)
5149

5250
# Compliant to ASVS level 3 benchmarks
5351
asvs_level_3 = Benchmark_Product.objects.filter(~Q(control__level_1=True), ~Q(control__level_2=True), enabled=True, control__enabled=True, control__category__enabled=True, product=product, control__category__type=benchmark_type, control__level_3=True).values('pass_fail').annotate(Count('pass_fail')).order_by()
54-
5552
asvs_level_3_benchmark, asvs_level_3_score = return_score(asvs_level_3)
56-
5753
benchmark_product_summary = Benchmark_Product_Summary.objects.get(product=product, benchmark_type=benchmark_type)
5854

5955
benchmark_product_summary.asvs_level_1_benchmark = asvs_level_1_benchmark

dojo/product/views.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from django.db.models import Sum, Count, Q
1717
from django.contrib.admin.utils import NestedObjects
1818
from django.db import DEFAULT_DB_ALIAS
19+
from dojo.templatetags.display_tags import get_level
1920
from dojo.filters import ProductFilter, ProductFindingFilter, EngagementFilter
2021
from dojo.forms import ProductForm, EngForm, DeleteProductForm, DojoMetaDataForm, JIRAPKeyForm, JIRAFindingForm, AdHocFindingForm, \
2122
EngagementPresetsForm, DeleteEngagementPresetsForm
@@ -26,6 +27,7 @@
2627
from custom_field.models import CustomFieldValue, CustomField
2728
from dojo.tasks import add_epic_task, add_issue_task
2829
from tagging.models import Tag
30+
2931
from tagging.utils import get_tag_list
3032

3133
logger = logging.getLogger(__name__)
@@ -83,6 +85,10 @@ def view_product(request, pid):
8385
app_analysis = App_Analysis.objects.filter(product=prod).order_by('name')
8486
benchmark_type = Benchmark_Type.objects.filter(enabled=True).order_by('name')
8587
benchmarks = Benchmark_Product_Summary.objects.filter(product=prod, publish=True, benchmark_type__enabled=True).order_by('benchmark_type__name')
88+
benchAndPercent = []
89+
for i in range(0, len(benchmarks)):
90+
benchAndPercent.append([benchmark_type[i], get_level(benchmarks[i])])
91+
8692
system_settings = System_Settings.objects.get()
8793

8894
product_metadata = dict(prod.product_meta.order_by('name').values_list('name', 'value'))
@@ -115,7 +121,6 @@ def view_product(request, pid):
115121
total = critical + high + medium + low + info
116122

117123
product_tab = Product_Tab(pid, title="Product", tab="overview")
118-
119124
return render(request, 'dojo/view_product_details.html', {
120125
'prod': prod,
121126
'product_tab': product_tab,
@@ -131,6 +136,8 @@ def view_product(request, pid):
131136
'langSummary': langSummary,
132137
'app_analysis': app_analysis,
133138
'system_settings': system_settings,
139+
'benchmarks_percents': benchAndPercent,
140+
'benchmarks': benchmarks,
134141
'authorized': auth})
135142

136143

dojo/templates/dojo/view_product_details.html

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,29 @@ <h3 class="panel-title"><span class="fa fa-gavel" aria-hidden="true"></span> Reg
145145
</div>
146146
</div>
147147
</div>
148-
148+
<!-- Benchmark Tab -->
149+
<div class="row">
150+
<div class="col-md-8">
151+
<div class="panel panel-default">
152+
<div class="panel-heading">
153+
<h3 class="panel-title"><span class ="fa fa-balance-scale" aria-hidden="true"></span> Benchmark Progress </h3>
154+
</div>
155+
<ul class="list-group">
156+
{% for Abenchpercent in benchmarks_percents %}
157+
<li class="list-group-item"><strong>{{Abenchpercent.0}}</strong></li>
158+
<div class="progress">
159+
<div class="progress-bar" role="progressbar" aria-valuenow="{{Abenchpercent.1}}"
160+
aria-valuemin="0" aria-valuemax="100" style="width:{{Abenchpercent.1}}">
161+
<span class="sr-only">{{Abenchpercent.1}} Complete</span>
162+
</div>
163+
</div>
164+
{% empty %}
165+
<li class="list-group-item"><small class = "text-muted"><em>There are no benchmarks</em></small></li>
166+
{% endfor %}
167+
</ul>
168+
</div>
169+
</div>
170+
</div>
149171
<!-- Meta Data -->
150172
<div class="col-md-4">
151173
<div class="panel panel-default panel-default-secondary">

dojo/templatetags/display_tags.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,11 @@ def asvs_calc_level(benchmark_score):
158158
return benchmark_score.desired_level, level, str(total_pass), str(total)
159159

160160

161+
def get_level(benchmark_score):
162+
benchmark_score.desired_level, level, total_pass, total = asvs_calc_level(benchmark_score)
163+
level = percentage(total_pass, total)
164+
return level
165+
161166
@register.filter(name='asvs_level')
162167
def asvs_level(benchmark_score):
163168
benchmark_score.desired_level, level, total_pass, total = asvs_calc_level(

0 commit comments

Comments
 (0)