@@ -43,20 +43,27 @@ def insert_advisory(advisory: AdvisoryData, pipeline_id: str, logger: Callable =
4343 aliases = get_or_create_aliases (aliases = advisory .aliases )
4444 content_id = compute_content_id (advisory_data = advisory )
4545 try :
46+ default_data = {
47+ "summary" : advisory .summary ,
48+ "affected_packages" : [pkg .to_dict () for pkg in advisory .affected_packages ],
49+ "references" : [ref .to_dict () for ref in advisory .references ],
50+ "date_published" : advisory .date_published ,
51+ "weaknesses" : advisory .weaknesses ,
52+ "created_by" : pipeline_id ,
53+ "date_collected" : datetime .now (timezone .utc ),
54+ }
55+
4656 advisory_obj , _ = Advisory .objects .get_or_create (
4757 unique_content_id = content_id ,
4858 url = advisory .url ,
49- defaults = {
50- "summary" : advisory .summary ,
51- "affected_packages" : [pkg .to_dict () for pkg in advisory .affected_packages ],
52- "references" : [ref .to_dict () for ref in advisory .references ],
53- "date_published" : advisory .date_published ,
54- "weaknesses" : advisory .weaknesses ,
55- "created_by" : pipeline_id ,
56- "date_collected" : datetime .now (timezone .utc ),
57- },
59+ defaults = default_data ,
5860 )
5961 advisory_obj .aliases .add (* aliases )
62+ except Advisory .MultipleObjectsReturned :
63+ logger .error (
64+ f"Multiple Advisories returned: unique_content_id: { content_id } , url: { advisory .url } , advisory: { advisory !r} "
65+ )
66+ raise
6067 except Exception as e :
6168 if logger :
6269 logger (
@@ -137,19 +144,18 @@ def import_advisory(
137144 },
138145 )
139146 vulnerability .severities .add (vulnerability_severity )
147+ if not created and logger :
148+ logger (
149+ f"Severity updated for reference { ref .url !r} to value: { severity .value !r} "
150+ f"and scoring_elements: { severity .scoring_elements !r} " ,
151+ level = logging .DEBUG ,
152+ )
140153 except :
141154 if logger :
142155 logger (
143156 f"Failed to create VulnerabilitySeverity for: { severity } with error:\n { traceback_format_exc ()} " ,
144157 level = logging .ERROR ,
145158 )
146- if not created :
147- if logger :
148- logger (
149- f"Severity updated for reference { ref .url !r} to value: { severity .value !r} "
150- f"and scoring_elements: { severity .scoring_elements !r} " ,
151- level = logging .DEBUG ,
152- )
153159
154160 for affected_purl in affected_purls or []:
155161 vulnerable_package , _ = Package .objects .get_or_create_from_purl (purl = affected_purl )
0 commit comments