+
+@bottle.route('/sources_in_suite/<suite>')
+def sources_in_suite(suite=None):
+ """
+ Returns all source packages and their versions in a given suite.
+
+ @since: December 2014
+
+ @type suite: string
+ @param suite: Name of the suite.
+ @see: L{I{suites}<dakweb.queries.suite.suites>} on how to receive a list of valid suites.
+
+ @rtype: list of dictionaries
+ @return: Dictionaries made out of
+ - source
+ - version
+ """
+ if suite is None:
+ return bottle.HTTPError(503, 'Suite not specified.')
+
+ s = DBConn().session()
+ q = s.query(DBSource).join(Suite, DBSource.suites)
+ q = q.filter(or_(Suite.suite_name == suite, Suite.codename == suite))
+ ret = []
+ for p in q:
+ ret.append({'source': p.source,
+ 'version': p.version})
+
+ s.close()
+
+ return json.dumps(ret)
+
+QueryRegister().register_path('/sources_in_suite', sources_in_suite)
+
+
+@bottle.route('/all_sources')
+def all_sources():
+ """
+ Returns all source packages and their versions known to the archive
+ (this includes NEW).
+
+ @rtype: list of dictionaries
+ @return: Dictionaries made out of
+ - source
+ - version
+ """
+
+ s = DBConn().session()
+ q = s.query(DBSource)
+ ret = []
+ for p in q:
+ ret.append({'source': p.source,
+ 'version': p.version})
+
+ s.close()
+
+ return json.dumps(ret)
+
+QueryRegister().register_path('/all_sources', all_sources)