[Patchew-devel] [PATCH v5 5/6] Make Delete Command use REST
Shubham Jain
shubhamjain7495 at gmail.com
Thu Jul 12 04:21:19 UTC 2018
Make patchew-cli's delete use REST api and added the missing test for delete
---
api/rest.py | 2 ++
patchew-cli | 16 +++++++++++++++-
tests/patchewtest.py | 3 +++
tests/test_message.py | 15 +++++++++++++++
4 files changed, 35 insertions(+), 1 deletion(-)
diff --git a/api/rest.py b/api/rest.py
index 3045516..d714d09 100644
--- a/api/rest.py
+++ b/api/rest.py
@@ -320,6 +320,8 @@ class SeriesViewSet(BaseMessageViewSet):
class ProjectSeriesViewSet(ProjectMessagesViewSetMixin,
SeriesViewSet, mixins.DestroyModelMixin):
+ authentication_classes = (CsrfExemptSessionAuthentication, )
+
def collect_patches(self, series):
if series.is_patch:
patches = [series]
diff --git a/patchew-cli b/patchew-cli
index 8029751..cb0b650 100755
--- a/patchew-cli
+++ b/patchew-cli
@@ -181,7 +181,21 @@ class DeleteCommand(SubCommand):
if not argv and not args.all:
print("Must specify --all to delete all patches")
return 1
- self.api_do("delete", terms=argv)
+ series_list = []
+ if len(argv)==0:
+ resp = self.rest_api_do("projects")
+ for project in len(resp['result']):
+ url = project['series']
+ series_resp = self.rest_api_do(url)
+ series_list = series_list + series_resp['results']
+ else:
+ for term in argv:
+ url = str(self.base_url) + "/api/v1/series/?q=" + term
+ series_resp = self.rest_api_do(url)
+ series_list = series_list + series_resp['results']
+ for series in series_list:
+ url = series['resource_uri']
+ self.rest_api_do(url, request_method='delete')
return 0
class ImportCommand(SubCommand):
diff --git a/tests/patchewtest.py b/tests/patchewtest.py
index 5bed3b9..847b3f9 100644
--- a/tests/patchewtest.py
+++ b/tests/patchewtest.py
@@ -100,6 +100,9 @@ class PatchewTestCase(django.test.LiveServerTestCase):
def cli_import(self, mbox, rc=0):
self.check_cli(["import", self.get_data_path(mbox)], rc)
+ def cli_delete(self, terms, rc=0):
+ self.check_cli(["delete", terms], rc)
+
def get_data_path(self, fname):
r = tempfile.NamedTemporaryFile(dir=RUN_DIR, prefix="test-data-", delete=False)
d = os.path.join(BASE_DIR, "tests", "data", fname)
diff --git a/tests/test_message.py b/tests/test_message.py
index 9448aee..4b60c1d 100755
--- a/tests/test_message.py
+++ b/tests/test_message.py
@@ -10,6 +10,7 @@
import time
import datetime
+import json
from tests.patchewtest import PatchewTestCase, main
class ProjectTest(PatchewTestCase):
@@ -40,6 +41,20 @@ class ProjectTest(PatchewTestCase):
age = message.get_age()
self.assertEqual(age, "1 day")
+ def test_delete(self):
+ self.cli_login()
+ self.add_project("QEMU", "qemu-devel at nongnu.org")
+ self.cli_import("0002-unusual-cased-tags.mbox.gz")
+ self.cli_import("0004-multiple-patch-reviewed.mbox.gz")
+ a, b = self.check_cli(["search", "-r", "-o", "subject,properties,message-id"])
+ ao = json.loads(a)[0]
+ self.assertEqual(["Fam Zheng", "famz at redhat.com"],
+ ao["properties"]["reviewers"][0])
+ self.cli_delete("from:Fam")
+ a, b = self.check_cli(["search", "-r", "-o", "message-id"])
+ ao = json.loads(a)[0]
+ self.assertEqual("1469192015-16487-1-git-send-email-berrange at redhat.com", ao['message-id'])
+
def test_asctime(self):
from api.models import Message
message = Message()
--
2.15.1 (Apple Git-101)
More information about the Patchew-devel
mailing list