Skip to content

Commit 1cc2579

Browse files
committed
fixes #331and other metrics quirtks and errors
1 parent f97e473 commit 1cc2579

File tree

4 files changed

+596
-551
lines changed

4 files changed

+596
-551
lines changed

dojo/filters.py

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
EARLIEST_FINDING = None
2626

27+
2728
def now():
2829
return local_tz.localize(datetime.today())
2930

@@ -236,7 +237,6 @@ def __init__(self, *args, **kwargs):
236237
(key, value[0]) for key, value in six.iteritems(self.options)]
237238
super(MetricsDateRangeFilter, self).__init__(*args, **kwargs)
238239

239-
240240
def filter(self, qs, value):
241241
if get_earliest_finding() is not None:
242242
start_date = local_tz.localize(datetime.combine(
@@ -635,7 +635,6 @@ def __init__(self, *args, **kwargs):
635635
(key, value[0]) for key, value in six.iteritems(self.options)]
636636
super(FindingStatusFilter, self).__init__(*args, **kwargs)
637637

638-
639638
def filter(self, qs, value):
640639
if get_earliest_finding() is not None:
641640
start_date = local_tz.localize(datetime.combine(
@@ -656,7 +655,7 @@ class MetricsFindingFilter(FilterSet):
656655
queryset=Product_Type.objects.all().order_by('name'),
657656
label="Product Type")
658657
severity = MultipleChoiceFilter(choices=[])
659-
status = FindingStatusFilter()
658+
status = FindingStatusFilter(label='Status')
660659

661660
def __init__(self, *args, **kwargs):
662661
super(MetricsFindingFilter, self).__init__(*args, **kwargs)
@@ -665,7 +664,24 @@ def __init__(self, *args, **kwargs):
665664

666665
class Meta:
667666
model = Finding
668-
exclude = []
667+
exclude = ['url',
668+
'description',
669+
'mitigation',
670+
'unsaved_endpoints',
671+
'unsaved_request',
672+
'unsaved_response',
673+
'unsaved_tags',
674+
'references',
675+
'review_requested_by',
676+
'reviewers',
677+
'defect_review_requested_by',
678+
'thread_id',
679+
'notes',
680+
'last_reviewed_by',
681+
'images',
682+
'endpoints',
683+
'is_template']
684+
669685

670686
class EndpointFilter(DojoFilter):
671687
product = ModelMultipleChoiceFilter(

dojo/forms.py

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ def render(self, name, value, attrs=None):
107107
if not (self.required and value):
108108
month_choices.append(self.none_value)
109109
month_choices.sort()
110-
local_attrs = self.build_attrs(id=self.month_field % id_)
110+
local_attrs = self.build_attrs({'id':self.month_field % id_})
111111
s = Select(choices=month_choices)
112112
select_html = s.render(self.month_field % name, month_val, local_attrs)
113113

@@ -228,11 +228,13 @@ class Meta:
228228

229229

230230
class ImportScanForm(forms.Form):
231-
SCAN_TYPE_CHOICES = (("Burp Scan", "Burp Scan"), ("Nessus Scan", "Nessus Scan"), ("Nmap Scan", "Nmap Scan"), ("Nexpose Scan", "Nexpose Scan"),
231+
SCAN_TYPE_CHOICES = (("Burp Scan", "Burp Scan"), ("Nessus Scan", "Nessus Scan"), ("Nmap Scan", "Nmap Scan"),
232+
("Nexpose Scan", "Nexpose Scan"),
232233
("AppSpider Scan", "AppSpider Scan"), ("Veracode Scan", "Veracode Scan"),
233234
("Checkmarx Scan", "Checkmarx Scan"), ("ZAP Scan", "ZAP Scan"),
234235
("Arachni Scan", "Arachni Scan"), ("VCG Scan", "VCG Scan"),
235-
("Dependency Check Scan", "Dependency Check Scan"), ("Retire.js Scan", "Retire.js Scan"), ("Node Security Platform Scan", "Node Security Platform Scan"),
236+
("Dependency Check Scan", "Dependency Check Scan"), ("Retire.js Scan", "Retire.js Scan"),
237+
("Node Security Platform Scan", "Node Security Platform Scan"),
236238
("Qualys Scan", "Qualys Scan"),
237239
("Generic Findings Import", "Generic Findings Import"))
238240
scan_date = forms.DateTimeField(
@@ -474,7 +476,6 @@ def is_valid(self):
474476
return False
475477
return True
476478

477-
478479
class Meta:
479480
model = Engagement
480481
exclude = ('first_contacted', 'version', 'eng_type', 'real_start',
@@ -546,7 +547,7 @@ class TestForm(forms.ModelForm):
546547
test_type = forms.ModelChoiceField(queryset=Test_Type.objects.all().order_by('name'))
547548
environment = forms.ModelChoiceField(
548549
queryset=Development_Environment.objects.all().order_by('name'))
549-
#credential = forms.ModelChoiceField(Cred_User.objects.all(), required=False)
550+
# credential = forms.ModelChoiceField(Cred_User.objects.all(), required=False)
550551
target_start = forms.DateTimeField(widget=forms.TextInput(
551552
attrs={'class': 'datepicker'}))
552553
target_end = forms.DateTimeField(widget=forms.TextInput(
@@ -556,9 +557,8 @@ class TestForm(forms.ModelForm):
556557
help_text="Add tags that help describe this test. "
557558
"Choose from the list or add new tags. Press TAB key to add.")
558559
lead = forms.ModelChoiceField(
559-
queryset=User.objects.exclude(is_staff=False),
560-
required=False, label="Testing Lead")
561-
560+
queryset=User.objects.exclude(is_staff=False),
561+
required=False, label="Testing Lead")
562562

563563
def __init__(self, *args, **kwargs):
564564
tags = Tag.objects.usage_for_model(Test)
@@ -667,6 +667,7 @@ class Meta:
667667
exclude = ('reporter', 'url', 'numerical_severity', 'endpoint', 'images', 'under_review', 'reviewers',
668668
'review_requested_by')
669669

670+
670671
class PromoteFindingForm(forms.ModelForm):
671672
title = forms.CharField(max_length=1000)
672673
date = forms.DateField(required=True,
@@ -1047,6 +1048,7 @@ class Meta:
10471048
model = Notes
10481049
fields = ['entry']
10491050

1051+
10501052
class DefectFindingForm(forms.ModelForm):
10511053
CLOSE_CHOICES = (("Close Finding", "Close Finding"), ("Not Fixed", "Not Fixed"))
10521054
defect_choice = forms.ChoiceField(required=True, choices=CLOSE_CHOICES)
@@ -1062,6 +1064,7 @@ class Meta:
10621064
model = Notes
10631065
fields = ['entry']
10641066

1067+
10651068
class ClearFindingReviewForm(forms.ModelForm):
10661069
entry = forms.CharField(
10671070
required=True, max_length=2400,
@@ -1269,26 +1272,30 @@ class Meta:
12691272

12701273
FindingImageFormSet = modelformset_factory(FindingImage, extra=3, max_num=10, exclude=[''], can_delete=True)
12711274

1275+
12721276
class JIRAForm(forms.ModelForm):
12731277
password = forms.CharField(widget=forms.PasswordInput, required=True)
12741278

12751279
class Meta:
12761280
model = JIRA_Conf
12771281
exclude = ['product']
12781282

1279-
class ToolTypeForm(forms.ModelForm):
12801283

1284+
class ToolTypeForm(forms.ModelForm):
12811285
class Meta:
12821286
model = Tool_Type
12831287
exclude = ['product']
12841288

1289+
12851290
class ToolConfigForm(forms.ModelForm):
12861291
tool_type = forms.ModelChoiceField(queryset=Tool_Type.objects.all(), label='Tool Type')
12871292
ssh = forms.CharField(widget=forms.Textarea(attrs={}), required=False, label='SSH Key')
1293+
12881294
class Meta:
12891295
model = Tool_Configuration
12901296
exclude = ['product']
12911297

1298+
12921299
class DeleteToolProductSettingsForm(forms.ModelForm):
12931300
id = forms.IntegerField(required=True,
12941301
widget=forms.widgets.HiddenInput())
@@ -1297,6 +1304,7 @@ class Meta:
12971304
model = Tool_Product_Settings
12981305
exclude = ['tool_type']
12991306

1307+
13001308
class ToolProductSettingsForm(forms.ModelForm):
13011309
tool_configuration = forms.ModelChoiceField(queryset=Tool_Configuration.objects.all(), label='Tool Configuration')
13021310

@@ -1306,40 +1314,44 @@ class Meta:
13061314
exclude = ['tool_type']
13071315
order = ['name']
13081316

1317+
13091318
class CredMappingForm(forms.ModelForm):
1310-
cred_user = forms.ModelChoiceField(queryset=Cred_Mapping.objects.all().select_related('cred_id'), required=False, label='Select a Credential')
1319+
cred_user = forms.ModelChoiceField(queryset=Cred_Mapping.objects.all().select_related('cred_id'), required=False,
1320+
label='Select a Credential')
13111321

13121322
class Meta:
13131323
model = Cred_Mapping
13141324
fields = ['cred_user']
13151325
exclude = ['product', 'finding', 'engagement', 'test', 'url', 'is_authn_provider']
13161326

1317-
class CredMappingFormProd(forms.ModelForm):
13181327

1328+
class CredMappingFormProd(forms.ModelForm):
13191329
class Meta:
13201330
model = Cred_Mapping
13211331
fields = ['cred_id', 'url', 'is_authn_provider']
13221332
exclude = ['product', 'finding', 'engagement', 'test']
13231333

1324-
class SystemSettingsForm(forms.ModelForm):
13251334

1335+
class SystemSettingsForm(forms.ModelForm):
13261336
class Meta:
13271337
model = System_Settings
13281338
exclude = ['']
13291339

13301340

13311341
class CredUserForm(forms.ModelForm):
1332-
#selenium_script = forms.FileField(widget=forms.widgets.FileInput(
1342+
# selenium_script = forms.FileField(widget=forms.widgets.FileInput(
13331343
# attrs={"accept": ".py"}),
13341344
# label="Select a Selenium Script", required=False)
13351345

13361346
class Meta:
13371347
model = Cred_User
13381348
exclude = ['']
1339-
#fields = ['selenium_script']
1349+
# fields = ['selenium_script']
1350+
13401351

13411352
class JIRAPKeyForm(forms.ModelForm):
13421353
conf = forms.ModelChoiceField(queryset=JIRA_Conf.objects.all(), label='JIRA Configuration')
1354+
13431355
class Meta:
13441356
model = JIRA_PKey
13451357
exclude = ['product']
@@ -1350,6 +1362,6 @@ def __init__(self, *args, **kwargs):
13501362
self.enabled = kwargs.pop('enabled')
13511363
super(JIRAFindingForm, self).__init__(*args, **kwargs)
13521364
self.fields['push_to_jira'] = forms.BooleanField(initial=self.enabled)
1353-
self.fields['push_to_jira'].required=False
1365+
self.fields['push_to_jira'].required = False
13541366

13551367
push_to_jira = forms.BooleanField(required=False)

dojo/metrics/views.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -306,8 +306,7 @@ def metrics(request, mtype):
306306
'name': page_name,
307307
'start_date': start_date,
308308
'end_date': end_date,
309-
'findings': findings.qs,
310-
'find_object': findings,
309+
'findings': findings,
311310
'opened_per_month': monthly_counts['opened_per_period'],
312311
'active_per_month': monthly_counts['active_per_period'],
313312
'opened_per_week': weekly_counts['opened_per_period'],
@@ -366,6 +365,7 @@ def simple_metrics(request):
366365
false_p=False,
367366
duplicate=False,
368367
out_of_scope=False,
368+
date=now,
369369
).distinct()
370370

371371
for f in total.all():

0 commit comments

Comments
 (0)