19
19
)
20
20
from dojo .forms import CustomReportOptionsForm
21
21
from dojo .models import Endpoint , Finding
22
- from dojo .utils import get_page_items , get_system_setting , get_words_for_field
22
+ from dojo .utils import first_elem , get_page_items , get_system_setting , get_words_for_field
23
23
24
24
"""
25
25
Widgets are content sections that can be included on reports. The report builder will allow any number of widgets
@@ -371,10 +371,12 @@ def report_widget_factory(json_data=None, request=None, user=None, *, finding_no
371
371
widgets = json .loads (json_data )
372
372
373
373
for idx , widget in enumerate (widgets ):
374
- if list (widget .keys ())[0 ] == "page-break" :
375
- selected_widgets [list (widget .keys ())[0 ] + "-" + str (idx )] = PageBreak ()
374
+ first_widget_keys = first_elem (widget .keys ())
376
375
377
- if list (widget .keys ())[0 ] == "endpoint-list" :
376
+ if first_widget_keys == "page-break" :
377
+ selected_widgets [first_widget_keys + "-" + str (idx )] = PageBreak ()
378
+
379
+ if first_widget_keys == "endpoint-list" :
378
380
endpoints = Endpoint .objects .filter (finding__active = True ,
379
381
finding__false_p = False ,
380
382
finding__duplicate = False ,
@@ -386,7 +388,7 @@ def report_widget_factory(json_data=None, request=None, user=None, *, finding_no
386
388
endpoints = endpoints .distinct ()
387
389
388
390
d = QueryDict (mutable = True )
389
- for item in widget .get (list ( widget . keys ())[ 0 ] ):
391
+ for item in widget .get (first_widget_keys ):
390
392
if item ["name" ] in d :
391
393
d .appendlist (item ["name" ], item ["value" ])
392
394
else :
@@ -400,12 +402,12 @@ def report_widget_factory(json_data=None, request=None, user=None, *, finding_no
400
402
endpoints = EndpointList (request = request , endpoints = endpoints , finding_notes = finding_notes ,
401
403
finding_images = finding_images , host = host , user_id = user_id )
402
404
403
- selected_widgets [list ( widget . keys ())[ 0 ] + "-" + str (idx )] = endpoints
405
+ selected_widgets [first_widget_keys + "-" + str (idx )] = endpoints
404
406
405
- if list ( widget . keys ())[ 0 ] == "finding-list" :
407
+ if first_widget_keys == "finding-list" :
406
408
findings = Finding .objects .all ()
407
409
d = QueryDict (mutable = True )
408
- for item in widget .get (list ( widget . keys ())[ 0 ] ):
410
+ for item in widget .get (first_widget_keys ):
409
411
if item ["name" ] in d :
410
412
d .appendlist (item ["name" ], item ["value" ])
411
413
else :
@@ -414,47 +416,47 @@ def report_widget_factory(json_data=None, request=None, user=None, *, finding_no
414
416
filter_class = ReportFindingFilterWithoutObjectLookups if filter_string_matching else ReportFindingFilter
415
417
findings = filter_class (d , queryset = findings )
416
418
user_id = user .id if user is not None else None
417
- selected_widgets [list ( widget . keys ())[ 0 ] + "-" + str (idx )] = FindingList (request = request , findings = findings ,
419
+ selected_widgets [first_widget_keys + "-" + str (idx )] = FindingList (request = request , findings = findings ,
418
420
finding_notes = finding_notes ,
419
421
finding_images = finding_images ,
420
422
host = host , user_id = user_id )
421
423
422
- if list ( widget . keys ())[ 0 ] == "custom-content" :
424
+ if first_widget_keys == "custom-content" :
423
425
wysiwyg_content = WYSIWYGContent (request = request )
424
426
wysiwyg_content .heading = \
425
- next ((item for item in widget .get (list ( widget . keys ())[ 0 ] ) if item ["name" ] == "heading" ), None )["value" ]
427
+ next ((item for item in widget .get (first_widget_keys ) if item ["name" ] == "heading" ), None )["value" ]
426
428
wysiwyg_content .content = \
427
- next ((item for item in widget .get (list ( widget . keys ())[ 0 ] ) if item ["name" ] == "hidden_content" ), None )["value" ]
429
+ next ((item for item in widget .get (first_widget_keys ) if item ["name" ] == "hidden_content" ), None )["value" ]
428
430
wysiwyg_content .page_break_after = \
429
- next ((item for item in widget .get (list ( widget . keys ())[ 0 ] ) if item ["name" ] == "page_break_after" ),
431
+ next ((item for item in widget .get (first_widget_keys ) if item ["name" ] == "page_break_after" ),
430
432
{"value" : False })["value" ]
431
- selected_widgets [list ( widget . keys ())[ 0 ] + "-" + str (idx )] = wysiwyg_content
432
- if list ( widget . keys ())[ 0 ] == "report-options" :
433
+ selected_widgets [first_widget_keys + "-" + str (idx )] = wysiwyg_content
434
+ if first_widget_keys == "report-options" :
433
435
options = ReportOptions (request = request )
434
436
options .include_finding_notes = \
435
- next ((item for item in widget .get (list ( widget . keys ())[ 0 ] ) if item ["name" ] == "include_finding_notes" ), None )[
437
+ next ((item for item in widget .get (first_widget_keys ) if item ["name" ] == "include_finding_notes" ), None )[
436
438
"value" ]
437
439
options .include_finding_images = \
438
- next ((item for item in widget .get (list ( widget . keys ())[ 0 ] ) if item ["name" ] == "include_finding_images" ), None )[
440
+ next ((item for item in widget .get (first_widget_keys ) if item ["name" ] == "include_finding_images" ), None )[
439
441
"value" ]
440
442
options .report_type = \
441
- next ((item for item in widget .get (list ( widget . keys ())[ 0 ] ) if item ["name" ] == "report_type" ), None )["value" ]
443
+ next ((item for item in widget .get (first_widget_keys ) if item ["name" ] == "report_type" ), None )["value" ]
442
444
options .report_name = \
443
- next ((item for item in widget .get (list ( widget . keys ())[ 0 ] ) if item ["name" ] == "report_name" ), None )["value" ]
444
- selected_widgets [list ( widget . keys ())[ 0 ] ] = options
445
- if list ( widget . keys ())[ 0 ] == "table-of-contents" :
445
+ next ((item for item in widget .get (first_widget_keys ) if item ["name" ] == "report_name" ), None )["value" ]
446
+ selected_widgets [first_widget_keys ] = options
447
+ if first_widget_keys == "table-of-contents" :
446
448
toc = TableOfContents (request = request )
447
- toc .heading = next ((item for item in widget .get (list ( widget . keys ())[ 0 ] ) if item ["name" ] == "heading" ), None )[
449
+ toc .heading = next ((item for item in widget .get (first_widget_keys ) if item ["name" ] == "heading" ), None )[
448
450
"value" ]
449
- selected_widgets [list ( widget . keys ())[ 0 ] ] = toc
450
- if list ( widget . keys ())[ 0 ] == "cover-page" :
451
+ selected_widgets [first_widget_keys ] = toc
452
+ if first_widget_keys == "cover-page" :
451
453
cover_page = CoverPage (request = request )
452
- cover_page .heading = next ((item for item in widget .get (list ( widget . keys ())[ 0 ] ) if item ["name" ] == "heading" ), None )[
454
+ cover_page .heading = next ((item for item in widget .get (first_widget_keys ) if item ["name" ] == "heading" ), None )[
453
455
"value" ]
454
456
cover_page .sub_heading = \
455
- next ((item for item in widget .get (list ( widget . keys ())[ 0 ] ) if item ["name" ] == "sub_heading" ), None )["value" ]
457
+ next ((item for item in widget .get (first_widget_keys ) if item ["name" ] == "sub_heading" ), None )["value" ]
456
458
cover_page .meta_info = \
457
- next ((item for item in widget .get (list ( widget . keys ())[ 0 ] ) if item ["name" ] == "meta_info" ), None )["value" ]
458
- selected_widgets [list ( widget . keys ())[ 0 ] ] = cover_page
459
+ next ((item for item in widget .get (first_widget_keys ) if item ["name" ] == "meta_info" ), None )["value" ]
460
+ selected_widgets [first_widget_keys ] = cover_page
459
461
460
462
return selected_widgets
0 commit comments