Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@sugarlabs.org>2013-07-30 16:57:27 (GMT)
committer Aleksey Lim <alsroot@sugarlabs.org>2013-07-31 03:29:58 (GMT)
commit413daa0ad6c34186291a2d663c60b645cfbaddaf (patch)
tree8d2fe138466c56d0971136614acd5236332285ad
parent03c82f2a57e72e3a65b9a38e70ecd83b85595ada (diff)
Use the same selection logic for deplist API command as for clone
-rw-r--r--sugar_network/node/routes.py18
1 files changed, 6 insertions, 12 deletions
diff --git a/sugar_network/node/routes.py b/sugar_network/node/routes.py
index 34fa387..f2db4ca 100644
--- a/sugar_network/node/routes.py
+++ b/sugar_network/node/routes.py
@@ -172,22 +172,21 @@ class NodeRoutes(db.Routes, model.Routes):
@route('GET', ['context', None], cmd='clone',
arguments={'requires': list})
def clone(self, request, response):
- impl = self._clone(request)
+ impl = self._solve(request)
request.path = ['implementation', impl.guid, 'data']
return self.get_prop(request)
@route('HEAD', ['context', None], cmd='clone',
arguments={'requires': list})
def meta_clone(self, request, response):
- impl = self._clone(request)
+ impl = self._solve(request)
props = impl.properties(['guid', 'license', 'version', 'stability'])
response.meta.update(props)
response.meta.update(impl.meta('data')['spec']['*-*'])
@route('GET', ['context', None], cmd='deplist',
mime_type='application/json', arguments={'requires': list})
- def deplist(self, request, repo, layer, requires,
- stability='stable'):
+ def deplist(self, request, repo):
"""List of native packages context is dependening on.
Command return only GNU/Linux package names and ignores
@@ -202,14 +201,9 @@ class NodeRoutes(db.Routes, model.Routes):
"""
enforce(repo, 'Argument %r should be set', 'repo')
- impls, total = self.volume['implementation'].find(context=request.guid,
- layer=layer, stability=stability, requires=requires,
- order_by='-version', limit=1)
- enforce(total, http.NotFound, 'No implementations')
-
- result = []
+ spec = self._solve(request).meta('data')['spec']['*-*']
common_deps = self.volume['context'].get(request.guid)['dependencies']
- spec = next(impls).meta('data')['spec']['*-*']
+ result = []
for package in set(spec.get('requires') or []) | set(common_deps):
if package == 'sugar':
@@ -380,7 +374,7 @@ class NodeRoutes(db.Routes, model.Routes):
coroutine.sleep(stats_node.stats_node_step.value)
self._stats.commit()
- def _clone(self, request):
+ def _solve(self, request):
requires = {}
if 'requires' in request:
for i in request['requires']: