"""
Routers for /v1/UI/analysis url.
"""
import logging
import json
from flask import abort
from flask_restful import Resource
from analysis.ui.parser import UI_ANALYSIS_GET_PARSER
from analysis.ui.config import UiConfig
from analysis.engine import transfer_web
from analysis.ui.util import authenticate
LOGGER = logging.getLogger(__name__)
CORS = [('Access-Control-Allow-Origin', '*')]
class UiAnalysis(Resource):
"""restful api for web ui analysis page"""
method_decorators = [authenticate]
def get(self, cmd):
"""restful api get"""
if not cmd:
abort(404, 'does not get command')
args = UI_ANALYSIS_GET_PARSER.parse_args()
if not UiConfig.db_enable:
if cmd == 'initialPage':
return transfer_web.get_analysis_list()
if cmd == 'rename':
name = args.get('name')
new_name = args.get('newName')
return transfer_web.rename_analysis_file(name, new_name)
if cmd == 'chooseFile':
name = args.get('name')
return json.dumps({'isExist': transfer_web.analysis_exist(name)}), 200, CORS
if cmd == 'getAnalysisData':
name = args.get('name')
csv_line = int(args.get('csvLine'))
log_line = int(args.get('logLine'))
if not transfer_web.analysis_exist(name):
return json.dumps({'isExist': False}), 200, CORS
return json.dumps(transfer_web.get_analysis_details(name, csv_line, log_line)), \
200, CORS
if cmd == 'compareWith':
name = args.get('name')
line = int(args.get('csvLine'))
if not transfer_web.analysis_exist(name):
return json.dumps({'isExist': False}), 200, CORS
return json.dumps(transfer_web.get_analysis_details(name, line, -1)), 200, CORS
return '', 200, CORS
from analysis.ui.database import trigger_analysis
if cmd == 'initialPage':
uid = args.get('uid')
res = trigger_analysis.count_analysis_list(int(uid))
return json.dumps({'count': res}), 200, CORS
if cmd == 'getList':
uid = int(args.get('uid'))
page_num = int(args.get('pageNum'))
page_size = int(args.get('pageSize'))
list = trigger_analysis.get_analysis_list(uid, page_num, page_size)
return json.dumps({'data': list}), 200, CORS
if cmd == 'rename':
name = args.get('name')
new_name = args.get('newName')
res, reason = trigger_analysis.rename_collection(name, new_name)
return json.dumps({'rename': res, 'reason': reason}), 200, CORS
if cmd == 'chooseFile':
name = args.get('name')
res = trigger_analysis.collection_exist(name)
return json.dumps({'isExist': res}), 200, CORS
if cmd == 'compareWith':
name = args.get('name')
line = args.get('csvLine')
response_obj = trigger_analysis.get_compare_collection(name, int(line))
return json.dumps(response_obj), 200, CORS
if cmd == 'getAnalysisData':
cid = args.get('cid')
csv_line = args.get('csvLine')
log_line = args.get('logLine')
response_obj = trigger_analysis.get_analysis_data(int(cid), int(csv_line), int(log_line))
return json.dumps(response_obj), 200, CORS
if cmd == 'updateDescription':
cid = args.get('cid')
description = args.get('description')
res = trigger_analysis.update_analysis_description(cid, description)
return json.dumps({'status': res}), 200, CORS
return '', 200, CORS