| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 | from flask_login import current_userfrom flask_restful import Resource, fields, marshal_with, reqparsefrom constants.languages import languagesfrom controllers.console import apifrom controllers.console.wraps import account_initialization_requiredfrom libs.login import login_requiredfrom services.recommended_app_service import RecommendedAppServiceapp_fields = {    "id": fields.String,    "name": fields.String,    "mode": fields.String,    "icon": fields.String,    "icon_background": fields.String,}recommended_app_fields = {    "app": fields.Nested(app_fields, attribute="app"),    "app_id": fields.String,    "description": fields.String(attribute="description"),    "copyright": fields.String,    "privacy_policy": fields.String,    "custom_disclaimer": fields.String,    "category": fields.String,    "position": fields.Integer,    "is_listed": fields.Boolean,}recommended_app_list_fields = {    "recommended_apps": fields.List(fields.Nested(recommended_app_fields)),    "categories": fields.List(fields.String),}class RecommendedAppListApi(Resource):    @login_required    @account_initialization_required    @marshal_with(recommended_app_list_fields)    def get(self):        # language args        parser = reqparse.RequestParser()        parser.add_argument("language", type=str, location="args")        args = parser.parse_args()        if args.get("language") and args.get("language") in languages:            language_prefix = args.get("language")        elif current_user and current_user.interface_language:            language_prefix = current_user.interface_language        else:            language_prefix = languages[0]        return RecommendedAppService.get_recommended_apps_and_categories(language_prefix)class RecommendedAppApi(Resource):    @login_required    @account_initialization_required    def get(self, app_id):        app_id = str(app_id)        return RecommendedAppService.get_recommend_app_detail(app_id)api.add_resource(RecommendedAppListApi, "/explore/apps")api.add_resource(RecommendedAppApi, "/explore/apps/<uuid:app_id>")
 |