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
@@ -369,10 +369,12 @@ def report_widget_factory(json_data=None, request=None, user=None, finding_notes
369
369
widgets = json .loads (json_data )
370
370
371
371
for idx , widget in enumerate (widgets ):
372
- if list (widget .keys ())[0 ] == "page-break" :
373
- selected_widgets [list (widget .keys ())[0 ] + "-" + str (idx )] = PageBreak ()
372
+ first_widget_keys = first_elem (widget .keys ())
374
373
375
- if list (widget .keys ())[0 ] == "endpoint-list" :
374
+ if first_widget_keys == "page-break" :
375
+ selected_widgets [first_widget_keys + "-" + str (idx )] = PageBreak ()
376
+
377
+ if first_widget_keys == "endpoint-list" :
376
378
endpoints = Endpoint .objects .filter (finding__active = True ,
377
379
finding__false_p = False ,
378
380
finding__duplicate = False ,
@@ -384,7 +386,7 @@ def report_widget_factory(json_data=None, request=None, user=None, finding_notes
384
386
endpoints = endpoints .distinct ()
385
387
386
388
d = QueryDict (mutable = True )
387
- for item in widget .get (list ( widget . keys ())[ 0 ] ):
389
+ for item in widget .get (first_widget_keys ):
388
390
if item ["name" ] in d :
389
391
d .appendlist (item ["name" ], item ["value" ])
390
392
else :
@@ -398,12 +400,12 @@ def report_widget_factory(json_data=None, request=None, user=None, finding_notes
398
400
endpoints = EndpointList (request = request , endpoints = endpoints , finding_notes = finding_notes ,
399
401
finding_images = finding_images , host = host , user_id = user_id )
400
402
401
- selected_widgets [list ( widget . keys ())[ 0 ] + "-" + str (idx )] = endpoints
403
+ selected_widgets [first_widget_keys + "-" + str (idx )] = endpoints
402
404
403
- if list ( widget . keys ())[ 0 ] == "finding-list" :
405
+ if first_widget_keys == "finding-list" :
404
406
findings = Finding .objects .all ()
405
407
d = QueryDict (mutable = True )
406
- for item in widget .get (list ( widget . keys ())[ 0 ] ):
408
+ for item in widget .get (first_widget_keys ):
407
409
if item ["name" ] in d :
408
410
d .appendlist (item ["name" ], item ["value" ])
409
411
else :
@@ -412,47 +414,47 @@ def report_widget_factory(json_data=None, request=None, user=None, finding_notes
412
414
filter_class = ReportFindingFilterWithoutObjectLookups if filter_string_matching else ReportFindingFilter
413
415
findings = filter_class (d , queryset = findings )
414
416
user_id = user .id if user is not None else None
415
- selected_widgets [list ( widget . keys ())[ 0 ] + "-" + str (idx )] = FindingList (request = request , findings = findings ,
417
+ selected_widgets [first_widget_keys + "-" + str (idx )] = FindingList (request = request , findings = findings ,
416
418
finding_notes = finding_notes ,
417
419
finding_images = finding_images ,
418
420
host = host , user_id = user_id )
419
421
420
- if list ( widget . keys ())[ 0 ] == "custom-content" :
422
+ if first_widget_keys == "custom-content" :
421
423
wysiwyg_content = WYSIWYGContent (request = request )
422
424
wysiwyg_content .heading = \
423
- next ((item for item in widget .get (list ( widget . keys ())[ 0 ] ) if item ["name" ] == "heading" ), None )["value" ]
425
+ next ((item for item in widget .get (first_widget_keys ) if item ["name" ] == "heading" ), None )["value" ]
424
426
wysiwyg_content .content = \
425
- next ((item for item in widget .get (list ( widget . keys ())[ 0 ] ) if item ["name" ] == "hidden_content" ), None )["value" ]
427
+ next ((item for item in widget .get (first_widget_keys ) if item ["name" ] == "hidden_content" ), None )["value" ]
426
428
wysiwyg_content .page_break_after = \
427
- next ((item for item in widget .get (list ( widget . keys ())[ 0 ] ) if item ["name" ] == "page_break_after" ),
429
+ next ((item for item in widget .get (first_widget_keys ) if item ["name" ] == "page_break_after" ),
428
430
{"value" : False })["value" ]
429
- selected_widgets [list ( widget . keys ())[ 0 ] + "-" + str (idx )] = wysiwyg_content
430
- if list ( widget . keys ())[ 0 ] == "report-options" :
431
+ selected_widgets [first_widget_keys + "-" + str (idx )] = wysiwyg_content
432
+ if first_widget_keys == "report-options" :
431
433
options = ReportOptions (request = request )
432
434
options .include_finding_notes = \
433
- next ((item for item in widget .get (list ( widget . keys ())[ 0 ] ) if item ["name" ] == "include_finding_notes" ), None )[
435
+ next ((item for item in widget .get (first_widget_keys ) if item ["name" ] == "include_finding_notes" ), None )[
434
436
"value" ]
435
437
options .include_finding_images = \
436
- next ((item for item in widget .get (list ( widget . keys ())[ 0 ] ) if item ["name" ] == "include_finding_images" ), None )[
438
+ next ((item for item in widget .get (first_widget_keys ) if item ["name" ] == "include_finding_images" ), None )[
437
439
"value" ]
438
440
options .report_type = \
439
- next ((item for item in widget .get (list ( widget . keys ())[ 0 ] ) if item ["name" ] == "report_type" ), None )["value" ]
441
+ next ((item for item in widget .get (first_widget_keys ) if item ["name" ] == "report_type" ), None )["value" ]
440
442
options .report_name = \
441
- next ((item for item in widget .get (list ( widget . keys ())[ 0 ] ) if item ["name" ] == "report_name" ), None )["value" ]
442
- selected_widgets [list ( widget . keys ())[ 0 ] ] = options
443
- if list ( widget . keys ())[ 0 ] == "table-of-contents" :
443
+ next ((item for item in widget .get (first_widget_keys ) if item ["name" ] == "report_name" ), None )["value" ]
444
+ selected_widgets [first_widget_keys ] = options
445
+ if first_widget_keys == "table-of-contents" :
444
446
toc = TableOfContents (request = request )
445
- toc .heading = next ((item for item in widget .get (list ( widget . keys ())[ 0 ] ) if item ["name" ] == "heading" ), None )[
447
+ toc .heading = next ((item for item in widget .get (first_widget_keys ) if item ["name" ] == "heading" ), None )[
446
448
"value" ]
447
- selected_widgets [list ( widget . keys ())[ 0 ] ] = toc
448
- if list ( widget . keys ())[ 0 ] == "cover-page" :
449
+ selected_widgets [first_widget_keys ] = toc
450
+ if first_widget_keys == "cover-page" :
449
451
cover_page = CoverPage (request = request )
450
- cover_page .heading = next ((item for item in widget .get (list ( widget . keys ())[ 0 ] ) if item ["name" ] == "heading" ), None )[
452
+ cover_page .heading = next ((item for item in widget .get (first_widget_keys ) if item ["name" ] == "heading" ), None )[
451
453
"value" ]
452
454
cover_page .sub_heading = \
453
- next ((item for item in widget .get (list ( widget . keys ())[ 0 ] ) if item ["name" ] == "sub_heading" ), None )["value" ]
455
+ next ((item for item in widget .get (first_widget_keys ) if item ["name" ] == "sub_heading" ), None )["value" ]
454
456
cover_page .meta_info = \
455
- next ((item for item in widget .get (list ( widget . keys ())[ 0 ] ) if item ["name" ] == "meta_info" ), None )["value" ]
456
- selected_widgets [list ( widget . keys ())[ 0 ] ] = cover_page
457
+ next ((item for item in widget .get (first_widget_keys ) if item ["name" ] == "meta_info" ), None )["value" ]
458
+ selected_widgets [first_widget_keys ] = cover_page
457
459
458
460
return selected_widgets
0 commit comments