'''

数据大屏模块api

'''

from flask import jsonify, request

from flask import Blueprint

from utils.auth import validate_user

from utils.web_utils import get_req_para, validate_params

from utils.common_utils import gen_json_response

from web_apps.bigscreen.services import ScreenService

from utils.storage_utils import storage

screen_bp = Blueprint('screen', __name__)





@screen_bp.route('/project/getOssInfo', methods=['GET'])

def get_oss_info():

    """

    获取oss bucket地址

    """

    req_dict = get_req_para(request)

    print(req_dict)

    bucket_url = storage.get_download_url('')

    res_data = gen_json_response(data={'bucketURL': bucket_url})

    return jsonify(res_data)





@screen_bp.route('/project/list', methods=['GET'])

@validate_user

def screen_list():

    """

    列表

    """

    req_dict = get_req_para(request)

    print(req_dict)

    res_data = ScreenService().get_obj_list(req_dict)

    return jsonify(res_data)





@screen_bp.route('/project/getData', methods=['GET'])

def screen_detail():

    """

    详情

    """

    req_dict = get_req_para(request)

    print(req_dict)

    res_data = ScreenService().get_obj_detail(req_dict)

    return jsonify(res_data)





@screen_bp.route('/project/upload', methods=['POST'])

@validate_user

def screen_upload():

    """

    上传

    """

    file = request.files.get('object', '')

    if file != '':

        file_name = file.filename

        file_type = file.filename.split('.')[-1]

        content = file.read()

        print(content)

        file_url = storage.save(file_name, content)

    else:

        res_data = gen_json_response(code=400, msg='文件获取失败')

        return jsonify(res_data)

    res_data = gen_json_response(data={'fileName': file_name})

    print(res_data)

    return jsonify(res_data)





@screen_bp.route('/project/create', methods=['POST'])

@validate_user

def screen_add():

    """

    添加

    """

    req_dict = get_req_para(request)

    print(req_dict)

    verify_dict = {

        'projectName': {

            'name': '项目名称',

            'not_empty': True

        }

    }

    not_valid = validate_params(req_dict, verify_dict)

    if not_valid:

        return gen_json_response(code=400, msg=not_valid)

    res_data = ScreenService().add_obj(req_dict)

    return jsonify(res_data)





@screen_bp.route('/project/edit', methods=['POST', 'PUT'])

@validate_user

def screen_edit():

    """

    更新

    """

    req_dict = get_req_para(request)

    print(req_dict)

    verify_dict = {

    }

    not_valid = validate_params(req_dict, verify_dict)

    if not_valid:

        return gen_json_response(code=400, msg=not_valid)

    res_data = ScreenService().update_obj(req_dict)

    return jsonify(res_data)





@screen_bp.route('/project/save/data', methods=['POST', 'PUT'])

@validate_user

def screen_save_data():

    """

    保存内容数据

    """

    req_dict = get_req_para(request)

    print(req_dict)

    verify_dict = {

    }

    not_valid = validate_params(req_dict, verify_dict)

    if not_valid:

        return gen_json_response(code=400, msg=not_valid)

    res_data = ScreenService().save_obj_data(req_dict)

    return jsonify(res_data)





@screen_bp.route('/project/publish', methods=['POST', 'PUT'])

@validate_user

def screen_publish():

    """

    发布/取消

    """

    req_dict = get_req_para(request)

    print(req_dict)

    verify_dict = {

    }

    not_valid = validate_params(req_dict, verify_dict)

    if not_valid:

        return gen_json_response(code=400, msg=not_valid)

    res_data = ScreenService().handle_publish_obj(req_dict)

    return jsonify(res_data)





@screen_bp.route('/project/delete', methods=['POST', 'DELETE'])

@validate_user

def screen_delete():

    """

    删除

    """

    args = request.args

    req_dict = args.to_dict()

    res_data = ScreenService().delete_obj(req_dict)

    return jsonify(res_data)