changeset 31:1ea1a3c3c790

Add method to change a Group ID
author Benoît Allard <benoit.allard@greenbone.net>
date Mon, 27 Oct 2014 12:29:56 +0100
parents b15022ae484a
children 9ca314026f59
files farolluz/document.py tests/testGroupIdRename.py
diffstat 2 files changed, 39 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/farolluz/document.py	Mon Oct 27 12:29:37 2014 +0100
+++ b/farolluz/document.py	Mon Oct 27 12:29:56 2014 +0100
@@ -306,13 +306,22 @@
                 item._productids.remove(old)
                 item._productids.append(new)
 
+    def mentionsGroupId(self, groupid):
+        for vulnerability in self._vulnerabilities:
+            for item in vulnerability.mentionsGroupId(groupid):
+                yield item
+
     def isGroupOrphan(self, groupid):
         """ Returns if a group can be safely deleted """
-        for vulnerability in self._vulnerabilities:
-            if vulnerability.isMentioningGroupId(groupid):
-                return False
+        for _ in self.mentionsGroupId(groupid):
+            return False
         return True
 
+    def changeGroupID(self, old, new):
+        for item in self.mentionsGroupId(old):
+            item._groupids.remove(old)
+            item._groupids.append(new)
+
     def isProductTreeOrphan(self):
         """ Difference with the previous method is that we don;t care about
         inter-producttree references """
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/testGroupIdRename.py	Mon Oct 27 12:29:56 2014 +0100
@@ -0,0 +1,27 @@
+from datetime import datetime
+
+from tests.utils import TestCase
+from farolluz.cvrf import CVRFFullProductName, CVRFGroup, CVRFVulnerability, CVRFThreat
+
+class TestGroupIdRename(TestCase):
+
+    def testChangeGroupId(self):
+        ptree = self.doc.createProductTree()
+        prod1 = CVRFFullProductName('1', 'a', ptree)
+        ptree.addProduct(prod1)
+        prod2 = CVRFFullProductName('2', 'b', ptree)
+        ptree.addProduct(prod2)
+        grp = CVRFGroup('GRP-1')
+        grp.addProductID('1')
+        grp.addProductID('2')
+        ptree.addGroup(grp)
+        vuln = CVRFVulnerability(1)
+        th = CVRFThreat('Impact', 'bad !')
+        th.addGroupID('GRP-1')
+        vuln.addThreat(th)
+        self.doc.addVulnerability(vuln)
+        self._validate()
+        grp._productid = 'GRP-2'
+        self.doc.changeProductID('GRP-1', 'GRP-2')
+        self._validate()
+
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)