From nobody Thu Apr 25 06:47: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=fail(p=none dis=none) header.from=gmail.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1526376415233541.7633168761987; Tue, 15 May 2018 02:26:55 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.27]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 197778048B; Tue, 15 May 2018 09:26:54 +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 ECA589BD25; Tue, 15 May 2018 09:26:53 +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 D586A4BB78; Tue, 15 May 2018 09:26:53 +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 w4F9QrS9023703 for ; Tue, 15 May 2018 05:26:53 -0400 Received: by smtp.corp.redhat.com (Postfix) id 1A4E3600D1; Tue, 15 May 2018 09:26:53 +0000 (UTC) Received: from mx1.redhat.com (ext-mx11.extmail.prod.ext.phx2.redhat.com [10.5.110.40]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 122DE600C0 for ; Tue, 15 May 2018 09:26:50 +0000 (UTC) Received: from mail-pg0-f54.google.com (mail-pg0-f54.google.com [74.125.83.54]) (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 8526130BF8E4 for ; Tue, 15 May 2018 09:26:37 +0000 (UTC) Received: by mail-pg0-f54.google.com with SMTP id l2-v6so6758836pgc.7 for ; Tue, 15 May 2018 02:26:37 -0700 (PDT) Received: from localhost.localdomain ([188.166.187.36]) by smtp.gmail.com with ESMTPSA id h1-v6sm21266339pfg.135.2018.05.15.02.26.32 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 15 May 2018 02:26:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=hDZI+RVgaeq6K7utdmHCEpaCy8GKgXjW8A2MELG+nnI=; b=MkzrvhOMvnL/u0LZya/AEQI1ODdo4IAXFaKDJoELcheVDAlv833kJDho2XnMq1elaL vvVbYnUCj0RP6nq+mQjX8KRdxsPqzQzsrhmP4CrszckWB1pND7yEjHCi0e3D3TNz8AjV Np50qIgYp0cZB7ODgkIONcn+s0DLiKyNPz3N3Vc1jEQuFJAjgFgGcT4I66yC2VCmNGPc DB6UNX7+TxqtAfUHq1jXRGDR17/u1MmSreV3gmUR90h5p4zTvhUJAz2mOx1biNECHiNW X+nQHge2J4eOLtW/VMnn0ZmZjmY4s/4CL3xJxOfSl2XzyXFIZ+okt+ZxSNHnoIdATh8G pB2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=hDZI+RVgaeq6K7utdmHCEpaCy8GKgXjW8A2MELG+nnI=; b=l3xIPG0j6oPSWIOc9DgpvS/jSOpCS5OISR7Q+mGg3wIfDt7fOxniIYUvxA7MjHz2e0 ZSc1D6ouBof7k4DT7yxVe7y7d9hmT4cnf2oBqZxHzt2uoaTFOqytc+5EEWaNDlCPlOmY +Nto66i4otELUXlJD3l52zhwXpAVR1jpBqsDudYmt/G1lhMNstuh3XhK+xl8ofAIR0vq qa2wXStfatky86kKHCOoYuZ+vMuGeYMMj9a94gl2DkTaazSxEEvroCv3hVFetjGpUMLD nCQCf67Cg8i3cXScuT4kVyGQMzYEHai7Fe5iwTT7+eL9AmyORS+F7uMbYt2KBxTTKTBp +aQw== X-Gm-Message-State: ALKqPwcPESt/NPqZuIG1aex37KNzgOlECsPx2rgBjBdxopZjHRlwYq48 H6BGmEGOL3AXEecKyYFRbjXXtYX3 X-Google-Smtp-Source: AB8JxZqzAQLxhk1aROkEXL2ILNz88KrTJwQCrtkFVGGx1hu3kTWN/5NVJqD4H5zCMTDCv5kgYB03XQ== X-Received: by 2002:a63:bd09:: with SMTP id a9-v6mr11458263pgf.250.1526376396003; Tue, 15 May 2018 02:26:36 -0700 (PDT) From: Shubham Jain To: patchew-devel@redhat.com Date: Tue, 15 May 2018 14:56:25 +0530 Message-Id: <20180515092625.43888-1-shubhamjain7495@gmail.com> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.40]); Tue, 15 May 2018 09:26:37 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.40]); Tue, 15 May 2018 09:26:37 +0000 (UTC) for IP:'74.125.83.54' DOMAIN:'mail-pg0-f54.google.com' HELO:'mail-pg0-f54.google.com' FROM:'shubhamjain7495@gmail.com' RCPT:'' X-RedHat-Spam-Score: 1.552 * (DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, NML_ADSP_CUSTOM_MED, NORMAL_HTTP_TO_IP, RCVD_IN_DNSWL_NONE, SPF_PASS, T_DKIM_INVALID) 74.125.83.54 mail-pg0-f54.google.com 74.125.83.54 mail-pg0-f54.google.com X-Scanned-By: MIMEDefang 2.84 on 10.5.110.40 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-loop: patchew-devel@redhat.com Cc: Shubham Jain Subject: [Patchew-devel] [PATCH] rest: add api/v1/messages endpoint (POST support) 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.84 on 10.5.11.27 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Tue, 15 May 2018 09:26:54 +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" To apply a single message to the project according to the group user is fro= m. For importer user, message is added to all recognised project. For other= users, message is added to all the projects recognised and maintained by t= he user. --- api/rest.py | 22 +++++++++-- api/urls.py | 3 +- tests/data/0023-multiple-project-patch.mbox.gz | Bin 0 -> 2274 bytes tests/data/0024-multiple-project-patch.json.gz | Bin 0 -> 2471 bytes tests/test_rest.py | 51 +++++++++++++++++++++= +++- 5 files changed, 70 insertions(+), 6 deletions(-) create mode 100644 tests/data/0023-multiple-project-patch.mbox.gz create mode 100644 tests/data/0024-multiple-project-patch.json.gz diff --git a/api/rest.py b/api/rest.py index 1f81fe7..6264085 100644 --- a/api/rest.py +++ b/api/rest.py @@ -17,7 +17,7 @@ from mod import dispatch_module_hook from .models import Project, Message from .search import SearchEngine from rest_framework import (permissions, serializers, viewsets, filters, - mixins, generics, renderers) + mixins, generics, renderers, status) from rest_framework.decorators import detail_route from rest_framework.fields import SerializerMethodField, CharField, JSONFi= eld, EmailField from rest_framework.relations import HyperlinkedIdentityField @@ -162,7 +162,6 @@ class AddressSerializer(serializers.Serializer): except: return [validated_data['address'], validated_data['address']] =20 - class BaseMessageSerializer(serializers.ModelSerializer): class Meta: model =3D Message @@ -288,7 +287,6 @@ class SeriesViewSet(BaseMessageViewSet): filter_backends =3D (PatchewSearchFilter,) search_fields =3D (SEARCH_PARAM,) =20 - class ProjectSeriesViewSet(ProjectMessagesViewSetMixin, SeriesViewSet, mixins.DestroyModelMixin): def collect_patches(self, series): @@ -368,7 +366,7 @@ class MessagePlainTextParser(BaseParser): data =3D stream.read().decode("utf-8") return MboxMessage(data).get_json() =20 -class MessagesViewSet(ProjectMessagesViewSetMixin, +class ProjectMessagesViewSet(ProjectMessagesViewSetMixin, BaseMessageViewSet, mixins.CreateModelMixin): serializer_class =3D MessageSerializer parser_classes =3D (JSONParser, MessagePlainTextParser, ) @@ -388,6 +386,22 @@ class MessagesViewSet(ProjectMessagesViewSetMixin, context=3Dself.get_serializer_c= ontext()) return self.get_paginated_response(serializer.data) =20 +class MessagesViewSet(BaseMessageViewSet): + serializer_class =3D MessageSerializer + parser_classes =3D (JSONParser, MessagePlainTextParser, ) + =20 + def create(self, request, *args, **kwargs): + projects =3D [p for p in Project.objects.all() if p.recognizes(Mbo= xMessage(self.request.data['mbox']))] + + if 'importers' not in self.request.user.groups.all(): + projects =3D set(projects) & set([p for p in Project.objects.a= ll() if p.maintained_by(self.request.user)]) + for project in projects: + request.data['project'] =3D project + serializer =3D MessageSerializer(data=3Drequest.data,context= =3D{'project': project, 'request': self.request}) + serializer.is_valid(raise_exception=3DTrue) + serializer.save() + return Response("Sucess", status=3Dstatus.HTTP_201_CREATED) + # Results =20 class HyperlinkedResultField(HyperlinkedIdentityField): diff --git a/api/urls.py b/api/urls.py index 64e9629..2fd4e0f 100644 --- a/api/urls.py +++ b/api/urls.py @@ -31,12 +31,13 @@ router.include_format_suffixes =3D False router.register('users', rest.UsersViewSet) router.register('projects', rest.ProjectsViewSet) router.register('series', rest.SeriesViewSet, base_name=3D'series') +router.register('messages', rest.MessagesViewSet) =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') +projects_router.register('messages', rest.ProjectMessagesViewSet, base_nam= e=3D'messages') =20 results_router =3D NestedDefaultRouter(projects_router, 'series', lookup= =3D'series', trailing_slash=3DTrue) results_router.include_format_suffixes =3D False diff --git a/tests/data/0023-multiple-project-patch.mbox.gz b/tests/data/00= 23-multiple-project-patch.mbox.gz new file mode 100644 index 0000000000000000000000000000000000000000..6d63736020c35a523cdef327a30= 22c759c941436 GIT binary patch literal 2274 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 literal 0 HcmV?d00001 diff --git a/tests/test_rest.py b/tests/test_rest.py index 7896e8a..9fd9ed9 100755 --- a/tests/test_rest.py +++ b/tests/test_rest.py @@ -37,6 +37,8 @@ class RestTest(PatchewTestCase): self.sp.prefix_tags =3D "block" self.sp.save() self.SUBPROJECT_BASE =3D '%sprojects/%d/' % (self.REST_BASE, self.= sp.id) + self.p2 =3D self.add_project("EDK 2", "edk2-devel@lists.01.org") + self.PROJECT_BASE_2 =3D '%sprojects/%d/' % (self.REST_BASE, self.p= 2.id) =20 self.admin =3D User.objects.get(username=3D'admin') self.USER_BASE =3D '%susers/%d/' % (self.REST_BASE, self.admin.id) @@ -64,7 +66,7 @@ class RestTest(PatchewTestCase): =20 def test_projects(self): resp =3D self.api_client.get(self.REST_BASE + 'projects/') - self.assertEquals(resp.data['count'], 2) + self.assertEquals(resp.data['count'], 3) self.assertEquals(resp.data['results'][0]['resource_uri'], self.PR= OJECT_BASE) self.assertEquals(resp.data['results'][0]['name'], "QEMU") self.assertEquals(resp.data['results'][0]['mailing_list'], "qemu-d= evel@nongnu.org") @@ -295,6 +297,32 @@ class RestTest(PatchewTestCase): self.assertEqual(resp_get.status_code, 200) self.assertEqual(resp.data['subject'], "[Qemu-devel] [PATCH v4 0/2= ] Report format specific info for LUKS block driver") =20 + def test_create_message_without_project_pk(self): + dp =3D self.get_data_path("0024-multiple-project-patch.json.gz") + with open(dp, "r") as f: + data =3D f.read() + self.api_client.login(username=3Dself.user, password=3Dself.passwo= rd) + resp =3D self.api_client.post(self.REST_BASE + "messages/", data, = content_type=3D'application/json') + self.assertEqual(resp.status_code, 201) + self.assertEqual(resp.data, "Sucess") + resp_get =3D self.api_client.get(self.PROJECT_BASE + "messages/201= 80223132311.26555-2-marcandre.lureau@redhat.com/") + self.assertEqual(resp_get.status_code, 200) + self.assertEqual(resp_get.data['subject'], "[Qemu-devel] [PATCH 1/= 7] SecurityPkg/Tcg2Pei: drop Tcg2PhysicalPresenceLib dependency") + resp_get2 =3D self.api_client.get(self.PROJECT_BASE_2 + "messages/= 20180223132311.26555-2-marcandre.lureau@redhat.com/") + =20 + def test_create_text_message_without_project_pk(self): + dp =3D self.get_data_path("0023-multiple-project-patch.mbox.gz") + with open(dp, "r") as f: + data =3D f.read() + self.api_client.login(username=3Dself.user, password=3Dself.passwo= rd) + resp =3D self.api_client.post(self.REST_BASE + "messages/", data, = content_type=3D'message/rfc822') + self.assertEqual(resp.status_code, 201) + self.assertEqual(resp.data, "Sucess") + resp_get =3D self.api_client.get(self.PROJECT_BASE + "messages/201= 80223132311.26555-2-marcandre.lureau@redhat.com/") + self.assertEqual(resp_get.status_code, 200) + self.assertEqual(resp_get.data['subject'], "[Qemu-devel] [PATCH 1/= 7] SecurityPkg/Tcg2Pei: drop Tcg2PhysicalPresenceLib dependency") + resp_get2 =3D self.api_client.get(self.PROJECT_BASE_2 + "messages/= 20180223132311.26555-2-marcandre.lureau@redhat.com/") + def test_message(self): series =3D self.apply_and_retrieve('0001-simple-patch.mbox.gz', self.p.id, '20160628014747.20971-= 1-famz@redhat.com') @@ -346,5 +374,26 @@ class RestTest(PatchewTestCase): resp =3D self.api_client.get(self.REST_BASE + 'schema/') self.assertEqual(resp.status_code, 200) =20 + # def test_create_message_without_project_pk(self): + # dp =3D self.get_data_path("multiple-project-patch.json.gz") + # with open(dp, "r") as f: + # data =3D f.read() + # self.api_client.login(username=3Dself.user, password=3Dself.pass= word) + # resp =3D self.api_client.post(self.REST_BASE + "messages/", data= , content_type=3D'application/json') + # print(resp.data) + # self.assertEqual(resp.status_code, 201) + # resp_get =3D self.api_client.get(self.PROJECT_BASE + "messages/2= 0180223132311.26555-2-marcandre.lureau@redhat.com/") + # self.assertEqual(resp_get.status_code, 200) + # self.assertEqual(resp.data['subject'], "[Qemu-devel] [PATCH 1/7]= SecurityPkg/Tcg2Pei: drop Tcg2PhysicalPresenceLib dependency") + + # def test_create_text_message_without_project_pk(self): + # ? print(resp.data) + + # self.assertEqual(resp.status_code, 201) + # resp_get =3D self.api_client.get(self.PROJECT_BASE + "messages/2= 0180223132311.26555-2-marcandre.lureau@redhat.com/") + # self.assertEqual(resp_get.status_code, 200) + # self.assertEqual(resp.data['subject'], "[Qemu-devel] [PATCH 1/7]= SecurityPkg/Tcg2Pei: drop Tcg2PhysicalPresenceLib dependency") + + if __name__ =3D=3D '__main__': main() --=20 2.14.3 (Apple Git-98) _______________________________________________ Patchew-devel mailing list Patchew-devel@redhat.com https://www.redhat.com/mailman/listinfo/patchew-devel