Team Ai
Apppublic

Underground-Digital/Workflow-Engine

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
saved_message.py88 linesDownload Raw Back to explore
1from flask_login import current_user2from flask_restful import fields, marshal_with, reqparse3from flask_restful.inputs import int_range4from werkzeug.exceptions import NotFound5 6from controllers.console import api7from controllers.console.explore.error import NotCompletionAppError8from controllers.console.explore.wraps import InstalledAppResource9from fields.conversation_fields import message_file_fields10from libs.helper import TimestampField, uuid_value11from services.errors.message import MessageNotExistsError12from services.saved_message_service import SavedMessageService13 14feedback_fields = {"rating": fields.String}15 16message_fields = {17    "id": fields.String,18    "inputs": fields.Raw,19    "query": fields.String,20    "answer": fields.String,21    "message_files": fields.List(fields.Nested(message_file_fields)),22    "feedback": fields.Nested(feedback_fields, attribute="user_feedback", allow_null=True),23    "created_at": TimestampField,24}25 26 27class SavedMessageListApi(InstalledAppResource):28    saved_message_infinite_scroll_pagination_fields = {29        "limit": fields.Integer,30        "has_more": fields.Boolean,31        "data": fields.List(fields.Nested(message_fields)),32    }33 34    @marshal_with(saved_message_infinite_scroll_pagination_fields)35    def get(self, installed_app):36        app_model = installed_app.app37        if app_model.mode != "completion":38            raise NotCompletionAppError()39 40        parser = reqparse.RequestParser()41        parser.add_argument("last_id", type=uuid_value, location="args")42        parser.add_argument("limit", type=int_range(1, 100), required=False, default=20, location="args")43        args = parser.parse_args()44 45        return SavedMessageService.pagination_by_last_id(app_model, current_user, args["last_id"], args["limit"])46 47    def post(self, installed_app):48        app_model = installed_app.app49        if app_model.mode != "completion":50            raise NotCompletionAppError()51 52        parser = reqparse.RequestParser()53        parser.add_argument("message_id", type=uuid_value, required=True, location="json")54        args = parser.parse_args()55 56        try:57            SavedMessageService.save(app_model, current_user, args["message_id"])58        except MessageNotExistsError:59            raise NotFound("Message Not Exists.")60 61        return {"result": "success"}62 63 64class SavedMessageApi(InstalledAppResource):65    def delete(self, installed_app, message_id):66        app_model = installed_app.app67 68        message_id = str(message_id)69 70        if app_model.mode != "completion":71            raise NotCompletionAppError()72 73        SavedMessageService.delete(app_model, current_user, message_id)74 75        return {"result": "success"}76 77 78api.add_resource(79    SavedMessageListApi,80    "/installed-apps/<uuid:installed_app_id>/saved-messages",81    endpoint="installed_app_saved_messages",82)83api.add_resource(84    SavedMessageApi,85    "/installed-apps/<uuid:installed_app_id>/saved-messages/<uuid:message_id>",86    endpoint="installed_app_saved_message",87)88