From 3219cde61fd24ff13986adbbae839fa3c74e26ca Mon Sep 17 00:00:00 2001 From: Fabricio Aguiar Date: Wed, 18 Dec 2019 16:28:05 -0300 Subject: [PATCH] added/removed content according to a given Version https://pulp.plan.io/issues/5706 closes #5706 --- CHANGES/5706.feature | 1 + pulpcore/app/models/repository.py | 22 ++++++++++++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) create mode 100644 CHANGES/5706.feature diff --git a/CHANGES/5706.feature b/CHANGES/5706.feature new file mode 100644 index 00000000000..e57de25f97d --- /dev/null +++ b/CHANGES/5706.feature @@ -0,0 +1 @@ +List added/removed content according to a given RepositoryVersion diff --git a/pulpcore/app/models/repository.py b/pulpcore/app/models/repository.py index 0b373996680..6a5b98deafd 100644 --- a/pulpcore/app/models/repository.py +++ b/pulpcore/app/models/repository.py @@ -449,19 +449,33 @@ def artifacts(self): """ Artifact.objects.filter(content__pk__in=self.content) - def added(self): + def added(self, base_version=None): """ + Args: + base_version (pulpcore.app.models.RepositoryVersion): an optional repository version + Returns: QuerySet: The Content objects that were added by this version. """ - return Content.objects.filter(version_memberships__version_added=self) + if not base_version: + return Content.objects.filter(version_memberships__version_added=self) + versions = RepositoryVersion.objects.filter( + number__in=range(base_version.number + 1, self.number + 1), repository=self.repository) + return Content.objects.filter(version_memberships__version_added__in=versions) - def removed(self): + def removed(self, base_version=None): """ + Args: + base_version (pulpcore.app.models.RepositoryVersion): an optional repository version + Returns: QuerySet: The Content objects that were removed by this version. """ - return Content.objects.filter(version_memberships__version_removed=self) + if not base_version: + return Content.objects.filter(version_memberships__version_removed=self) + versions = RepositoryVersion.objects.filter( + number__in=range(base_version.number + 1, self.number + 1), repository=self.repository) + return Content.objects.filter(version_memberships__version_removed__in=versions) def contains(self, content): """