From nobody Sat Apr 20 13:43:45 2024 Delivered-To: importer2@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=patchew-devel-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=patchew-devel-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1645715955; cv=none; d=zohomail.com; s=zohoarc; b=D4vpIklXu+MSiaeZ9I5IPjDDyMmx122lHMNht6KtOk+vnIq19W81ZhygL42jgJoftwtDuL/63i7wD5pxBSj1swkPmCOINhAFfQpx6Ym9YIKw+JAlBdsugoyOxVdEEcBmgGl9wpyk+q09DRFC3FjK9eb+664NWPDObfCb9Tq7x+Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1645715955; h=Content-Type:Content-Transfer-Encoding:Date:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To; bh=KAREkSRvvUc5OZ4sdSPREycDhFtwCdzDjBSvcpnBcVI=; b=gLmcLxDnLr+xPv0EyjLpfamkAEU8m9C6cSSpmvYuc32XWcCDQNTEEAl7t2BY7v04Mr/ASgZQhp68W74162Y0lv3nXTqr9kFeeJUhG+v7j+IwBgg2F5ugcswpX9gFPmEROaSgLLdXK9efjh6uxI4HzQUZc59O3TtsqB4tkxmwivY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=patchew-devel-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1645715955634775.0688216806772; Thu, 24 Feb 2022 07:19:15 -0800 (PST) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-408-mRMwOTA5NGGoGkA0P75-SA-1; Thu, 24 Feb 2022 10:19:10 -0500 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 2DFD21883525; Thu, 24 Feb 2022 15:19:09 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 266E77C035; Thu, 24 Feb 2022 15:19:09 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 17E7D4ED27; Thu, 24 Feb 2022 15:19:09 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 21OFG2H6008571 for ; Thu, 24 Feb 2022 10:16:02 -0500 Received: by smtp.corp.redhat.com (Postfix) id CF7527A528; Thu, 24 Feb 2022 15:16:02 +0000 (UTC) Received: from avogadro.lan (unknown [10.39.193.11]) by smtp.corp.redhat.com (Postfix) with ESMTP id 18AA87887B for ; Thu, 24 Feb 2022 15:16:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1645715953; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=KAREkSRvvUc5OZ4sdSPREycDhFtwCdzDjBSvcpnBcVI=; b=aTnW+fqBUfjaphScYuQ6s8urZyooj8ke6ywu2aaLbdxbRzHmquM6wIf6VWpNPuzX6Cj/MZ aj4JYgRRiEczMIZW3PfKeMu3vwEXp8dwTZELGxCgO+325MBoCnEBnlDtLEGmGO/Bvb9EN3 wFjy6c93hx7t5Xf4Gd7dvOu3hhxCphA= X-MC-Unique: mRMwOTA5NGGoGkA0P75-SA-1 From: Paolo Bonzini To: patchew-devel@redhat.com Date: Thu, 24 Feb 2022 16:16:01 +0100 Message-Id: <20220224151601.375655-1-pbonzini@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-loop: patchew-devel@redhat.com Subject: [Patchew-devel] [PATCH] maintainer: pass project to URLs that change queue or review state X-BeenThere: patchew-devel@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Patchew development and discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: patchew-devel-bounces@redhat.com Errors-To: patchew-devel-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=patchew-devel-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1645715956388100005 Content-Type: text/plain; charset="utf-8" If a series is submitted to multiple projects, it is not possible to add or remove it from the queues in all but one project (the first one that received it). Fix this by including the current project in the URL. Signed-off-by: Paolo Bonzini --- mods/maintainer.py | 102 +++++++++++++++++++++++++++++---------------- 1 file changed, 67 insertions(+), 35 deletions(-) diff --git a/mods/maintainer.py b/mods/maintainer.py index df8ec45..c062d56 100644 --- a/mods/maintainer.py +++ b/mods/maintainer.py @@ -108,10 +108,10 @@ class MaintainerModule(PatchewModule): # Handle changes to "is:merged" self._update_watch_queue(series) =20 - def _update_review_state(self, request, message_id, accept): + def _update_review_state(self, request, project, message_id, accept): if not request.user.is_authenticated: return HttpResponseForbidden() - msg =3D Message.objects.find_series(message_id) + msg =3D Message.objects.find_series(message_id, project) if not msg: raise Http404("Series not found") if accept: @@ -122,10 +122,10 @@ class MaintainerModule(PatchewModule): self._add_to_queue(request.user, msg, to_create) return HttpResponseRedirect(request.META.get("HTTP_REFERER")) =20 - def _delete_review(self, request, message_id): + def _delete_review(self, request, project, message_id): if not request.user.is_authenticated: return HttpResponseForbidden() - msg =3D Message.objects.find_series(message_id) + msg =3D Message.objects.find_series(message_id, project) if not msg: raise Http404("Series not found") r =3D QueuedSeries.objects.filter( @@ -134,8 +134,8 @@ class MaintainerModule(PatchewModule): self._drop_all_from_queue(r) return HttpResponseRedirect(request.META.get("HTTP_REFERER")) =20 - def _update_merge_state(self, request, message_id, is_merged): - s =3D Message.objects.find_series(message_id) + def _update_merge_state(self, request, project, message_id, is_merged): + s =3D Message.objects.find_series(message_id, project) if not s: raise Http404("Series not found") if not s.project.maintained_by(request.user): @@ -144,25 +144,25 @@ class MaintainerModule(PatchewModule): s.save() return HttpResponseRedirect(request.META.get("HTTP_REFERER")) =20 - def www_view_mark_as_merged(self, request, message_id): - return self._update_merge_state(request, message_id, True) + def www_view_mark_as_merged(self, request, project, message_id): + return self._update_merge_state(request, project, message_id, True) =20 - def www_view_clear_merged(self, request, message_id): - return self._update_merge_state(request, message_id, False) + def www_view_clear_merged(self, request, project, message_id): + return self._update_merge_state(request, project, message_id, Fals= e) =20 - def www_view_mark_accepted(self, request, message_id): - return self._update_review_state(request, message_id, True) + def www_view_mark_accepted(self, request, project, message_id): + return self._update_review_state(request, project, message_id, Tru= e) =20 - def www_view_mark_rejected(self, request, message_id): - return self._update_review_state(request, message_id, False) + def www_view_mark_rejected(self, request, project, message_id): + return self._update_review_state(request, project, message_id, Fal= se) =20 - def www_view_clear_reviewed(self, request, message_id): - return self._delete_review(request, message_id) + def www_view_clear_reviewed(self, request, project, message_id): + return self._delete_review(request, project, message_id) =20 - def www_view_add_to_queue(self, request, message_id): + def www_view_add_to_queue(self, request, project, message_id): if not request.user.is_authenticated: raise PermissionDenied() - m =3D Message.objects.find_series(message_id) + m =3D Message.objects.find_series(message_id, project) if not m: raise Http404("Series not found") queue =3D request.GET.get("queue") @@ -171,10 +171,10 @@ class MaintainerModule(PatchewModule): self._add_to_queue(request.user, m, queue) return HttpResponseRedirect(request.META.get("HTTP_REFERER")) =20 - def www_view_drop_from_queue(self, request, queue, message_id): + def www_view_drop_from_queue(self, request, queue, project, message_id= ): if not request.user.is_authenticated: raise PermissionDenied() - m =3D Message.objects.find_series(message_id) + m =3D Message.objects.find_series(message_id, project) if not m: raise Http404("Series not found") self._drop_from_queue(request.user, m, queue) @@ -261,49 +261,49 @@ class MaintainerModule(PatchewModule): def www_url_hook(self, urlpatterns): urlpatterns.append( url( - r"^mark-as-merged/(?P.*)/", + r"^(?P.*)/(?P.*)/mark-as-merged/", self.www_view_mark_as_merged, name=3D"mark-as-merged", ) ) urlpatterns.append( url( - r"^clear-merged/(?P.*)/", + r"^(?P.*)/(?P.*)/clear-merged/", self.www_view_clear_merged, name=3D"clear-merged", ) ) urlpatterns.append( url( - r"^mark-as-accepted/(?P.*)/", + r"^(?P.*)/(?P.*)/mark-as-accepted/", self.www_view_mark_accepted, name=3D"mark-as-accepted", ) ) urlpatterns.append( url( - r"^mark-as-rejected/(?P.*)/", + r"^(?P.*)/(?P.*)/mark-as-reviewed/", self.www_view_mark_rejected, name=3D"mark-as-rejected", ) ) urlpatterns.append( url( - r"^clear-reviewed/(?P.*)/", + r"^(?P.*)/(?P.*)/clear-reviewed/", self.www_view_clear_reviewed, name=3D"clear-reviewed", ) ) urlpatterns.append( url( - r"^add-to-queue/(?P.*)/", + r"^(?P.*)/(?P.*)/add-to-queue/", self.www_view_add_to_queue, name=3D"add-to-queue", ) ) urlpatterns.append( url( - r"^drop-from-queue/(?P[^/]*)/(?P.*)/", + r"^(?P.*)/(?P.*)/drop-from-queue/(?P<= queue>[^/]*)/", self.www_view_drop_from_queue, name=3D"drop-from-queue", ) @@ -345,7 +345,11 @@ class MaintainerModule(PatchewModule): message.extra_ops.append( { "url": reverse( - "clear-merged", kwargs=3D{"message_id": message.me= ssage_id} + "clear-merged", + kwargs=3D{ + "message_id": message.message_id, + "project": message.project.name, + }, ), "icon": "eraser", "title": "Clear merged state", @@ -355,7 +359,11 @@ class MaintainerModule(PatchewModule): message.extra_ops.append( { "url": reverse( - "mark-as-merged", kwargs=3D{"message_id": message.= message_id} + "mark-as-merged", + kwargs=3D{ + "message_id": message.message_id, + "project": message.project.name, + }, ), "icon": "code-branch fa-flip-vertical", "title": "Mark series as merged", @@ -381,7 +389,11 @@ class MaintainerModule(PatchewModule): { "url": reverse( "drop-from-queue", - kwargs=3D{"queue": r.name, "message_id": messa= ge.message_id}, + kwargs=3D{ + "queue": r.name, + "message_id": message.message_id, + "project": message.project.name, + }, ), "icon": "times", "title": "Drop from queue '%s'" % r.name, @@ -391,7 +403,11 @@ class MaintainerModule(PatchewModule): message.extra_ops.append( { "url": reverse( - "mark-as-accepted", kwargs=3D{"message_id": messag= e.message_id} + "mark-as-accepted", + kwargs=3D{ + "message_id": message.message_id, + "project": message.project.name, + }, ), "icon": "check", "title": "Mark series as accepted", @@ -401,7 +417,11 @@ class MaintainerModule(PatchewModule): message.extra_ops.append( { "url": reverse( - "mark-as-rejected", kwargs=3D{"message_id": messag= e.message_id} + "mark-as-rejected", + kwargs=3D{ + "message_id": message.message_id, + "project": message.project.name, + }, ), "icon": "times", "title": "Mark series as rejected", @@ -411,7 +431,11 @@ class MaintainerModule(PatchewModule): message.extra_ops.append( { "url": reverse( - "clear-reviewed", kwargs=3D{"message_id": message.= message_id} + "clear-reviewed", + kwargs=3D{ + "message_id": message.message_id, + "project": message.project.name, + }, ), "icon": "eraser", "title": "Clear review state", @@ -436,7 +460,11 @@ class MaintainerModule(PatchewModule): "url": "%s?queue=3D%s" % ( reverse( - "add-to-queue", kwargs=3D{"message_id": messag= e.message_id} + "add-to-queue", + kwargs=3D{ + "message_id": message.message_id, + "project": message.project.name, + }, ), qn, ), @@ -448,7 +476,11 @@ class MaintainerModule(PatchewModule): message.extra_ops.append( { "url": reverse( - "add-to-queue", kwargs=3D{"message_id": message.messag= e_id} + "add-to-queue", + kwargs=3D{ + "message_id": message.message_id, + "project": message.project.name, + }, ), "get_prompt": {"queue": "What is the name of the new queue= ?"}, "icon": "bookmark", --=20 2.34.1 _______________________________________________ Patchew-devel mailing list Patchew-devel@redhat.com https://listman.redhat.com/mailman/listinfo/patchew-devel