Package dakweb :: Package queries :: Module madison
[hide private]
[frames] | no frames]

Source Code for Module dakweb.queries.madison

 1  """ "Madison" interface 
 2   
 3  @contact: Debian FTPMaster <ftpmaster@debian.org> 
 4  @copyright: 2014  Ansgar Burchardt <ansgar@debian.org> 
 5  @copyright: 2014  Joerg Jaspert <joerg@debian.org> 
 6  @license: GNU General Public License version 2 or later 
 7  """ 
 8   
 9  import json 
10   
11  import bottle 
12   
13  from daklib.ls import list_packages 
14  from dakweb.webregister import QueryRegister 
15 16 17 @bottle.route("/madison") 18 -def madison():
19 r""" 20 Display information about `package`\ (s). 21 22 .. versionadded:: December 2014 23 24 @keyword package: Space separated list of packages. 25 @keyword a: only show info for specified architectures. 26 @keyword b: only show info for a binary type. I{deb/udeb/dsc} 27 @keyword c: only show info for specified component(s). I{main/contrib/non-free} 28 @keyword s: only show info for this suite. 29 @keyword S: show info for the binary children of source pkgs. I{true/false} 30 @keyword f: output json format. I{json} 31 32 :return: Text or Json format of the data 33 34 .. seealso:: :func:`~dakweb.queries.suite.suites` on how to receive a list of valid suites. 35 """ 36 37 r = bottle.request 38 39 packages = r.query.get("package", "").split() 40 kwargs = dict() 41 42 architectures = r.query.get("a", None) 43 if architectures is not None: 44 kwargs["architectures"] = architectures.split(",") 45 binary_type = r.query.get("b", None) 46 if binary_type is not None: 47 kwargs["binary_types"] = [binary_type] 48 component = r.query.get("c", None) 49 if component is not None: 50 kwargs["components"] = component.split(",") 51 suite = r.query.get("s", None) 52 if suite is not None: 53 kwargs["suites"] = suite.split(",") 54 if "S" in r.query: 55 kwargs["source_and_binary"] = True 56 format = r.query.get("f", None) 57 if format is not None: 58 kwargs["format"] = "python" 59 60 result = list_packages(packages, **kwargs) 61 62 if format is None: 63 bottle.response.content_type = "text/plain; charset=UTF-8" 64 for row in result: 65 yield row 66 yield "\n" 67 else: 68 bottle.response.content_type = "application/json; charset=UTF-8" 69 yield json.dumps(list(result))
70 71 72 QueryRegister().register_path("/madison", madison) 73