X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dakweb%2Fqueries%2Fsuite.py;h=245b879c8ea2c677f89f90d3e2b5922644f8aac1;hb=59d33fca226689f0b8972463bf25f148bf3d7a71;hp=1e7f2f92897769b74a7834983590112a5be70b9c;hpb=9161d6b2afaa90adaa1dbc4e5a9b34f32b31317b;p=dak.git diff --git a/dakweb/queries/suite.py b/dakweb/queries/suite.py index 1e7f2f92..245b879c 100644 --- a/dakweb/queries/suite.py +++ b/dakweb/queries/suite.py @@ -13,7 +13,11 @@ def suites(): returns: list of dictionaries - Give information about all known suites + Give information about all known suites. + + name maps to Suite: in the release file + codename maps to Codename: in the release file. + dakname is an internal name and should not be relied upon. """ s = DBConn().session() @@ -21,13 +25,69 @@ def suites(): q = q.order_by(Suite.suite_name) ret = [] for p in q: - ret.append({'name': p.suite_name, + ret.append({'name': p.release_suite_output, 'codename': p.codename, + 'dakname': p.suite_name, 'archive': p.archive.archive_name, 'architectures': [x.arch_string for x in p.architectures], 'components': [x.component_name for x in p.components]}) + s.close() + return json.dumps(ret) QueryRegister().register_path('/suites', suites) +@bottle.route('/suite/') +def suite(suite=None): + """ + suite(suite) + + returns: dictionary + + Gives information about a single suite. Note that this routine will look + up a suite first by the main suite_name, but then also by codename if no + suite is initially found. It can therefore be used to canonicalise suite + names + """ + + if suite is None: + return bottle.HTTPError(503, 'Suite not specified.') + + # TODO: We should probably stick this logic into daklib/dbconn.py + so = None + + s = DBConn().session() + q = s.query(Suite) + q = q.filter(Suite.suite_name == suite) + + if q.count() > 1: + # This would mean dak is misconfigured + s.close() + return bottle.HTTPError(503, 'Multiple suites found: configuration error') + elif q.count() == 1: + so = q[0] + else: + # Look it up by suite_name + q = s.query(Suite).filter(Suite.codename == suite) + if q.count() > 1: + # This would mean dak is misconfigured + s.close() + return bottle.HTTPError(503, 'Multiple suites found: configuration error') + elif q.count() == 1: + so = q[0] + + if so is not None: + so = {'name': so.release_suite_output, + 'codename': so.codename, + 'dakname': so.suite_name, + 'archive': so.archive.archive_name, + 'architectures': [x.arch_string for x in so.architectures], + 'components': [x.component_name for x in so.components]} + + s.close() + + return json.dumps(so) + +QueryRegister().register_path('/suite', suite) +