File tree Expand file tree Collapse file tree 3 files changed +23
-5
lines changed Expand file tree Collapse file tree 3 files changed +23
-5
lines changed Original file line number Diff line number Diff line change @@ -275,17 +275,27 @@ class Weakness(models.Model):
275275 vulnerabilities = models .ManyToManyField (Vulnerability , related_name = "weaknesses" )
276276 db = Database ()
277277
278+ @property
279+ def weakness (self ):
280+ """
281+ Return a queryset of Weakness for this vulnerability.
282+ """
283+ try :
284+ weakness = self .db .get (self .cwe_id )
285+ return weakness
286+ except Exception as e :
287+ logger .warning (f"Could not find CWE { self .cwe_id } : { e } " )
288+ return None
289+
278290 @property
279291 def name (self ):
280292 """Return the weakness's name."""
281- weakness = self .db .get (self .cwe_id )
282- return weakness .name
293+ return self .weakness .name if self .weakness else ""
283294
284295 @property
285296 def description (self ):
286297 """Return the weakness's description."""
287- weakness = self .db .get (self .cwe_id )
288- return weakness .description
298+ return self .weakness .description if self .weakness else ""
289299
290300
291301class VulnerabilityReferenceQuerySet (BaseQuerySet ):
Original file line number Diff line number Diff line change @@ -88,3 +88,9 @@ def test_vulnerability_package(self):
8888
8989 assert v1 .vulnerable_packages .all ()[0 ] == p1
9090 assert v1 .patched_packages .all ()[0 ] == p2
91+
92+ def test_cwe_not_present_in_weaknesses_db (self ):
93+ w1 = models .Weakness .objects .create (name = "189" )
94+ assert w1 .weakness is None
95+ assert w1 .name is ""
96+ assert w1 .description is ""
Original file line number Diff line number Diff line change @@ -116,6 +116,8 @@ def get_queryset(self):
116116
117117 def get_context_data (self , ** kwargs ):
118118 context = super ().get_context_data (** kwargs )
119+ weaknesses = self .object .weaknesses .all ()
120+ weaknesses_present_in_db = [weakness for weakness in weaknesses if weakness .weakness ]
119121 context .update (
120122 {
121123 "vulnerability" : self .object ,
@@ -125,7 +127,7 @@ def get_context_data(self, **kwargs):
125127 "aliases" : self .object .aliases .all (),
126128 "affected_packages" : self .object .affected_packages .all (),
127129 "fixed_by_packages" : self .object .fixed_by_packages .all (),
128- "weaknesses" : self . object . weaknesses . all () ,
130+ "weaknesses" : weaknesses_present_in_db ,
129131 }
130132 )
131133 return context
You can’t perform that action at this time.
0 commit comments