Team Ai
Apppublic

Underground-Digital/Workflow-Engine

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
saved_message.py75 linesDownload Raw Back to web
1from flask_restful import fields, marshal_with, reqparse2from flask_restful.inputs import int_range3from werkzeug.exceptions import NotFound4 5from controllers.web import api6from controllers.web.error import NotCompletionAppError7from controllers.web.wraps import WebApiResource8from fields.conversation_fields import message_file_fields9from libs.helper import TimestampField, uuid_value10from services.errors.message import MessageNotExistsError11from services.saved_message_service import SavedMessageService12 13feedback_fields = {"rating": fields.String}14 15message_fields = {16    "id": fields.String,17    "inputs": fields.Raw,18    "query": fields.String,19    "answer": fields.String,20    "message_files": fields.List(fields.Nested(message_file_fields)),21    "feedback": fields.Nested(feedback_fields, attribute="user_feedback", allow_null=True),22    "created_at": TimestampField,23}24 25 26class SavedMessageListApi(WebApiResource):27    saved_message_infinite_scroll_pagination_fields = {28        "limit": fields.Integer,29        "has_more": fields.Boolean,30        "data": fields.List(fields.Nested(message_fields)),31    }32 33    @marshal_with(saved_message_infinite_scroll_pagination_fields)34    def get(self, app_model, end_user):35        if app_model.mode != "completion":36            raise NotCompletionAppError()37 38        parser = reqparse.RequestParser()39        parser.add_argument("last_id", type=uuid_value, location="args")40        parser.add_argument("limit", type=int_range(1, 100), required=False, default=20, location="args")41        args = parser.parse_args()42 43        return SavedMessageService.pagination_by_last_id(app_model, end_user, args["last_id"], args["limit"])44 45    def post(self, app_model, end_user):46        if app_model.mode != "completion":47            raise NotCompletionAppError()48 49        parser = reqparse.RequestParser()50        parser.add_argument("message_id", type=uuid_value, required=True, location="json")51        args = parser.parse_args()52 53        try:54            SavedMessageService.save(app_model, end_user, args["message_id"])55        except MessageNotExistsError:56            raise NotFound("Message Not Exists.")57 58        return {"result": "success"}59 60 61class SavedMessageApi(WebApiResource):62    def delete(self, app_model, end_user, message_id):63        message_id = str(message_id)64 65        if app_model.mode != "completion":66            raise NotCompletionAppError()67 68        SavedMessageService.delete(app_model, end_user, message_id)69 70        return {"result": "success"}71 72 73api.add_resource(SavedMessageListApi, "/saved-messages")74api.add_resource(SavedMessageApi, "/saved-messages/<uuid:message_id>")75