diff --git a/vulnerabilities/models.py b/vulnerabilities/models.py index 7bfc1ba11..fecde5c0b 100644 --- a/vulnerabilities/models.py +++ b/vulnerabilities/models.py @@ -382,20 +382,14 @@ def get_related_purls(self): return [p.package_url for p in self.packages.distinct().all()] def aggregate_fixed_and_affected_packages(self): - from vulnerabilities.utils import get_purl_version_class + from vulnerabilities.views import get_purl_version_class sorted_fixed_by_packages = self.fixed_by_packages.filter(is_ghost=False).order_by( "type", "namespace", "name", "qualifiers", "subpath" ) - if sorted_fixed_by_packages: - sorted_fixed_by_packages.first().calculate_version_rank - sorted_affected_packages = self.affected_packages.all() - if sorted_affected_packages: - sorted_affected_packages.first().calculate_version_rank - grouped_fixed_by_packages = { key: list(group) for key, group in groupby( @@ -503,6 +497,32 @@ def get_cwes(self): Database.get_cwes = get_cwes +def get_cwes(self): + """Yield CWE Weakness objects""" + for cwe_category in self.cwe_files: + cwe_category.seek(0) + reader = csv.DictReader(cwe_category) + for row in reader: + yield DBWeakness(*list(row.values())[0:-1]) + tree = ET.parse(xml_database_path) + root = tree.getroot() + for tag_num in [1, 2]: # Categories , Views + tag = root[tag_num] + for child in tag: + yield DBWeakness( + *[ + child.attrib["ID"], + child.attrib.get("Name"), + None, + child.attrib.get("Status"), + child[0].text, + ] + ) + + +Database.get_cwes = get_cwes + + class Weakness(models.Model): """ A Common Weakness Enumeration model diff --git a/vulnerabilities/templates/api_user_creation_form.html b/vulnerabilities/templates/api_user_creation_form.html index c7b2291f0..7714b8601 100644 --- a/vulnerabilities/templates/api_user_creation_form.html +++ b/vulnerabilities/templates/api_user_creation_form.html @@ -35,7 +35,7 @@