diff options
author | martin.von.loewis <devnull@localhost> | 2011-12-12 18:31:13 +0000 |
---|---|---|
committer | martin.von.loewis <devnull@localhost> | 2011-12-12 18:31:13 +0000 |
commit | e5d6efce9883554329928347d5dde6741aacba8c (patch) | |
tree | 7b88b5c761c495b204f2e652250e4f6db00d8d0f /rpc.py | |
parent | bb11097eaf5b8cee30fbf5c47c0e7063093ae68c (diff) | |
download | decorator-e5d6efce9883554329928347d5dde6741aacba8c.tar.gz |
Add browse RPC.
Diffstat (limited to 'rpc.py')
-rw-r--r-- | rpc.py | 14 |
1 files changed, 14 insertions, 0 deletions
@@ -21,6 +21,7 @@ class RequestHandler(SimpleXMLRPCDispatcher): self.register_function(release_data) self.register_function(release_data, name='package_data') # Deprecated self.register_function(search) + self.register_function(browse) self.register_function(updated_releases) self.register_function(changelog) self.register_function(changed_packages) @@ -119,6 +120,19 @@ def search(store, spec, operator='and'): spec['_pypi_hidden'] = 'FALSE' return [row.as_dict() for row in store.query_packages(spec, operator)] +def browse(store, categories): + if not isinstance(categories, list): + raise TypeError, "Parameter categories must be a list" + classifier_ids = store.get_classifier_ids(categories) + print classifier_ids + if len(classifier_ids) != len(categories): + for c in categories: + if c not in classifier_ids: + raise ValueError, 'Unknown category "%s"' % c + ids = classifier_ids.values() + packages, tally = store.browse(ids) + return [(name, version) for name, version, desc in packages] + def updated_releases(store, since): result = store.updated_releases(since) return [(row['name'], row['version']) for row in result] |