X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dakweb%2Fqueries%2Fsource.py;fp=dakweb%2Fqueries%2Fsource.py;h=d65283f60d1480e624606573a291e0af1be4c6e8;hb=47cd096281f1cc36dfe9818ef1fbae8d02f6ada6;hp=0000000000000000000000000000000000000000;hpb=8ddfb3391d47d9b73c90948b521b6b0a76add4b7;p=dak.git diff --git a/dakweb/queries/source.py b/dakweb/queries/source.py new file mode 100644 index 00000000..d65283f6 --- /dev/null +++ b/dakweb/queries/source.py @@ -0,0 +1,37 @@ +#!/usr/bin/python + +from sqlalchemy import or_ +import bottle +import json + +from daklib.dbconn import DBConn, DBSource, Suite, DSCFile, PoolFile +from dakweb.webregister import QueryRegister + +@bottle.route('/dsc_in_suite//') +def dsc_in_suite(suite=None, source=None): + """ + Find all dsc files for a given source package name in a given suite. + + suite and source must be supplied + """ + if suite is None: + return bottle.HTTPError(503, 'Suite not specified.') + if source is None: + return bottle.HTTPError(503, 'Source package not specified.') + + s = DBConn().session() + q = s.query(DSCFile).join(PoolFile) + q = q.join(DBSource).join(Suite, DBSource.suites) + q = q.filter(or_(Suite.suite_name == suite, Suite.codename == suite)) + q = q.filter(DBSource.source == source) + q = q.filter(PoolFile.filename.endswith('.dsc')) + ret = [] + for p in q: + ret.append({'version': p.source.version, + 'component': p.poolfile.component.component_name, + 'filename': p.poolfile.filename}) + + return json.dumps(ret) + +QueryRegister().register_path('/dsc_in_suite', dsc_in_suite) +