From 7bcba313da27b7230b14a7ea41d50e76cd03e9a5 Mon Sep 17 00:00:00 2001 From: Jeremy Kerr Date: Thu, 22 Oct 2009 17:46:46 -0400 Subject: [PATCH] pwclient,xmlrpc: Specify project for patch hash lookups We may see the same hash for two patches if one is sent to two lists tracked by patchwork. This change adds a new xmlrpc method, patch_get_by_project_hash, which adds the linkname parameter to the lookup. We need to add a new method instead of replacing patch_get_by_hash, to avoid breaking existing pwclient apps. Signed-off-by: Jeremy Kerr --- apps/patchwork/bin/pwclient | 6 +++--- apps/patchwork/views/xmlrpc.py | 10 ++++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/apps/patchwork/bin/pwclient b/apps/patchwork/bin/pwclient index 863c1ae..75fc6ff 100755 --- a/apps/patchwork/bin/pwclient +++ b/apps/patchwork/bin/pwclient @@ -285,8 +285,8 @@ def action_update_patch(rpc, patch_id, state = None, commit = None): if not success: sys.stderr.write("Patch not updated\n") -def patch_id_from_hash(rpc, hash): - patch = rpc.patch_get_by_hash(hash) +def patch_id_from_hash(rpc, project, hash): + patch = rpc.patch_get_by_project_hash(project, hash) if patch == {}: return None @@ -382,7 +382,7 @@ def main(): patch_id = None if hash_str: - patch_id = patch_id_from_hash(rpc, hash_str) + patch_id = patch_id_from_hash(rpc, project_str, hash_str) if patch_id is None: sys.stderr.write("No patch has the hash provided\n") sys.exit(1) diff --git a/apps/patchwork/views/xmlrpc.py b/apps/patchwork/views/xmlrpc.py index f322e53..23e58bf 100644 --- a/apps/patchwork/views/xmlrpc.py +++ b/apps/patchwork/views/xmlrpc.py @@ -354,6 +354,16 @@ def patch_get_by_hash(hash): except: return {} +@xmlrpc_method(False) +def patch_get_by_project_hash(project, hash): + """Return structure for the given patch hash.""" + try: + patch = Patch.objects.filter(project__linkname = project, + hash = hash)[0] + return patch_to_dict(patch) + except: + return {} + @xmlrpc_method(False) def patch_get_mbox(patch_id): """Return mbox string for the given patch ID.""" -- 2.39.2