Mercurial > hg > bzconsole
view bzconsole/main.py @ 5:43fb6fd8903d
stub for new bug
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Tue, 02 Nov 2010 11:27:26 -0700 |
parents | 9ee7b8236c36 |
children | 873a703555e9 |
line wrap: on
line source
#!/usr/bin/env python """ console API to bugzilla """ import os import subprocess import sys from command import CommandParser import json import urllib import urllib2 class BZapi(object): """ console API to bugzilla """ def __init__(self, server='https://api-dev.bugzilla.mozilla.org/latest'): self.server = server def products(self, classification=None): """list bugzilla products""" configuration = self._configuration() if classification: products = [i for i in configuration['product'] if configuration['product'][i]['classification'] == 'Components'] return sorted(products) else: return sorted(configuration['product'].keys()) def components(self, product): """list bugzilla components for a particular product""" configuration = self._configuration() assert product in configuration['product'], 'Product %s not found' % product return sorted(configuration['product'][product]['component'].keys()) def new(self, title, product, component): raise NotImplementedError def _configuration(self): if not hasattr(self, '__configuration'): self.__configuration = self._request('/configuration') return self.__configuration def _request(self, path, data=None): url = self.server + path headers = {'Accept': 'application/json', 'Content-Type': 'application/json'} if data: raise NotImplementedError req = urllib2.Request(url, data, headers) response = urllib2.urlopen(req) the_page = response.read() return json.loads(the_page) def main(args=sys.argv[1:]): parser = CommandParser(BZapi) options, args = parser.parse_args(args) parser.invoke(args) if __name__ == '__main__': main()