Underground-Digital/Workflow-Engine
0
1from flask_login import current_user2from flask_restful import Resource, fields, marshal_with, reqparse3 4from constants.languages import languages5from controllers.console import api6from controllers.console.wraps import account_initialization_required7from libs.login import login_required8from services.recommended_app_service import RecommendedAppService9 10app_fields = {11 "id": fields.String,12 "name": fields.String,13 "mode": fields.String,14 "icon": fields.String,15 "icon_background": fields.String,16}17 18recommended_app_fields = {19 "app": fields.Nested(app_fields, attribute="app"),20 "app_id": fields.String,21 "description": fields.String(attribute="description"),22 "copyright": fields.String,23 "privacy_policy": fields.String,24 "custom_disclaimer": fields.String,25 "category": fields.String,26 "position": fields.Integer,27 "is_listed": fields.Boolean,28}29 30recommended_app_list_fields = {31 "recommended_apps": fields.List(fields.Nested(recommended_app_fields)),32 "categories": fields.List(fields.String),33}34 35 36class RecommendedAppListApi(Resource):37 @login_required38 @account_initialization_required39 @marshal_with(recommended_app_list_fields)40 def get(self):41 # language args42 parser = reqparse.RequestParser()43 parser.add_argument("language", type=str, location="args")44 args = parser.parse_args()45 46 if args.get("language") and args.get("language") in languages:47 language_prefix = args.get("language")48 elif current_user and current_user.interface_language:49 language_prefix = current_user.interface_language50 else:51 language_prefix = languages[0]52 53 return RecommendedAppService.get_recommended_apps_and_categories(language_prefix)54 55 56class RecommendedAppApi(Resource):57 @login_required58 @account_initialization_required59 def get(self, app_id):60 app_id = str(app_id)61 return RecommendedAppService.get_recommend_app_detail(app_id)62 63 64api.add_resource(RecommendedAppListApi, "/explore/apps")65api.add_resource(RecommendedAppApi, "/explore/apps/<uuid:app_id>")66 