@@ -144,25 +144,42 @@ def handle_resolved_submission(ack: Any, body: dict, view: dict, client: Any) ->
144144 return
145145
146146 captain_user = get_or_create_user_from_slack_id (captain_slack_id )
147+ if not captain_user :
148+ logger .error (
149+ "Could not resolve Slack user %s to a Firetower user" , captain_slack_id
150+ )
151+ client .chat_postMessage (
152+ channel = channel_id ,
153+ text = "Failed to resolve the selected captain to a Firetower user." ,
154+ )
155+ return
147156
148157 if severity in ("P0" , "P1" , "P2" ):
149158 target_status = "Postmortem"
150159 else :
151160 target_status = "Done"
152161
153- data : dict [str , Any ] = {"status" : target_status , "severity" : severity }
154- if captain_user :
155- data ["captain" ] = captain_user .email
162+ data : dict [str , Any ] = {
163+ "status" : target_status ,
164+ "severity" : severity ,
165+ "captain" : captain_user .email ,
166+ }
156167
157168 serializer = IncidentWriteSerializer (instance = incident , data = data , partial = True )
158- if serializer .is_valid ():
159- serializer .save ()
169+ if not serializer .is_valid ():
170+ logger .error ("Resolved update failed: %s" , serializer .errors )
171+ client .chat_postMessage (
172+ channel = channel_id ,
173+ text = f"Failed to resolve incident: { serializer .errors } " ,
174+ )
175+ return
176+ serializer .save ()
160177
161178 client .chat_postMessage (
162179 channel = channel_id ,
163180 text = (
164181 f"*{ incident .incident_number } marked as { target_status } *\n "
165- f"Severity: { severity } | Captain: { captain_user .get_full_name () if captain_user else 'Unknown' } "
182+ f"Severity: { severity } | Captain: { captain_user .get_full_name ()} "
166183 ),
167184 )
168185
0 commit comments