| 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>')
 |