3 from sqlalchemy import or_
7 from daklib.dbconn import DBConn, DBSource, Suite, DSCFile, PoolFile
8 from dakweb.webregister import QueryRegister
10 @bottle.route('/dsc_in_suite/<suite>/<source>')
11 def dsc_in_suite(suite=None, source=None):
13 dsc_in_suite(suite, source)
15 returns: list of dictionaries
17 Find all dsc files for a given source package name in a given suite.
20 return bottle.HTTPError(503, 'Suite not specified.')
22 return bottle.HTTPError(503, 'Source package not specified.')
24 s = DBConn().session()
25 q = s.query(DSCFile).join(PoolFile)
26 q = q.join(DBSource).join(Suite, DBSource.suites)
27 q = q.filter(or_(Suite.suite_name == suite, Suite.codename == suite))
28 q = q.filter(DBSource.source == source)
29 q = q.filter(PoolFile.filename.endswith('.dsc'))
32 ret.append({'version': p.source.version,
33 'component': p.poolfile.component.component_name,
34 'filename': p.poolfile.filename,
35 'filesize': p.poolfile.filesize,
36 'sha256sum': p.poolfile.sha256sum})
40 return json.dumps(ret)
42 QueryRegister().register_path('/dsc_in_suite', dsc_in_suite)
45 @bottle.route('/sources_in_suite/<suite>')
46 def sources_in_suite(suite=None):
48 sources_in_suite(suite)
50 returns: list of dictionaries
52 Returns all source packages and their versions in a given suite.
56 return bottle.HTTPError(503, 'Suite not specified.')
58 s = DBConn().session()
59 q = s.query(DBSource).join(Suite, DBSource.suites)
60 q = q.filter(or_(Suite.suite_name == suite, Suite.codename == suite))
63 ret.append({'source': p.source,
64 'version': p.version})
68 return json.dumps(ret)
70 QueryRegister().register_path('/sources_in_suite', sources_in_suite)
73 @bottle.route('/all_sources')
74 def sources_in_suite():
78 returns: list of dictionaries
80 Returns all source packages and their versions known to the archive
84 s = DBConn().session()
88 ret.append({'source': p.source,
89 'version': p.version})
93 return json.dumps(ret)
95 QueryRegister().register_path('/all_sources', all_sources)