]> git.donarmstrong.com Git - dak.git/blob - dakweb/queries/source.py
Initial pass at dak web server
[dak.git] / dakweb / queries / source.py
1 #!/usr/bin/python
2
3 from sqlalchemy import or_
4 import bottle
5 import json
6
7 from daklib.dbconn import DBConn, DBSource, Suite, DSCFile, PoolFile
8 from dakweb.webregister import QueryRegister
9
10 @bottle.route('/dsc_in_suite/<suite>/<source>')
11 def dsc_in_suite(suite=None, source=None):
12     """
13     Find all dsc files for a given source package name in a given suite.
14
15     suite and source must be supplied
16     """
17     if suite is None:
18         return bottle.HTTPError(503, 'Suite not specified.')
19     if source is None:
20         return bottle.HTTPError(503, 'Source package not specified.')
21
22     s = DBConn().session()
23     q = s.query(DSCFile).join(PoolFile)
24     q = q.join(DBSource).join(Suite, DBSource.suites)
25     q = q.filter(or_(Suite.suite_name == suite, Suite.codename == suite))
26     q = q.filter(DBSource.source == source)
27     q = q.filter(PoolFile.filename.endswith('.dsc'))
28     ret = []
29     for p in q:
30         ret.append({'version': p.source.version,
31                     'component': p.poolfile.component.component_name,
32                     'filename': p.poolfile.filename})
33
34     return json.dumps(ret)
35
36 QueryRegister().register_path('/dsc_in_suite', dsc_in_suite)
37