@@ -299,9 +299,20 @@ def test_has_short_review_process(self):
299
299
self .assertTrue (has_short_review_process )
300
300
301
301
def test_generate_destruction_report (self ):
302
- destruction_list = DestructionListFactory .create (status = ListStatus .deleted )
302
+ record_manager = UserFactory .create (
303
+ first_name = "John" ,
304
+ last_name = "Doe" ,
305
+ username = "jdoe1" ,
306
+ post__can_start_destruction = True ,
307
+ )
308
+ destruction_list = DestructionListFactory .create (
309
+ status = ListStatus .deleted ,
310
+ end = datetime (2024 , 12 , 2 , 12 , tzinfo = timezone .get_default_timezone ()),
311
+ )
312
+ logevent .destruction_list_deletion_triggered (destruction_list , record_manager )
303
313
DestructionListItemFactory .create (
304
314
processing_status = InternalStatus .succeeded ,
315
+ status = ListItemStatus .suggested ,
305
316
destruction_list = destruction_list ,
306
317
extra_zaak_data = {
307
318
"url" : "http://zaken.nl/api/v1/zaken/111-111-111" ,
@@ -328,6 +339,7 @@ def test_generate_destruction_report(self):
328
339
)
329
340
DestructionListItemFactory .create (
330
341
processing_status = InternalStatus .succeeded ,
342
+ status = ListItemStatus .suggested ,
331
343
destruction_list = destruction_list ,
332
344
extra_zaak_data = {
333
345
"url" : "http://zaken.nl/api/v1/zaken/111-111-222" ,
@@ -381,9 +393,27 @@ def test_generate_destruction_report(self):
381
393
sheet_deleted_zaken = wb [gettext ("Deleted zaken" )]
382
394
rows = list (sheet_deleted_zaken .iter_rows (values_only = True ))
383
395
384
- self .assertEqual (len (rows ), 4 )
396
+ self .assertEqual (len (rows ), 7 )
397
+ self .assertEqual (
398
+ rows [0 ][:4 ],
399
+ (
400
+ gettext ("Date/Time of deletion" ),
401
+ gettext ("User who started the deletion" ),
402
+ gettext ("Groups" ),
403
+ gettext ("Number of deleted cases" ),
404
+ ),
405
+ )
406
+ self .assertEqual (
407
+ rows [1 ][:4 ],
408
+ (
409
+ "2024-12-02 12:00+01:00" ,
410
+ "John Doe (jdoe1)" ,
411
+ None ,
412
+ 3 ,
413
+ ),
414
+ )
385
415
self .assertEqual (
386
- rows [0 ],
416
+ rows [3 ],
387
417
(
388
418
"Zaaktype UUID" ,
389
419
"Zaaktype Omschrijving" ,
@@ -396,7 +426,7 @@ def test_generate_destruction_report(self):
396
426
),
397
427
)
398
428
self .assertEqual (
399
- rows [1 ],
429
+ rows [4 ],
400
430
(
401
431
"111-111-111" ,
402
432
"Tralala zaaktype" ,
@@ -409,7 +439,7 @@ def test_generate_destruction_report(self):
409
439
),
410
440
)
411
441
self .assertEqual (
412
- rows [2 ],
442
+ rows [5 ],
413
443
(
414
444
"111-111-111" ,
415
445
"Tralala zaaktype" ,
@@ -422,7 +452,7 @@ def test_generate_destruction_report(self):
422
452
),
423
453
)
424
454
self .assertEqual (
425
- rows [3 ],
455
+ rows [6 ],
426
456
(
427
457
"111-111-222" ,
428
458
"Tralala zaaktype" ,
@@ -435,6 +465,148 @@ def test_generate_destruction_report(self):
435
465
),
436
466
)
437
467
468
+ def test_generate_destruction_report_with_cases_excluded_from_list (self ):
469
+ destruction_list = DestructionListFactory .create (
470
+ status = ListStatus .deleted ,
471
+ end = datetime (2024 , 12 , 2 , 12 , tzinfo = timezone .get_default_timezone ()),
472
+ )
473
+ DestructionListItemFactory .create (
474
+ processing_status = InternalStatus .succeeded ,
475
+ status = ListItemStatus .suggested ,
476
+ destruction_list = destruction_list ,
477
+ extra_zaak_data = {
478
+ "url" : "http://zaken.nl/api/v1/zaken/111-111-111" ,
479
+ "omschrijving" : "Test description 3" ,
480
+ "identificatie" : "ZAAK-01" ,
481
+ "startdatum" : "2020-01-03" ,
482
+ "einddatum" : "2022-01-03" ,
483
+ "resultaat" : None ,
484
+ "zaaktype" : {
485
+ "url" : "http://catalogi.nl/api/v1/zaaktypen/111-111-222" ,
486
+ "omschrijving" : "Tralala zaaktype" ,
487
+ "selectielijst_procestype" : {
488
+ "naam" : "Instellen en inrichten organisatie" ,
489
+ },
490
+ },
491
+ },
492
+ )
493
+ DestructionListItemFactory .create (
494
+ processing_status = InternalStatus .new ,
495
+ status = ListItemStatus .removed , # Case no longer in destruction list
496
+ destruction_list = destruction_list ,
497
+ extra_zaak_data = {
498
+ "url" : "http://zaken.nl/api/v1/zaken/222-222-222" ,
499
+ "omschrijving" : "Test description 3" ,
500
+ "identificatie" : "ZAAK-02" ,
501
+ "startdatum" : "2020-01-03" ,
502
+ "einddatum" : "2022-01-03" ,
503
+ "resultaat" : None ,
504
+ "zaaktype" : {
505
+ "url" : "http://catalogi.nl/api/v1/zaaktypen/111-111-222" ,
506
+ "omschrijving" : "Tralala zaaktype" ,
507
+ "selectielijst_procestype" : {
508
+ "naam" : "Instellen en inrichten organisatie" ,
509
+ },
510
+ },
511
+ },
512
+ )
513
+ DestructionListItemFactory .create (
514
+ processing_status = InternalStatus .succeeded ,
515
+ destruction_list = destruction_list ,
516
+ status = ListItemStatus .suggested ,
517
+ extra_zaak_data = {
518
+ "url" : "http://zaken.nl/api/v1/zaken/333-333-333" ,
519
+ "omschrijving" : "Test description 3" ,
520
+ "identificatie" : "ZAAK-03" ,
521
+ "startdatum" : "2020-01-03" ,
522
+ "einddatum" : "2022-01-03" ,
523
+ "resultaat" : None ,
524
+ "zaaktype" : {
525
+ "url" : "http://catalogi.nl/api/v1/zaaktypen/111-111-222" ,
526
+ "omschrijving" : "Tralala zaaktype" ,
527
+ "selectielijst_procestype" : {
528
+ "naam" : "Instellen en inrichten organisatie" ,
529
+ },
530
+ },
531
+ },
532
+ )
533
+
534
+ destruction_list .generate_destruction_report ()
535
+
536
+ destruction_list .refresh_from_db ()
537
+
538
+ wb = load_workbook (filename = destruction_list .destruction_report .path )
539
+ sheet_deleted_zaken = wb [gettext ("Deleted zaken" )]
540
+ rows = list (sheet_deleted_zaken .iter_rows (values_only = True ))
541
+
542
+ self .assertEqual (len (rows ), 6 )
543
+ self .assertEqual (
544
+ rows [3 ],
545
+ (
546
+ "Zaaktype UUID" ,
547
+ "Zaaktype Omschrijving" ,
548
+ "Zaaktype Identificatie" ,
549
+ "Zaak Identificatie" ,
550
+ "Zaak Startdatum" ,
551
+ "Zaak Einddatum" ,
552
+ "Selectielijst Procestype" ,
553
+ "Resultaat" ,
554
+ ),
555
+ )
556
+ deleted_zaken_ids = sorted ([rows [4 ][3 ], rows [5 ][3 ]])
557
+ self .assertEqual (
558
+ deleted_zaken_ids ,
559
+ ["ZAAK-01" , "ZAAK-03" ],
560
+ )
561
+
562
+ def test_generate_destruction_report_with_multiple_logs (self ):
563
+ record_manager1 = UserFactory .create (
564
+ first_name = "John" ,
565
+ last_name = "Doe" ,
566
+ username = "jdoe1" ,
567
+ post__can_start_destruction = True ,
568
+ )
569
+ record_manager2 = UserFactory .create (
570
+ first_name = "Jane" ,
571
+ last_name = "Doe" ,
572
+ username = "jdoe2" ,
573
+ post__can_start_destruction = True ,
574
+ )
575
+ destruction_list = DestructionListFactory .create (
576
+ status = ListStatus .deleted ,
577
+ end = datetime (2024 , 12 , 2 , 12 , tzinfo = timezone .get_default_timezone ()),
578
+ )
579
+ logevent .destruction_list_deletion_triggered (destruction_list , record_manager1 )
580
+ logevent .destruction_list_deletion_triggered (destruction_list , record_manager2 )
581
+
582
+ destruction_list .generate_destruction_report ()
583
+
584
+ destruction_list .refresh_from_db ()
585
+
586
+ wb = load_workbook (filename = destruction_list .destruction_report .path )
587
+ sheet_deleted_zaken = wb [gettext ("Deleted zaken" )]
588
+ rows = list (sheet_deleted_zaken .iter_rows (values_only = True ))
589
+
590
+ self .assertEqual (len (rows ), 4 )
591
+ self .assertEqual (
592
+ rows [0 ][:4 ],
593
+ (
594
+ gettext ("Date/Time of deletion" ),
595
+ gettext ("User who started the deletion" ),
596
+ gettext ("Groups" ),
597
+ gettext ("Number of deleted cases" ),
598
+ ),
599
+ )
600
+ self .assertEqual (
601
+ rows [1 ][:4 ],
602
+ (
603
+ "2024-12-02 12:00+01:00" ,
604
+ "Jane Doe (jdoe2)" ,
605
+ None ,
606
+ 0 ,
607
+ ),
608
+ )
609
+
438
610
def test_generate_destruction_report_review_process (self ):
439
611
author = UserFactory .create (post__can_start_destruction = True )
440
612
reviewer = UserFactory .create (
@@ -455,7 +627,9 @@ def test_generate_destruction_report_review_process(self):
455
627
archivist .groups .add (archivist_group )
456
628
457
629
destruction_list = DestructionListFactory .create (
458
- status = ListStatus .deleted , author = author
630
+ status = ListStatus .deleted ,
631
+ author = author ,
632
+ end = datetime (2024 , 12 , 2 , 12 , tzinfo = timezone .get_default_timezone ()),
459
633
)
460
634
461
635
review_reviewer_rejected = DestructionListReviewFactory .create (
0 commit comments