]> git.ipfire.org Git - pbs.git/commitdiff
builds: Delete all test builds when a build is being deleted
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 3 May 2023 10:47:41 +0000 (10:47 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 3 May 2023 10:47:41 +0000 (10:47 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/builds.py

index 86fb62b410ada62d43082d1a0e465b83975be050..2de05361d34eb2e30ee4d2c23312bc10020ae2e9 100644 (file)
@@ -300,6 +300,10 @@ class Build(base.DataObject):
                        Deletes this build including all jobs,
                        packages and the source package.
                """
+               # Delete all test builds
+               if self.test_builds:
+                       await self.test_builds.delete(user=user)
+
                # Delete all jobs
                await asyncio.gather(
                        *(job.delete(user=user) for job in self._jobs),
@@ -1054,6 +1058,23 @@ class Group(base.DataObject):
 
                return list(builds)
 
+       # Delete
+
+       async def delete(self, user=None):
+               # Delete all builds in this group
+               await asyncio.gather(
+                       *(build.delete(user=user) for build in self.builds),
+               )
+
+               # Mark as deleted
+               self._set_attribute_now("deleted_at")
+               if user:
+                       self._set_attribute("deleted_by", user)
+
+       @property
+       def deleted_at(self):
+               return self.data.deleted_at
+
 
 class Comments(base.Object):
        def _get_comments(self, query, *args):