From 009adcb8df8dabf5b459a98f35f3d1a829449a36 Mon Sep 17 00:00:00 2001 From: Paul Eggleton Date: Fri, 6 Apr 2018 17:15:52 +1200 Subject: models: implement layerindex method to get recursive dependencies It would be useful in some scenarios to get the complete list of recursive dependencies for a layer, so add a function to do that. Signed-off-by: Paul Eggleton --- layerindex/models.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/layerindex/models.py b/layerindex/models.py index ac2967bb2c..af6db374c6 100644 --- a/layerindex/models.py +++ b/layerindex/models.py @@ -280,6 +280,24 @@ class LayerBranch(models.Model): def get_recommends(self): return self.dependencies_set.filter(required=False) + def get_recursive_dependencies(self, required=True, include_self=False): + deplist = [] + def recurse_deps(layerbranch): + deplist.append(layerbranch) + if required: + dep_set = layerbranch.dependencies_set.filter(required=True) + else: + dep_set = layerbranch.dependencies_set.all() + for dep in dep_set: + deplayerbranch = dep.dependency.get_layerbranch(layerbranch.branch.name) + if deplayerbranch and deplayerbranch not in deplist: + recurse_deps(deplayerbranch) + recurse_deps(self) + if include_self: + return deplist + else: + return deplist[1:] + class LayerMaintainer(models.Model): MAINTAINER_STATUS_CHOICES = ( ('A', 'Active'), -- cgit 1.2.3-korg