9
9
from xlsxwriter .worksheet import Worksheet
10
10
11
11
from openarchiefbeheer .accounts .utils import format_user , format_user_groups
12
- from openarchiefbeheer .logging .logevent import destruction_list_reviewed
13
- from openarchiefbeheer .logging .utils import get_event_template , get_readable_timestamp
12
+ from openarchiefbeheer .logging .logevent import (
13
+ destruction_list_deletion_triggered ,
14
+ destruction_list_reviewed ,
15
+ )
16
+ from openarchiefbeheer .logging .utils import get_event_template
17
+ from openarchiefbeheer .utils .formatting import get_readable_timestamp
14
18
from openarchiefbeheer .zaken .api .constants import ZAAK_METADATA_FIELDS_MAPPINGS
15
19
16
- from .constants import InternalStatus
20
+ from .constants import InternalStatus , ListItemStatus
17
21
from .models import DestructionList
18
22
19
23
@@ -41,13 +45,41 @@ def add_review_process_table(
41
45
data = [
42
46
format_user_groups (log .extra_data ["user_groups" ]),
43
47
format_user (log .extra_data ["user" ]),
44
- get_readable_timestamp (log ),
48
+ get_readable_timestamp (log . timestamp ),
45
49
# This column is not useful, since we are filtering on approved reviews.
46
50
# But it was specifically requested.
47
51
_ ("Has approved" ),
48
52
]
49
53
worksheet .write_row (start_row + row_count + 1 , 0 , data )
50
54
55
+ def add_general_info_table (self , worksheet : Worksheet , start_row : int = 0 ) -> None :
56
+ column_names = [
57
+ _ ("Date/Time of deletion" ),
58
+ _ ("User who started the deletion" ),
59
+ _ ("Groups" ),
60
+ _ ("Number of deleted cases" ),
61
+ ]
62
+ worksheet .write_row (start_row , 0 , column_names )
63
+
64
+ log = (
65
+ TimelineLog .objects .for_object (self .destruction_list )
66
+ .filter (template = get_event_template (destruction_list_deletion_triggered ))
67
+ .order_by ("timestamp" )
68
+ .last ()
69
+ )
70
+ number_of_cases = self .destruction_list .items .filter (
71
+ processing_status = InternalStatus .succeeded ,
72
+ status = ListItemStatus .suggested ,
73
+ ).count ()
74
+
75
+ general_info_data = [
76
+ get_readable_timestamp (self .destruction_list .end ),
77
+ format_user (log .extra_data ["user" ]) if log else "" ,
78
+ format_user_groups (log .extra_data ["user_groups" ]) if log else "" ,
79
+ number_of_cases ,
80
+ ]
81
+ worksheet .write_row (start_row + 1 , 0 , general_info_data )
82
+
51
83
def add_zaken_table (self , worksheet : Worksheet , start_row : int = 0 ) -> None :
52
84
worksheet .write_row (
53
85
start_row , 0 , [field ["name" ] for field in ZAAK_METADATA_FIELDS_MAPPINGS ]
@@ -70,7 +102,8 @@ def generate_destruction_report(self, file: IO) -> None:
70
102
worksheet_zaken = workbook .add_worksheet (name = _ ("Deleted zaken" ))
71
103
worksheet_review_process = workbook .add_worksheet (name = _ ("Review process" ))
72
104
73
- self .add_zaken_table (worksheet_zaken )
105
+ self .add_general_info_table (worksheet_zaken )
106
+ self .add_zaken_table (worksheet_zaken , start_row = 3 )
74
107
self .add_review_process_table (worksheet_review_process )
75
108
76
109
workbook .close ()
0 commit comments