Python backend for a Slack's kudos plugin.
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat(wip): actions with no messages

seik 54c865bb 6966b436

+60 -30
+39 -30
kefi/routers/responses.py
··· 1 1 from typing import Dict, Optional 2 2 3 + from slack_sdk.models.attachments import ActionButton 4 + 3 5 from kefi.models.database import Action, User 4 6 from kefi.models.outputs import ( 5 7 Context, ··· 80 82 81 83 def build_response(self) -> None: 82 84 """Creates the response using the data in action and""" 83 - header = Header( 84 - text=PlainText( 85 - text=self.action.header_template.format( 86 - receiver_name=self.receiver.get_short_name(), 87 - sender_name=self.sender.get_short_name(), 88 - ), 89 - emoji=True, 85 + blocks = [] 86 + blocks.append( 87 + Header( 88 + text=PlainText( 89 + text=self.action.header_template.format( 90 + receiver_name=self.receiver.get_short_name(), 91 + sender_name=self.sender.get_short_name(), 92 + ), 93 + emoji=True, 94 + ) 90 95 ) 91 96 ) 92 - section = Section( 93 - text=MarkDown( 94 - text=self.action.message_template.format( 95 - sender_name=self.sender.get_short_name(), message=self.message 96 - ), 97 - ), 98 - accessory=Image( 99 - image_url=self.action.image or "", 100 - alt_text=self.message, 101 - ), 102 - ) 103 - context = Context( 104 - elements=[ 105 - MarkDown( 106 - text=self.action.context_template.format( 107 - sender_name=f"@{self.sender.slack_username}", 108 - receiver_name=f"@{self.receiver.slack_username}", 109 - amount=self.action.amount, 97 + if self.message: 98 + blocks.append( 99 + Section( 100 + text=MarkDown( 101 + text=self.action.message_template.format( 102 + sender_name=self.sender.get_short_name(), 103 + message=self.message, 104 + ), 105 + ), 106 + accessory=Image( 107 + image_url=self.action.image or "", 108 + alt_text=self.message, 109 + ), 110 + ) 111 + ) 112 + blocks.append( 113 + Context( 114 + elements=[ 115 + MarkDown( 116 + text=self.action.context_template.format( 117 + sender_name=f"@{self.sender.slack_username}", 118 + receiver_name=f"@{self.receiver.slack_username}", 119 + amount=self.action.amount, 120 + ) 110 121 ) 111 - ) 112 - ] 113 - ) 114 - self.response = Response( 115 - response_type=self.response_type, blocks=[header, section, context] 122 + ] 123 + ) 116 124 ) 125 + self.response = Response(response_type=self.response_type, blocks=blocks) 117 126 118 127 119 128 class DepositResponse(SlackResponse):
+21
kefi/tests/test_commands.py
··· 246 246 assert response.status_code == 200 247 247 assert available_balance(receiver_1, session=session) == amount 248 248 assert available_balance(receiver_2, session=session) == amount 249 + 250 + 251 + def test_action_no_message(mocker: MockerFixture, session: Session, client: TestClient): 252 + mocker.patch.object(WebClient, "chat_postMessage") 253 + sender = User(slack_username="user_1", slack_user_id="U1") 254 + receiver = User(slack_username="user_2", slack_user_id="U2") 255 + session.add(sender) 256 + session.add(receiver) 257 + reset_wallets(session=session) 258 + response = client.post( 259 + "/command/", 260 + data=generate_command( 261 + user_name=sender.slack_username, 262 + user_id=sender.slack_user_id, 263 + text=f"{Command.KUDOS} <@{receiver.slack_user_id}>", 264 + ), 265 + ) 266 + assert response.status_code == 200 267 + data = response.json() 268 + assert "blocks" in data 269 + assert len(data["blocks"]) == 2