瀏覽代碼

Update pylint issues, views PopupException and slack_sdk in requirements.txt

Harshg999 4 年之前
父節點
當前提交
1c937c868d

+ 1 - 0
desktop/core/requirements.txt

@@ -58,6 +58,7 @@ requests>=2.20.0
 requests-kerberos==0.12.0
 rsa==3.4.2
 sasl==0.2.1  # Move to https://pypi.org/project/sasl3/ ?
+slack-sdk==3.2.0
 SQLAlchemy==1.3.8
 sqlparse==0.4.1
 tablib==0.13.0

+ 14 - 8
desktop/core/src/desktop/lib/botserver/views.py

@@ -19,10 +19,12 @@ import logging
 import json
 from pprint import pprint
 
+from desktop import conf
 from django.shortcuts import render
 from django.http import HttpResponse
 from desktop.lib.django_util import login_notrequired, JsonResponse
-from desktop import conf
+from desktop.lib.exceptions_renderable import PopupException
+from django.utils.translation import ugettext as _
 from django.views.decorators.csrf import csrf_exempt
 
 from django.conf import settings
@@ -43,20 +45,20 @@ appname = "hue_bot"
 def slack_events(request):
   try:
     slack_message = json.loads(request.body)
-
+    
     if slack_message['token'] != SLACK_VERIFICATION_TOKEN:
       return HttpResponse(status=403)
 
       # challenge verification
     if slack_message['type'] == 'url_verification':
-        response_dict = {"challenge": slack_message.get('challenge')}
+        response_dict = {"challenge": slack_message['challenge']}
         return JsonResponse(response_dict, status=200)
     
     if 'event' in slack_message:
         event_message = slack_message['event']
         parse_events(event_message)
-  except Exception as e:
-    LOG.exception('Response content is not valid JSON in %s' % slack_events)
+  except Exception as ex:
+    raise PopupException(_("Response content is not valid JSON"), detail=ex)
   
   return HttpResponse(status=200)
 
@@ -72,14 +74,18 @@ def parse_events(event_message):
     return HttpResponse(status=200)
 
   if 'hello hue' in text.lower():
-    say_hi_user(channel, user_id)
+    response = say_hi_user(channel, user_id)
+    if response['ok']:
+      return HttpResponse(status=200)
+    else:
+      raise PopupException(response["error"])
+
   
 def say_hi_user(channel, user_id):
   """Bot sends Hi<username> message in a specific channel"""
   bot_message = f'Hi <@{user_id}> :wave:'
   response = slack_client.api_call(api_method='chat.postMessage', json={'channel': channel, 'text': bot_message})
-  if response["ok"]:
-    return HttpResponse(status=200)
+  return response
 
 def get_bot_id(botusername):
   """Takes in bot username, Returns the bot id"""

+ 2 - 9
desktop/core/src/desktop/lib/botserver/views_tests.py

@@ -62,15 +62,8 @@ class TestBotServer(unittest.TestCase):
         "ok": True
       }
       response = say_hi_user("channel", "user_id")
-      assert_equal(response.status_code, 200)
-  
-  def test_slack_events(self):
-    payload =  {"token": "Jhj5dZrVaK7ZwHHjRyZWjbDl",
-    "challenge": "3eZbrw1aBm2rZgRNFdxV2595E9CY3gmdALWMmHkvFXO7tYXAYM8P",
-    "type": "message"}
-    client = Client()
-    response = client.post('/slack/events/', payload)
-    assert_equal(response.status_code, 200)
+      assert_true(response['ok'])
+