[Patchew-devel] [PATCH 4/9] git: remove prepare_series_hook, include result URI in applier-get reply

Paolo Bonzini pbonzini at redhat.com
Sat Aug 18 08:39:39 UTC 2018


api.views.prepare_series is only used in two places, the search
and applier-get endpoints.  Simplify a bit the code by dropping support
for the git properties in the search endpoint, and add a result URI
that can be used for patchew-cli's applier mode to switch to the REST
API.

Signed-off-by: Paolo Bonzini <pbonzini at redhat.com>
---
 api/rest.py  |  2 +-
 api/views.py |  4 ----
 mods/git.py  | 30 +++++++++++++++++-------------
 3 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/api/rest.py b/api/rest.py
index bd46211..646d6ad 100644
--- a/api/rest.py
+++ b/api/rest.py
@@ -102,7 +102,7 @@ def reverse_detail(obj, request):
                                               request=request,
                                               kwargs={"projects_pk": m.project.id,
                                                       "series_message_id": m.message_id,
-                                                      "name": obj.name}),
+                                                      "name": obj.name})
     raise Error("unhandled object type")
 
 # pluggable field for plugin support
diff --git a/api/views.py b/api/views.py
index 7a37481..f2262b6 100644
--- a/api/views.py
+++ b/api/views.py
@@ -168,8 +168,6 @@ def prepare_series(request, s, fields=None):
         r["subject"] = s.subject
     if want_field("project"):
         r["project"] = s.project.name
-    if want_field("project.git"):
-        r["project.git"] = s.project.git
     if want_field("message-id"):
         r["message-id"] = s.message_id
     if want_field("patches"):
@@ -178,8 +176,6 @@ def prepare_series(request, s, fields=None):
         r["properties"] = s.get_properties()
     if want_field("is_complete"):
         r["is_complete"] = s.is_complete
-    dispatch_module_hook("prepare_series_hook", request=request, series=s,
-                         response=r)
     if fields:
         r = dict([(k, v) for k, v in r.items() if k in fields])
     return r
diff --git a/mods/git.py b/mods/git.py
index 924547a..97db081 100644
--- a/mods/git.py
+++ b/mods/git.py
@@ -19,7 +19,7 @@ from django.utils.html import format_html
 from mod import PatchewModule
 from event import declare_event, register_handler, emit_event
 from api.models import Message, MessageProperty, Project, Result
-from api.rest import PluginMethodField
+from api.rest import PluginMethodField, reverse_detail
 from api.views import APILoginRequiredView, prepare_series
 from patchew.logviewer import LogView
 from schema import *
@@ -218,16 +218,6 @@ class GitModule(PatchewModule):
             r = base.git_result
             return r if r and r.data.get("repo") else None
 
-    def prepare_series_hook(self, request, series, response):
-        po = series.project
-        for prop in ["git.push_to", "git.public_repo", "git.url_template"]:
-            if po.get_property(prop):
-                response[prop] = po.get_property(prop)
-        base = self.get_base(series)
-        if base:
-            response["git.repo"] = base.data["repo"]
-            response["git.base"] = base.data["tag"]
-
     def _poll_project(self, po):
         repo, branch = self._get_project_repo_and_branch(po)
         cache_repo = self._update_cache_repo(po.name, repo, branch)
@@ -263,8 +253,22 @@ class ApplierGetView(APILoginRequiredView):
 
     def handle(self, request):
         m = Message.objects.filter(results__name="git", results__status="pending").first()
-        if m:
-            return prepare_series(request, m)
+        if not m:
+            return None
+
+        response = prepare_series(request, m, fields=["project", "message-id", "patches", "properties"])
+
+        po = m.project
+        for prop in ["git.push_to", "git.public_repo", "git.url_template"]:
+            if po.get_property(prop):
+                response[prop] = po.get_property(prop)
+        base = _instance.get_base(m)
+        if base:
+            response["git.repo"] = base.data["repo"]
+            response["git.base"] = base.data["tag"]
+        response["project.git"] = po.git
+        response["result_uri"] = reverse_detail(m.git_result, request)
+        return response
 
 class ApplierReportView(APILoginRequiredView):
     name = "applier-report"
-- 
2.17.1





More information about the Patchew-devel mailing list