55from django import forms
66from django .conf import settings
77from django .contrib import messages
8+ from django .contrib .admin .models import ADDITION , CHANGE , LogEntry
9+ from django .contrib .contenttypes .models import ContentType
810from django .template .loader import render_to_string
11+ from django .utils .encoding import force_str
912from django .utils .safestring import mark_safe
1013from django .utils .translation import gettext_lazy as _
1114from tinymce .widgets import TinyMCE
@@ -103,6 +106,19 @@ def save(self, *args, **kwargs):
103106 ):
104107 self .instance .author_user = self .user
105108 if not self .instance .is_mass_draft () and "ai_evaluation" in self .changed_data :
109+ change_dict = {
110+ "changed" : self .changed_data ,
111+ "ai_evaluation_previous" : self .initial .get ("ai_evaluation" , None ),
112+ "ai_evaluation_new" : self .cleaned_data .get ("ai_evaluation" , None ),
113+ }
114+ LogEntry .objects .log_action (
115+ user_id = self .request .user .id ,
116+ content_type_id = ContentType .objects .get_for_model (self .instance ).pk ,
117+ object_id = self .instance .pk ,
118+ object_repr = force_str (self .instance ),
119+ action_flag = CHANGE ,
120+ change_message = f"{ change_dict } " ,
121+ )
106122 update_letter_normalized_answers (self .instance .pk )
107123 messages .success (
108124 self .request ,
@@ -119,6 +135,22 @@ def save(self, *args, **kwargs):
119135 case = self .cleaned_data ["case" ]
120136 )
121137 self .instance .record .save ()
138+ change_dict = {
139+ "changed" : self .changed_data ,
140+ "new_case" : self .cleaned_data ["case" ].pk ,
141+ "previous_case" : self .initial ["case" ].pk ,
142+ "letter" : self .instance .pk ,
143+ }
144+ LogEntry .objects .log_action (
145+ user_id = self .request .user .id ,
146+ content_type_id = ContentType .objects .get_for_model (
147+ self .instance .record
148+ ).pk ,
149+ object_id = self .instance .record .pk ,
150+ object_repr = force_str (self .instance .record ),
151+ action_flag = CHANGE ,
152+ change_message = f"{ change_dict } " ,
153+ )
122154 if "ai_evaluation" not in self .changed_data :
123155 categorize_letter_in_background (self .instance .pk )
124156 messages .success (
@@ -130,6 +162,21 @@ def save(self, *args, **kwargs):
130162 )
131163 if not hasattr (self .instance , "record" ):
132164 self .instance .record = Record .objects .create (case = self .cleaned_data ["case" ])
165+ change_dict = {
166+ "changed" : self .changed_data ,
167+ "new_case" : self .cleaned_data ["case" ].pk ,
168+ "letter" : self .instance .pk ,
169+ }
170+ LogEntry .objects .log_action (
171+ user_id = self .request .user .id ,
172+ content_type_id = ContentType .objects .get_for_model (
173+ self .instance .record
174+ ).pk ,
175+ object_id = self .instance .record .pk ,
176+ object_repr = force_str (self .instance .record ),
177+ action_flag = ADDITION ,
178+ change_message = f"{ change_dict } " ,
179+ )
133180 self .instance .save ()
134181 return super ().save (* args , ** kwargs )
135182
@@ -278,6 +325,20 @@ def save(self):
278325 self .letter .case = self .cleaned_data ["case" ]
279326 self .letter .record .save ()
280327 self .letter .case .save ()
328+ chang_dict = {
329+ "changed" : ["case" ],
330+ "new_case" : self .cleaned_data ["case" ].pk ,
331+ "previous_case" : None ,
332+ "letter" : self .letter .pk ,
333+ }
334+ LogEntry .objects .log_action (
335+ user_id = self .request .user .id ,
336+ content_type_id = ContentType .objects .get_for_model (self .letter .record ).pk ,
337+ object_id = self .letter .record .pk ,
338+ object_repr = force_str (self .letter .record ),
339+ action_flag = CHANGE ,
340+ change_message = f"{ chang_dict } " ,
341+ )
281342 categorize_letter_in_background (self .letter .pk )
282343 messages .success (
283344 self .request ,
0 commit comments