[Patchew-devel] [PATCH v2 2/3] Make Delete Command use REST

Shubham Jain shubhamjain7495 at gmail.com
Fri Jun 29 14:05:50 UTC 2018


Make patchew-cli's delete use REST api and added the missing test for delete
---
 api/rest.py           |  2 ++
 patchew-cli           | 15 ++++++++++++++-
 tests/patchewtest.py  |  3 +++
 tests/test_message.py | 17 +++++++++++++++--
 4 files changed, 34 insertions(+), 3 deletions(-)

diff --git a/api/rest.py b/api/rest.py
index 39bdda0..9b47f37 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 8425db2..f90f3c5 100755
--- a/patchew-cli
+++ b/patchew-cli
@@ -181,7 +181,20 @@ 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 args.all: 
+            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:
+                series_resp = self.rest_api_do("series/?q%s"%term)
+            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..0b47b37 100755
--- a/tests/test_message.py
+++ b/tests/test_message.py
@@ -10,7 +10,8 @@
 
 import time
 import datetime
-from tests.patchewtest import PatchewTestCase, main
+import json
+from patchewtest import PatchewTestCase, main
 
 class ProjectTest(PatchewTestCase):
 
@@ -54,5 +55,17 @@ class ProjectTest(PatchewTestCase):
         asctime = message.get_asctime()
         self.assertEqual(asctime, "Sat Oct 22 9:06:04 2016")
 
+    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")
+        a, b = self.check_cli(["search", "-r", "-o", "subject,properties"])
+        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", "subject,properties"])
+        self.assertEqual("",a)
+
 if __name__ == '__main__':
-    main()
+    main()
\ No newline at end of file
-- 
2.15.1 (Apple Git-101)




More information about the Patchew-devel mailing list