]> git.ipfire.org Git - pbs.git/commitdiff
repositories: Update immediately after builds have been added/removed
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 9 Mar 2023 23:01:12 +0000 (23:01 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 9 Mar 2023 23:01:12 +0000 (23:01 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/builds.py
src/buildservice/repository.py
src/hub/builds.py
tests/test.py

index 0a0a4fa0fc8d9d54664d14832f8dc229efa2d1b6..baaef8a4d95292c2fea17af5f2d711aab16d8799 100644 (file)
@@ -138,7 +138,7 @@ class Builds(base.Object):
 
                return list(builds)
 
-       def create(self, repo, package, owner=None, group=None):
+       async def create(self, repo, package, owner=None, group=None):
                """
                        Creates a new build based on the given distribution and package
                """
@@ -170,9 +170,6 @@ class Builds(base.Object):
                if group:
                        build.group = group
 
-               # Add the build into its repository
-               repo.add_build(build, user=owner)
-
                # Create all jobs
                build._create_jobs()
 
@@ -182,6 +179,9 @@ class Builds(base.Object):
                # Add watchers
                build._add_watchers()
 
+               # Add the build into its repository
+               await repo.add_build(build, user=owner)
+
                return build
 
        # Groups
index 4c29418fbb520af6682a12457c332eb4ff47d938..e0b4b51b624e81d55fc4ac523c749684144e64c9 100644 (file)
@@ -433,7 +433,7 @@ class Repository(base.DataObject):
 
        # Add/Remove Builds
 
-       def add_build(self, build, user=None):
+       async def add_build(self, build, user=None, update=True):
                """
                        Adds a build to this repository
                """
@@ -455,7 +455,11 @@ class Repository(base.DataObject):
                # Update bug status.
                #build._update_bugs_helper(self)
 
-       def remove_build(self, build, user=None):
+               # Update the repository
+               if update:
+                       await self.update()
+
+       async def remove_build(self, build, user=None, update=True):
                """
                        Removes a build from this repository
                """
@@ -478,6 +482,10 @@ class Repository(base.DataObject):
                except IndexError:
                        pass
 
+               # Update the repository
+               if update:
+                       await self.update()
+
        # Sources
 
        @lazy_property
index bad0d4bf6a40adceed43332e475c00108d7cae6c..666e6c01843d4c83a03f2e6a06ddbfb2090cef8f 100644 (file)
@@ -55,7 +55,7 @@ class CreateHandler(BaseHandler):
                                raise tornado.web.HTTPError(404, "Could not find repository")
 
                        # Create a new build
-                       build = self.backend.builds.create(repo, package, owner=self.user)
+                       build = await self.backend.builds.create(repo, package, owner=self.user)
 
                        # Delete the upload
                        await upload.delete()
index da971b1b70655d28931c913084d84b455bf7dd4b..6dd65a74630cb60057bdb114a294d0a3bfc83613 100644 (file)
@@ -167,7 +167,7 @@ class TestCase(unittest.IsolatedAsyncioTestCase):
                package = await self._create_package(path)
 
                # Create the build
-               build = self.backend.builds.create(repo, package, owner=owner)
+               build = await self.backend.builds.create(repo, package, owner=owner)
 
                # Check if we received the correct type
                self.assertIsInstance(build, builds.Build)