コード例 #1
0
ファイル: slack_app.py プロジェクト: pgoosen/ziggy
    def list_transactions(self):
        request_json_py = {"only_uncategorised": "True"}
        request_json_str = json.dumps(request_json_py)
        request_json = json.loads(request_json_str)
        transactions_response = GetTransactions(request_json)
        transactions_json = transactions_response.get_json()

        var_today = datetime.now(pytz.timezone("Africa/Johannesburg"))
        var_today_str = var_today.strftime("%Y-%m-%d")

        parent_message = self.client.chat_postMessage(
            channel=self.SLACK_CHANNEL_ID,
            blocks=[
                SlackComposer.MessageBlock_Divider(),
                SlackComposer.MessageBlock_TextHeader(
                    ":construction: You have {} uncategorised transactions ({})"
                    .format(len(transactions_json), var_today_str))
            ])

        parent_ts = parent_message["ts"]

        for index in transactions_json:
            self.client.chat_postMessage(
                channel=self.SLACK_CHANNEL_ID,
                attachments=SlackComposer.Attachment_Transaction(
                    transactions_json[index]),
                reply_broadcast="false",
                thread_ts=parent_ts)

        return make_response("", 200)
コード例 #2
0
ファイル: slack_app.py プロジェクト: pgoosen/ziggy
    def new_goal_modal(self, trigger_id):
        view = SlackComposer.Modal_Goal(
            "New Goal",
            "The following form will help you to create a new goal.")

        self.client.views_open(trigger_id=trigger_id, view=view)
        return make_response("", 200)
コード例 #3
0
ファイル: slack_app.py プロジェクト: pgoosen/ziggy
    def categorise_transaction(self, transaction_uuid, category_id,
                               message_ts):
        # Get transaction
        request_json_py = {"doc_id": transaction_uuid}
        request_json_str = json.dumps(request_json_py)
        request_json = json.loads(request_json_str)
        response = GetTransactions(request_json)
        transaction_json = response.get_json()
        transaction_json["0"]["budget_category"] = category_id

        # Update transaction
        UpdateTransaction(transaction_json["0"], transaction_uuid)

        # Get transaction
        request_json_py = {"doc_id": transaction_uuid}
        request_json_str = json.dumps(request_json_py)
        request_json = json.loads(request_json_str)
        response = GetTransactions(request_json)
        transaction_json = response.get_json()

        # Update transaction on Slack
        self.client.chat_update(
            channel=self.SLACK_CHANNEL_ID,
            ts=message_ts,
            attachments=SlackComposer.Attachment_Transaction(
                transaction_json["0"]),
        )
        return make_response("", 200)
コード例 #4
0
ファイル: slack_app.py プロジェクト: pgoosen/ziggy
    def AvatarUpdate_FormatMessage(self, data):
        # Only send avatar image if level changed or if report type
        imageUrl = None
        level = None
        if data["level_diff"] != 0 or "report" in data:
            if self.BUCKET_PATH is False:
                return
            level = str(data["level"])
            imageUrl = self.BUCKET_PATH.replace("{REPLACE_LEVEL}", level)
            # imageBlock = SlackComposer.MessageBlock_Image(imageUrl, level)

        # Load header and stats
        header = SlackComposer.AvatarUpdate_GetHeader(data)
        stats = SlackComposer.AvatarUpdate_GetStats(data)

        message_blocks = [
            SlackComposer.MessageBlock_Divider(),
            SlackComposer.MessageBlock_TextHeader(header),
            SlackComposer.MessageBlock_Text(stats)
        ]

        if imageUrl is not None:
            message_blocks.append(
                SlackComposer.MessageBlock_Image(imageUrl, level))

        parent_message = self.client.chat_postMessage(
            channel=self.SLACK_CHANNEL_ID, blocks=message_blocks)

        return make_response("", parent_message.status_code)
コード例 #5
0
ファイル: slack_app.py プロジェクト: pgoosen/ziggy
    def refresh_goal_modal(self, current_goal_data, view_id, goal_id,
                           message_ts, title, description):
        # request_json_py = {"active": "true", "doc_id": goal_id}
        # request_json_str = json.dumps(request_json_py)
        # request_json = json.loads(request_json_str)
        # goals_response = GetGoals(request_json)
        # goals_json = goals_response.get_json()

        goal = Goal()
        goal.setup_goal(current_goal_data)
        view = SlackComposer.Modal_Goal(title, description, goal, goal_id,
                                        message_ts)

        self.client.views_update(view=view, view_id=view_id)
        return make_response("", 200)
コード例 #6
0
ファイル: slack_app.py プロジェクト: pgoosen/ziggy
    def post_transactions_to_channel(self, transaction_ids):
        request_json = json.loads(transaction_ids)

        transactions_response = GetTransactions(request_json)

        transactions_json = transactions_response.get_json()

        for index in transactions_json:
            self.client.chat_postMessage(
                channel=self.SLACK_CHANNEL_ID,
                attachments=SlackComposer.Attachment_Transaction(
                    transactions_json[index]),
                reply_broadcast="false")

        return make_response("", 200)
コード例 #7
0
ファイル: slack_app.py プロジェクト: pgoosen/ziggy
    def update_goal(self, request_json_py, goal_uuid, message_ts):
        request_json_str = json.dumps(request_json_py)
        request_json = json.loads(request_json_str)
        UpdateGoal(request_json, goal_uuid)

        # Get goal
        request_json_py = {"doc_id": goal_uuid}
        request_json_str = json.dumps(request_json_py)
        request_json = json.loads(request_json_str)
        response = GetGoals(request_json)
        goal_json = response.get_json()

        # Update transaction on Slack
        self.client.chat_update(
            channel=self.SLACK_CHANNEL_ID,
            ts=message_ts,
            blocks=SlackComposer.Attachment_Goal(goal_json["0"]),
        )

        return make_response("", 200)
コード例 #8
0
ファイル: slack_app.py プロジェクト: pgoosen/ziggy
    def update_goal_modal(self, goal_id, trigger_id, message_ts):
        request_json_py = {"active": "true", "doc_id": goal_id}
        request_json_str = json.dumps(request_json_py)
        request_json = json.loads(request_json_str)
        goals_response = GetGoals(request_json)
        goals_json = goals_response.get_json()

        goal = Goal()
        # goal_doc_id = goals_json["0"]["doc_id"]

        goal.setup_goal(goals_json["0"])

        view = SlackComposer.Modal_Goal(
            "Update Goal",
            "The following form will help you to update a goal.", goal,
            goal_id, message_ts)

        self.client.views_open(trigger_id=trigger_id, view=view)

        return make_response("", 200)