MCPcopy Create free account
hub / github.com/aboutcode-org/vulnerablecode / insert_advisory

Function insert_advisory

vulnerabilities/pipes/advisory.py:253–288  ·  view source on GitHub ↗
(advisory: AdvisoryData, pipeline_id: str, logger: Callable = None)

Source from the content-addressed store, hash-verified

251
252
253def insert_advisory(advisory: AdvisoryData, pipeline_id: str, logger: Callable = None):
254 from vulnerabilities.utils import compute_content_id
255
256 advisory_obj = None
257 aliases = get_or_create_aliases(aliases=advisory.aliases)
258 content_id = compute_content_id(advisory_data=advisory)
259 try:
260 default_data = {
261 "summary": advisory.summary,
262 "affected_packages": [pkg.to_dict() for pkg in advisory.affected_packages],
263 "references": [ref.to_dict() for ref in advisory.references],
264 "date_published": advisory.date_published,
265 "weaknesses": advisory.weaknesses,
266 "created_by": pipeline_id,
267 "date_collected": datetime.now(timezone.utc),
268 }
269
270 advisory_obj, _ = Advisory.objects.get_or_create(
271 unique_content_id=content_id,
272 url=advisory.url,
273 defaults=default_data,
274 )
275 advisory_obj.aliases.add(*aliases)
276 except Advisory.MultipleObjectsReturned:
277 logger.error(
278 f"Multiple Advisories returned: unique_content_id: {content_id}, url: {advisory.url}, advisory: {advisory!r}"
279 )
280 raise
281 except Exception as e:
282 if logger:
283 logger(
284 f"Error while processing {advisory!r} with aliases {advisory.aliases!r}: {e!r} \n {traceback_format_exc()}",
285 level=logging.ERROR,
286 )
287
288 return advisory_obj
289
290
291@transaction.atomic

Callers 3

get_advisory1Function · 0.90
get_advisory1Method · 0.90

Calls 4

compute_content_idFunction · 0.90
get_or_create_aliasesFunction · 0.85
addMethod · 0.80
to_dictMethod · 0.45

Tested by 2

get_advisory1Function · 0.72
get_advisory1Method · 0.72