35 lines
1.1 KiB
Python
35 lines
1.1 KiB
Python
from django.db import models
|
|
|
|
class Application(models.Model):
|
|
name = models.CharField(max_length=255)
|
|
version = models.CharField(max_length=100)
|
|
vendor = models.CharField(max_length=255)
|
|
|
|
def __str__(self):
|
|
return f"{self.name} {self.version}"
|
|
|
|
class Vulnerability(models.Model):
|
|
SEVERITY_CHOICES = [
|
|
('Critical', 'Critical'),
|
|
('High', 'High'),
|
|
('Medium', 'Medium'),
|
|
('Low', 'Low'),
|
|
]
|
|
STATUS_CHOICES = [
|
|
('New', 'New'),
|
|
('Acknowledged', 'Acknowledged'),
|
|
('In-Progress', 'In-Progress'),
|
|
('Resolved', 'Resolved'),
|
|
]
|
|
|
|
cve_id = models.CharField(max_length=50, unique=True)
|
|
description = models.TextField()
|
|
severity = models.CharField(max_length=10, choices=SEVERITY_CHOICES)
|
|
application = models.ForeignKey(Application, on_delete=models.CASCADE, related_name='vulnerabilities')
|
|
status = models.CharField(max_length=20, choices=STATUS_CHOICES, default='New')
|
|
discovered_at = models.DateTimeField(auto_now_add=True)
|
|
last_updated = models.DateTimeField(auto_now=True)
|
|
|
|
def __str__(self):
|
|
return self.cve_id
|