Skip to content

Commit 2c5f78d

Browse files
committed
Add a vulnerabilities m2m field on the Package model
Set the new 2m field on the PackageSerializer Signed-off-by: Thomas Druez <tdruez@nexb.com>
1 parent 2d6d5eb commit 2c5f78d

4 files changed

Lines changed: 61 additions & 68 deletions

File tree

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# -*- coding: utf-8 -*-
2+
# Generated by Django 1.11.5 on 2017-09-22 19:18
3+
from __future__ import unicode_literals
4+
5+
from django.db import migrations, models
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
dependencies = [
11+
('vulnerabilities', '0001_initial'),
12+
]
13+
14+
operations = [
15+
migrations.AddField(
16+
model_name='package',
17+
name='vulnerabilities',
18+
field=models.ManyToManyField(through='vulnerabilities.ImpactedPackage', to='vulnerabilities.Vulnerability'),
19+
),
20+
]

vulnerabilities/models.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ class Package(models.Model):
8282
platform = models.CharField(max_length=50, help_text='Package platform eg:maven', blank=True)
8383
name = models.CharField(max_length=50, help_text='Package name', blank=True)
8484
version = models.CharField(max_length=50, help_text='Package version', blank=True)
85+
vulnerabilities = models.ManyToManyField(to='Vulnerability', through='ImpactedPackage')
8586

8687
def __str__(self):
8788
return self.name

vulnerabilities/serializers.py

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323

2424
from rest_framework import serializers
2525

26-
from vulnerabilities.models import ImpactedPackage
2726
from vulnerabilities.models import Package
2827
from vulnerabilities.models import PackageReference
2928
from vulnerabilities.models import Vulnerability
@@ -50,16 +49,8 @@ class Meta:
5049
fields = ('summary', 'references')
5150

5251

53-
class ImpactedPackageSerializer(serializers.ModelSerializer):
54-
vulnerability = VulnerabilitySerializer()
55-
56-
class Meta:
57-
model = ImpactedPackage
58-
fields = ('vulnerability',)
59-
60-
6152
class PackageSerializer(serializers.ModelSerializer):
62-
vulnerabilities = ImpactedPackageSerializer(source='impactedpackage_set', many=True)
53+
vulnerabilities = VulnerabilitySerializer(many=True)
6354

6455
class Meta:
6556
model = Package

vulnerabilities/tests/test_api.py

Lines changed: 39 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -50,30 +50,26 @@ def test_debian_response(self):
5050
expected = [{
5151
"name": "mimetex",
5252
"version": "1.50-1.1",
53-
"platform":"",
53+
"platform": "",
5454
"vulnerabilities": [{
55-
"vulnerability": {
56-
"summary": "Multiple stack-based buffer overflows in mimetex.cgi in mimeTeX",
57-
"references": [{
58-
"reference_id": "CVE-2009-2458",
59-
"source": "",
60-
"url": ""
61-
}]
62-
}
55+
"summary": "Multiple stack-based buffer overflows in mimetex.cgi in mimeTeX",
56+
"references": [{
57+
"reference_id": "CVE-2009-2458",
58+
"source": "",
59+
"url": "",
60+
}]
6361
}]
6462
}, {
6563
"name": "mimetex",
6664
"version": "1.50-1.1",
67-
"platform":"",
65+
"platform": "",
6866
"vulnerabilities": [{
69-
"vulnerability": {
70-
"summary": "Multiple unspecified vulnerabilities in mimeTeX.",
71-
"references": [{
72-
"reference_id": "CVE-2009-2459",
73-
"source": "",
74-
"url": ""
75-
}]
76-
}
67+
"summary": "Multiple unspecified vulnerabilities in mimeTeX.",
68+
"references": [{
69+
"reference_id": "CVE-2009-2459",
70+
"source": "",
71+
"url": "",
72+
}]
7773
}]
7874
}]
7975

@@ -90,16 +86,14 @@ def test_ubuntu_response(self):
9086
expected = [{
9187
"name": "automake",
9288
"version": "",
93-
"platform":"",
89+
"platform": "",
9490
"vulnerabilities": [{
95-
"vulnerability": {
96-
"summary": "",
97-
"references": [{
98-
"reference_id": "CVE-2012-3386",
99-
"source": "",
100-
"url": ""
101-
}]
102-
}
91+
"summary": "",
92+
"references": [{
93+
"reference_id": "CVE-2012-3386",
94+
"source": "",
95+
"url": "",
96+
}]
10397
}]
10498
}]
10599

@@ -127,41 +121,28 @@ def test_serializers(self):
127121
{
128122
"name": "mimetex",
129123
"version": "1.50-1.1",
130-
"platform":"",
131-
"vulnerabilities": [
132-
{
133-
"vulnerability": {
134-
"summary": "Multiple stack-based buffer overflows in mimetex.cgi in "
135-
"mimeTeX",
136-
"references": [
137-
{
138-
"reference_id": "CVE-2009-2458",
139-
"source": "",
140-
"url": ""
141-
}
142-
]
143-
}
144-
}
145-
]
124+
"platform": "",
125+
"vulnerabilities": [{
126+
"summary": "Multiple stack-based buffer overflows in mimetex.cgi in mimeTeX",
127+
"references": [{
128+
"reference_id": "CVE-2009-2458",
129+
"source": "",
130+
"url": "",
131+
}]
132+
}]
146133
},
147134
{
148135
"name": "mimetex",
149136
"version": "1.50-1.1",
150-
"platform":"",
151-
"vulnerabilities": [
152-
{
153-
"vulnerability": {
154-
"summary": "Multiple unspecified vulnerabilities in mimeTeX.",
155-
"references": [
156-
{
157-
"reference_id": "CVE-2009-2459",
158-
"source": "",
159-
"url": ""
160-
}
161-
]
162-
}
163-
}
164-
]
137+
"platform": "",
138+
"vulnerabilities": [{
139+
"summary": "Multiple unspecified vulnerabilities in mimeTeX.",
140+
"references": [{
141+
"reference_id": "CVE-2009-2459",
142+
"source": "",
143+
"url": "",
144+
}]
145+
}]
165146
}
166147
]
167148

0 commit comments

Comments
 (0)