[Patchew-devel] [PATCH 2/3] maintainer: allow showing queue in series-list format

Paolo Bonzini posted 3 patches 2 years, 6 months ago
[Patchew-devel] [PATCH 2/3] maintainer: allow showing queue in series-list format
Posted by Paolo Bonzini 2 years, 6 months ago
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 mods/maintainer.py           | 41 ++++++++++++++++++++++++++++++------
 www/templates/my-queues.html |  2 +-
 2 files changed, 35 insertions(+), 8 deletions(-)

diff --git a/mods/maintainer.py b/mods/maintainer.py
index 70d0ea5..d650ec4 100644
--- a/mods/maintainer.py
+++ b/mods/maintainer.py
@@ -14,10 +14,11 @@ from django.core.exceptions import PermissionDenied
 from django.http import Http404, HttpResponseRedirect, HttpResponseBadRequest
 from django.urls import reverse
 from mod import PatchewModule
-from api.models import Message, QueuedSeries, WatchedQuery
+from api.models import Message, QueuedSeries, Project, WatchedQuery
 from django.shortcuts import render
 from api.search import SearchEngine
 from event import declare_event, register_handler, emit_event
+from www.views import render_series_list_page
 
 
 class MaintainerModule(PatchewModule):
@@ -164,13 +165,37 @@ class MaintainerModule(PatchewModule):
         self._drop_from_queue(request.user, m, queue)
         return HttpResponseRedirect(request.META.get("HTTP_REFERER"))
 
-    def www_view_my_queues(self, request):
+    def www_view_queue(self, request, project, name):
+        if not request.user.is_authenticated:
+            raise PermissionDenied()
+
+        q = QueuedSeries.objects.filter(user=request.user, name=name).first()
+        if not q:
+            raise Http404("Queue not found")
+        po = Project.objects.filter(name=project).first()
+        if not po:
+            raise Http404("Project not found")
+
+        search = 'project:' + project + ' queue:' + name
+        query = Message.objects.series_heads(po.id).filter(queuedseries=q)
+        return render_series_list_page(request, query,
+                                       search=search, project=project,
+                                       title='"' + name + '" queue')
+
+    def www_view_my_queues(self, request, project=None):
         if not request.user.is_authenticated:
             raise PermissionDenied()
         data = {}
-        for i in QueuedSeries.objects.filter(
-            user=request.user
-        ).order_by("message__project", "name", "message__date"):
+        q = QueuedSeries.objects.filter(user=request.user)
+        if project:
+            po = Project.objects.filter(name=project).first()
+            if not po:
+                raise Http404("Project not found")
+            q = q.filter(message__project=po)
+        else:
+            q = q.order_by("message__project")
+
+        for i in q.order_by("name", "message__date"):
             pn = i.message.project.name
             qn = i.name
             data.setdefault(pn, {})
@@ -248,8 +273,10 @@ class MaintainerModule(PatchewModule):
                 name="drop-from-queue",
             )
         )
-        urlpatterns.append(url(r"^my-queues/", self.www_view_my_queues))
-        urlpatterns.append(url(r"^watch-query/", self.www_view_watch_query))
+        urlpatterns.append(url(r"^my-queues/(?P<project>[^/]*)/(?P<name>[^/]*)/$", self.www_view_queue, name="maintainer_queue"))
+        urlpatterns.append(url(r"^my-queues/(?P<project>[^/]*)/$", self.www_view_my_queues))
+        urlpatterns.append(url(r"^my-queues/$", self.www_view_my_queues))
+        urlpatterns.append(url(r"^watch-query/$", self.www_view_watch_query))
 
     def prepare_message_hook(self, request, message, detailed):
         if message.maintainers:
diff --git a/www/templates/my-queues.html b/www/templates/my-queues.html
index bc63a0e..7eb789e 100644
--- a/www/templates/my-queues.html
+++ b/www/templates/my-queues.html
@@ -29,7 +29,7 @@
 
     <div class="col-lg-10">
         {% for qn, msgs in queues.items %}
-            <h3>Queue: {{ qn }} [{{ p }}]</h3>
+	<h3><a href="{% url "maintainer_queue" project=p name=qn %}">Queue: {{ qn }} [{{ p }}]</a></h3>
             <ul class="panel" id="patches">
             {% for patch in msgs %}
                 <li><a href="/{{ p }}/{{ patch.get_series_head.message_id }}/">
-- 
2.34.1


_______________________________________________
Patchew-devel mailing list
Patchew-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/patchew-devel