[ews-app] Add support for submit-to-ews url
authoraakash_jain@apple.com <aakash_jain@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 11 Mar 2019 18:22:02 +0000 (18:22 +0000)
committeraakash_jain@apple.com <aakash_jain@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 11 Mar 2019 18:22:02 +0000 (18:22 +0000)
https://bugs.webkit.org/show_bug.cgi?id=195477

Reviewed by Lucas Forschler.

* BuildSlaveSupport/ews-app/ews/fetcher.py:
* BuildSlaveSupport/ews-app/ews/templates/statusbubble.html:
* BuildSlaveSupport/ews-app/ews/templates/submittoews.html: Copied from QueueStatusServer/templates/submittoews.html.
* BuildSlaveSupport/ews-app/ews/urls.py:
* BuildSlaveSupport/ews-app/ews/views/submittoews.py: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@242719 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Tools/BuildSlaveSupport/ews-app/ews/fetcher.py
Tools/BuildSlaveSupport/ews-app/ews/templates/statusbubble.html
Tools/BuildSlaveSupport/ews-app/ews/templates/submittoews.html [new file with mode: 0644]
Tools/BuildSlaveSupport/ews-app/ews/urls.py
Tools/BuildSlaveSupport/ews-app/ews/views/submittoews.py [new file with mode: 0644]
Tools/ChangeLog

index 05efb64..406f442 100644 (file)
@@ -48,8 +48,13 @@ class FetchLoop():
 
 
 class BugzillaPatchFetcher():
-    def fetch(self):
-        patch_ids = Bugzilla.get_list_of_patches_needing_reviews()
+    def fetch(self, patch_ids=None):
+        if patch_ids and type(patch_ids) != list:
+            _log.error('Error: patch_ids should be a list, found: {}'.format(type(patch_ids)))
+            return -1
+
+        if not patch_ids:
+            patch_ids = Bugzilla.get_list_of_patches_needing_reviews()
         patch_ids = BugzillaPatchFetcher.filter_valid_patches(patch_ids)
         _log.debug('r? patches: {}'.format(patch_ids))
         Patch.save_patches(patch_ids)
index fe30770..adea362 100644 (file)
@@ -91,7 +91,7 @@ window.addEventListener("message", function(e) {
   {% endif %}
 
 {% if show_submit_to_ews %}
-  <form name="submit_to_ews" method="POST" action="/submit-to-ews">
+  <form name="submit_to_ews" method="POST" action="/submit-to-ews/">{% csrf_token %}
     <input type="hidden" name="patch_id" value="{{ patch_id }}">
     <input type="hidden" name="next_action" value="return_to_bubbles">
     <input class="status" type="submit" value="Submit for EWS analysis">
diff --git a/Tools/BuildSlaveSupport/ews-app/ews/templates/submittoews.html b/Tools/BuildSlaveSupport/ews-app/ews/templates/submittoews.html
new file mode 100644 (file)
index 0000000..951f672
--- /dev/null
@@ -0,0 +1,3 @@
+<form name="submit_to_ews" method="POST">{% csrf_token %}
+Attachment id of patch to submit: <input name="patch_id"><input type="submit" value="Submit for EWS Processing">
+</form>
index 56d16f4..de51e80 100644 (file)
@@ -26,6 +26,7 @@ from ews.views.index import Index
 from ews.views.patch import Patch
 from ews.views.results import Results
 from ews.views.statusbubble import StatusBubble
+from ews.views.submittoews import SubmitToEWS
 
 app_name = 'ews'
 urlpatterns = [
@@ -37,4 +38,6 @@ urlpatterns = [
     url(r'^results/$', Results.as_view(), name='results'),
     # ex: /status-bubble/5
     url(r'^status-bubble/(?P<patch_id>[0-9]+)/$', StatusBubble.as_view(), name='statusbubble'),
+    # ex: /submit-to-ews/
+    url(r'^submit-to-ews/$', SubmitToEWS.as_view(), name='submittoews'),
 ]
diff --git a/Tools/BuildSlaveSupport/ews-app/ews/views/submittoews.py b/Tools/BuildSlaveSupport/ews-app/ews/views/submittoews.py
new file mode 100644 (file)
index 0000000..5731627
--- /dev/null
@@ -0,0 +1,60 @@
+# Copyright (C) 2019 Apple Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1.  Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+# 2.  Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in the
+#     documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR
+# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+from __future__ import unicode_literals
+
+import json
+import logging
+
+from django.http import HttpResponse
+from django.shortcuts import redirect, render
+from django.views import View
+
+from ews.fetcher import BugzillaPatchFetcher
+from ews.models.patch import Patch
+
+_log = logging.getLogger(__name__)
+
+
+class SubmitToEWS(View):
+    def get(self, request):
+        return render(request, 'submittoews.html', {})
+
+    def post(self, request):
+        try:
+            patch_id = request.POST.get('patch_id')
+            patch_id = int(patch_id)
+        except:
+            return HttpResponse("Invalid patch id {}".format(request.POST.get('patch_id')))
+
+        _log.debug('SubmitToEWS::patch: {}'.format(patch_id))
+        if Patch.is_patch_sent_to_buildbot(patch_id):
+            _log.info('SubmitToEWS::patch {} already submitted'.format(patch_id))
+            if request.POST.get('next_action') == 'return_to_bubbles':
+                return redirect('/status-bubble/{}'.format(patch_id))
+            return HttpResponse("Patch {} already submitted. Please wait for status-bubbles.".format(patch_id))
+
+        BugzillaPatchFetcher().fetch([patch_id])
+
+        if request.POST.get('next_action') == 'return_to_bubbles':
+            return redirect('/status-bubble/{}'.format(patch_id))
+        return HttpResponse("Submitted patch {} to EWS.".format(patch_id))
index 7ee44bd..690eab7 100644 (file)
@@ -1,3 +1,16 @@
+2019-03-11  Aakash Jain  <aakash_jain@apple.com>
+
+        [ews-app] Add support for submit-to-ews url
+        https://bugs.webkit.org/show_bug.cgi?id=195477
+
+        Reviewed by Lucas Forschler.
+
+        * BuildSlaveSupport/ews-app/ews/fetcher.py:
+        * BuildSlaveSupport/ews-app/ews/templates/statusbubble.html:
+        * BuildSlaveSupport/ews-app/ews/templates/submittoews.html: Copied from QueueStatusServer/templates/submittoews.html.
+        * BuildSlaveSupport/ews-app/ews/urls.py:
+        * BuildSlaveSupport/ews-app/ews/views/submittoews.py: Added.
+
 2019-03-11  Ryan Haddad  <ryanhaddad@apple.com>
 
         Unreviewed, rolling out r242688, r242643, r242624.