From nobody Fri Oct 25 19:35:11 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=patchew-devel-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=patchew-devel-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1521898654560771.4535126619768; Sat, 24 Mar 2018 06:37:34 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id A253EC049D49; Sat, 24 Mar 2018 13:37:33 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 957A59D9A7; Sat, 24 Mar 2018 13:37:33 +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 873A6181BA04; Sat, 24 Mar 2018 13:37:33 +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 w2ODbWLv031713 for ; Sat, 24 Mar 2018 09:37:32 -0400 Received: by smtp.corp.redhat.com (Postfix) id 60CCE189B5; Sat, 24 Mar 2018 13:37:32 +0000 (UTC) Received: from mx1.redhat.com (ext-mx01.extmail.prod.ext.phx2.redhat.com [10.5.110.25]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 5C0B487DC for ; Sat, 24 Mar 2018 13:37:32 +0000 (UTC) Received: from mail-wm0-f43.google.com (mail-wm0-f43.google.com [74.125.82.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 58F9785359 for ; Sat, 24 Mar 2018 13:37:31 +0000 (UTC) Received: by mail-wm0-f43.google.com with SMTP id e194so8068451wmd.3 for ; Sat, 24 Mar 2018 06:37:31 -0700 (PDT) Received: from donizetti.lan (94-36-194-48.adsl-ull.clienti.tiscali.it. [94.36.194.48]) by smtp.gmail.com with ESMTPSA id i78sm3854257wmc.32.2018.03.24.06.37.28 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sat, 24 Mar 2018 06:37:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:subject:date:message-id:in-reply-to:references; bh=dBfCYhnTBG2XKiXrcPvKWfmwjYhWAUNxQmYxxIpH5aQ=; b=REJjytJDiHFcuLJ0TzZHrkvCBV5oLEbEa4Fmq4qNke7eQ6EAIieX5NlVBqcc3ljJwq oL5RAjmTmvt1RBTtkzTaIMk4jcDmBUa5Wg5U3kooCc2pRwElzUS0bkyPuq3kapcFyGKk 1YCKoJnwZ4BjzmdnWc6kda6kOTe0h8MhnDyP0Veg29cP+us8R5nYmbTrashxkyrE6Cux 39GHqQBts3xxUT8Hw8K1LwWp39DT5ieLdx11LEb8lgDR8keB4ZkJePEfL4Cul0KZk3Vh G4o6AscAbfEdBz5bA+hwUh+JIJDsppVnvhB8rzzgge+9Tma6Vw5Ro947yGTylSklHEbH y1JA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references; bh=dBfCYhnTBG2XKiXrcPvKWfmwjYhWAUNxQmYxxIpH5aQ=; b=lfTavjqCsk9Ef3VsR12d96uU5b7o7QLzi1+PwxyPKye+bGFOhbmiGNeAHnQO8WQmtU 9ejqGksZ18sMRikuipRhS/dGEcdgkR213yQaKmvktxdNNjHdWCYtDITuTwWAAjkVPbua ykjuy7TBtABwT/bD/spc6VxccKindzJVqlBXAt1hbGa6yPRviwCHVd41KVGSL/STXrNy hB9BX3sEeue4mu/n8Quv2rQV0Lcrs/hJvKPqpfARyyQ52v2/ZF43EOuUM6zDuTN9Eyk+ lCW+7GoGFfzLRxHNUrb7/hCOpXFj/fRb9nzPJ10fPN9jB2PFQ288oOTY9eQQ413YJ+LZ Ld4w== X-Gm-Message-State: AElRT7E9Jr+gYybkeZfyFTiwYQ6TedETTwyetvdFk6Rt0gnDprw/HOWx KLx85HFP63Y8F4MrbqcDh8ngg9tE X-Google-Smtp-Source: AG47ELvnfPaarWRz0rGqOBLDrBhkHPDTfRR/gsZ3zz1fc/LfwioRO7CgvqsXMJzioOeBtiahZkZJDg== X-Received: by 10.28.125.84 with SMTP id y81mr11014419wmc.66.1521898649580; Sat, 24 Mar 2018 06:37:29 -0700 (PDT) From: Paolo Bonzini To: patchew-devel@redhat.com Date: Sat, 24 Mar 2018 14:37:17 +0100 Message-Id: <20180324133719.6030-7-pbonzini@redhat.com> In-Reply-To: <20180324133719.6030-1-pbonzini@redhat.com> References: <20180324133719.6030-1-pbonzini@redhat.com> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Sat, 24 Mar 2018 13:37:31 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Sat, 24 Mar 2018 13:37:31 +0000 (UTC) for IP:'74.125.82.43' DOMAIN:'mail-wm0-f43.google.com' HELO:'mail-wm0-f43.google.com' FROM:'paolo.bonzini@gmail.com' RCPT:'' X-RedHat-Spam-Score: 0.469 (DKIM_SIGNED, DKIM_VALID, FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_PASS) 74.125.82.43 mail-wm0-f43.google.com 74.125.82.43 mail-wm0-f43.google.com X-RedHat-Possible-Forgery: Paolo Bonzini X-Scanned-By: MIMEDefang 2.83 on 10.5.110.25 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-loop: patchew-devel@redhat.com Subject: [Patchew-devel] [PATCH 6/8] rest: add project results 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: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: patchew-devel-bounces@redhat.com Errors-To: patchew-devel-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Sat, 24 Mar 2018 13:37:33 +0000 (UTC) X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Another tiny step towards the Result model, allowing test results for a project to be expressed in the REST API. --- api/rest.py | 28 ++++++++++++++++++++-------- api/urls.py | 1 + mods/git.py | 2 ++ tests/test_rest.py | 5 +++++ 4 files changed, 28 insertions(+), 8 deletions(-) diff --git a/api/rest.py b/api/rest.py index 9b1f103..bb56b4b 100644 --- a/api/rest.py +++ b/api/rest.py @@ -93,7 +93,10 @@ class ProjectSerializer(serializers.HyperlinkedModelSeri= alizer): class Meta: model =3D Project fields =3D ('resource_uri', 'name', 'mailing_list', 'prefix_tags',= 'url', 'git', \ - 'description', 'display_order', 'logo', 'parent_project') + 'description', 'display_order', 'logo', 'parent_project'= , 'results') + + results =3D HyperlinkedIdentityField(view_name=3D'results-list', looku= p_field=3D'pk', + lookup_url_kwarg=3D'projects_pk') =20 class ProjectsViewSet(viewsets.ModelViewSet): queryset =3D Project.objects.all().order_by('id') @@ -319,8 +322,12 @@ class MessagesViewSet(ProjectMessagesViewSetMixin, class HyperlinkedResultField(HyperlinkedIdentityField): def get_url(self, result, view_name, request, format): obj =3D result.obj - kwargs =3D {'projects_pk': obj.project_id, 'series_message_id': ob= j.message_id, - 'name': result.name} + kwargs =3D {'name': result.name} + if isinstance(obj, Message): + kwargs['projects_pk'] =3D obj.project_id + kwargs['series_message_id'] =3D obj.message_id + else: + kwargs['projects_pk'] =3D obj.id return self.reverse(view_name, kwargs=3Dkwargs, request=3Drequest,= format=3Dformat) =20 class ResultSerializer(serializers.Serializer): @@ -333,14 +340,10 @@ class ResultSerializer(serializers.Serializer): class ResultSerializerFull(ResultSerializer): log =3D CharField(required=3DFalse) =20 -class SeriesResultsViewSet(viewsets.ViewSet, generics.GenericAPIView): +class ResultsViewSet(viewsets.ViewSet, generics.GenericAPIView): lookup_field =3D 'name' lookup_value_regex =3D '[^/]+' =20 - def get_queryset(self): - return Message.objects.filter(project=3Dself.kwargs['projects_pk'], - message_id=3Dself.kwargs['series_mes= sage_id']) - def get_serializer_class(self, *args, **kwargs): if self.lookup_field in self.kwargs: return ResultSerializerFull @@ -376,3 +379,12 @@ class SeriesResultsViewSet(viewsets.ViewSet, generics.= GenericAPIView): raise Http404 serializer =3D self.get_serializer(result) return Response(serializer.data) + +class ProjectResultsViewSet(ResultsViewSet): + def get_queryset(self): + return Project.objects.filter(id=3Dself.kwargs['projects_pk']) + +class SeriesResultsViewSet(ResultsViewSet): + def get_queryset(self): + return Message.objects.filter(project=3Dself.kwargs['projects_pk'], + message_id=3Dself.kwargs['series_mes= sage_id']) diff --git a/api/urls.py b/api/urls.py index becabeb..64e9629 100644 --- a/api/urls.py +++ b/api/urls.py @@ -34,6 +34,7 @@ router.register('series', rest.SeriesViewSet, base_name= =3D'series') =20 projects_router =3D NestedDefaultRouter(router, 'projects', lookup=3D'proj= ects', trailing_slash=3DTrue) projects_router.include_format_suffixes =3D False +projects_router.register('results', rest.ProjectResultsViewSet, base_name= =3D'results') projects_router.register('series', rest.ProjectSeriesViewSet, base_name=3D= 'series') projects_router.register('messages', rest.MessagesViewSet, base_name=3D'me= ssages') =20 diff --git a/mods/git.py b/mods/git.py index 6d4f365..1f22f2e 100644 --- a/mods/git.py +++ b/mods/git.py @@ -112,6 +112,8 @@ class GitModule(PatchewModule): return upstream, branch =20 def rest_results_hook(self, request, obj, results, detailed=3DFalse): + if not isinstance(obj, Message): + return log =3D obj.get_property("git.apply-log") data =3D None if log: diff --git a/tests/test_rest.py b/tests/test_rest.py index 391714f..261456b 100755 --- a/tests/test_rest.py +++ b/tests/test_rest.py @@ -122,6 +122,11 @@ class RestTest(PatchewTestCase): self.assertEquals(resp.data['logo'], None) self.assertEquals(resp.data['parent_project'], self.PROJECT_BASE) =20 + def test_project_results_list(self): + resp1 =3D self.api_client.get(self.PROJECT_BASE) + resp =3D self.api_client.get(resp1.data['results']) + self.assertEqual(resp.data['count'], len(resp.data['results'])) + def test_series_single(self): resp =3D self.apply_and_retrieve('0001-simple-patch.mbox.gz', self.p.id, '20160628014747.20971-1-= famz@redhat.com') --=20 2.16.2 _______________________________________________ Patchew-devel mailing list Patchew-devel@redhat.com https://www.redhat.com/mailman/listinfo/patchew-devel