class Vulnerability(models.Model):
cve_id = models.CharField(max_length=50, help_text='CVE ID', unique=True, null=True)
summary = models.TextField(help_text='Summary of the vulnerability', blank=True)
cvss = models.FloatField(max_length=100, help_text='CVSS Score', null=True)class Vulnerability(models.Model):
vuln_id = models.CharField(max_length=50, help_text='CVE ID', unique=True, null=True)
reference_ids = pgfields.ArrayField(
models.CharField(max_length=50,help_text='Reference ID, eg:DSA-4465-1'),default=list)We would delete `ResolvedPackage` and maybe rename ImpactedPackage to something else.
class ImpactedPackage(models.Model):
vulnerability = models.ForeignKey(Vulnerability, on_delete=models.CASCADE)
package = models.ForeignKey(Package, on_delete=models.CASCADE)
class Meta:
unique_together = ('vulnerability', 'package')class ImpactedPackage(models.Model):
vulnerability = models.ForeignKey(Vulnerability, on_delete=models.CASCADE)
package = models.ForeignKey(Package, on_delete=models.CASCADE)
version_range = models.CharField(max_length=30,default='=')
is_vulnerable = models.BooleanField()
class Meta:
unique_together = ('vulnerability', 'package')class VulnerabilityReference(models.Model):
vulnerability = models.ForeignKey(
Vulnerability, on_delete=models.CASCADE)
source = models.CharField(
max_length=50, help_text='Source(s) name eg:NVD', blank=True)
reference_id = models.CharField(
max_length=50, help_text='Reference ID, eg:DSA-4465-1', blank=True)
url = models.URLField(
max_length=1024, help_text='URL of Vulnerability data', blank=True)
class Meta:
unique_together = ('vulnerability', 'source', 'reference_id', 'url')
class VulnerabilityReference(models.Model):
vulnerability = models.ForeignKey(
Vulnerability, on_delete=models.CASCADE,required=True)
source = models.ForeignKey(
Importer, on_delete=models.CASCADE, required=True)
urls = pgfields.ArrayField(models.URLField(
max_length=1024, help_text='URL of Vulnerability data'),default=list)
summary = models.TextField(help_text='Summary of the vulnerability', blank=True)
cvss_v1 = models.FloatField(max_length=100, help_text='CVSS_v1 Score', null=True)
cvss_v2 = models.FloatField(max_length=100, help_text='CVSS_v2 Score', null=True)
cvss_v3 = models.FloatField(max_length=100, help_text='CVSS_v3 Score', null=True)
cvss_v3_1 = models.FloatField(max_length=100, help_text='CVSS_v3.1 Score', null=True)
severity_text = models.CharField(max_length=10,help_text='Values like MEDIUM, LOW, HIGH',blank=True)
class Meta:
unique_together = ('vulnerability', 'source')
Could you put that in a ticket or in a pr so we can comment there?