@@ -301,6 +301,7 @@ def update(self, instance: Observation, validated_data: dict):
301301 actual_status = instance .current_status
302302 actual_vex_justification = instance .current_vex_justification
303303 actual_vex_remediations = instance .current_vex_remediations
304+ actual_risk_acceptance_expiry_date = instance .risk_acceptance_expiry_date
304305
305306 instance .origin_component_name = ""
306307 instance .origin_component_version = ""
@@ -317,36 +318,52 @@ def update(self, instance: Observation, validated_data: dict):
317318
318319 observation : Observation = super ().update (instance , validated_data )
319320
320- if actual_severity != observation .current_severity :
321- actual_severity = observation .current_severity
322- else :
323- actual_severity = ""
321+ log_severity = (
322+ observation .current_severity
323+ if actual_severity != observation .current_severity
324+ else ""
325+ )
324326
325- if actual_status != observation .current_status :
326- actual_status = observation .current_status
327- else :
328- actual_status = ""
327+ log_status = (
328+ observation .current_status
329+ if actual_status != observation .current_status
330+ else ""
331+ )
329332
330- if actual_vex_justification != observation .current_vex_justification :
331- actual_vex_justification = observation .current_vex_justification
332- else :
333- actual_vex_justification = ""
333+ log_vex_justification = (
334+ observation .current_vex_justification
335+ if actual_vex_justification != observation .current_vex_justification
336+ else ""
337+ )
334338
335339 if actual_vex_remediations != observation .current_vex_remediations :
336340 actual_vex_remediations = observation .current_vex_remediations
337341 else :
338342 actual_vex_remediations = ""
339343
340- if actual_severity or actual_status :
344+ log_risk_acceptance_expiry_date = (
345+ observation .risk_acceptance_expiry_date
346+ if actual_risk_acceptance_expiry_date
347+ != observation .risk_acceptance_expiry_date
348+ else None
349+ )
350+
351+ if (
352+ log_severity
353+ or log_status
354+ or log_vex_justification
355+ or log_risk_acceptance_expiry_date
356+ or actual_vex_remediations
357+ ):
341358 create_observation_log (
342359 observation = observation ,
343- severity = actual_severity ,
344- status = actual_status ,
360+ severity = log_severity ,
361+ status = log_status ,
345362 comment = "Observation changed manually" ,
346363 vex_justification = actual_vex_justification ,
347364 vex_remediations = actual_vex_remediations ,
348365 assessment_status = Assessment_Status .ASSESSMENT_STATUS_AUTO_APPROVED ,
349- risk_acceptance_expiry_date = observation . risk_acceptance_expiry_date ,
366+ risk_acceptance_expiry_date = log_risk_acceptance_expiry_date ,
350367 )
351368
352369 check_security_gate (observation .product )
@@ -577,10 +594,7 @@ class Meta:
577594
578595
579596class ObservationLogListSerializer (ModelSerializer ):
580- observation_title = SerializerMethodField ()
581- product_name = SerializerMethodField ()
582- branch_name = SerializerMethodField ()
583- origin_component_name_version = SerializerMethodField ()
597+ observation_data = ObservationListSerializer (source = "observation" )
584598 user_full_name = SerializerMethodField ()
585599 approval_user_full_name = SerializerMethodField ()
586600
@@ -590,9 +604,6 @@ def get_user_full_name(self, obj: Observation_Log) -> Optional[str]:
590604
591605 return None
592606
593- def get_observation_title (self , obj : Observation_Log ) -> str :
594- return obj .observation .title
595-
596607 def get_approval_user_full_name (self , obj : Observation_Log ) -> Optional [str ]:
597608 if obj .approval_user :
598609 return obj .approval_user .full_name
@@ -642,3 +653,7 @@ class PotentialDuplicateSerializer(ModelSerializer):
642653 class Meta :
643654 model = Potential_Duplicate
644655 fields = "__all__"
656+
657+
658+ class CountSerializer (Serializer ):
659+ count = IntegerField ()
0 commit comments