mirror of https://github.com/CIRCL/AIL-framework
144 lines
5.2 KiB
Python
144 lines
5.2 KiB
Python
#!/usr/bin/env python3
|
|
# -*-coding:UTF-8 -*
|
|
|
|
'''
|
|
Flask functions and routes for the trending modules page
|
|
'''
|
|
# import os
|
|
# import sys
|
|
# import datetime
|
|
# import flask
|
|
# from flask import Flask, render_template, jsonify, request, Blueprint
|
|
#
|
|
# from Role_Manager import login_admin, login_read_only
|
|
# from flask_login import login_required
|
|
#
|
|
# sys.path.append(os.environ['AIL_BIN'])
|
|
# ##################################
|
|
# # Import Project packages
|
|
# ##################################
|
|
# from packages.Date import Date
|
|
#
|
|
# # ============ VARIABLES ============
|
|
# import Flask_config
|
|
#
|
|
# app = Flask_config.app
|
|
# baseUrl = Flask_config.baseUrl
|
|
# r_serv_charts = Flask_config.r_serv_charts
|
|
#
|
|
# trendingmodules = Blueprint('trendingmodules', __name__, template_folder='templates')
|
|
#
|
|
# # ============ FUNCTIONS ============
|
|
#
|
|
# # Iterate over elements in the module provided and return the today data or the last data
|
|
# # return format: [('passed_days', num_of_passed_days), ('elem_name1', elem_value1), ('elem_name2', elem_value2)]]
|
|
# def get_top_relevant_data(server, module_name):
|
|
# days = 0
|
|
# for date in get_date_range(15):
|
|
# redis_progression_name_set = 'top_'+ module_name +'_set_' + date
|
|
# member_set = server.zrevrangebyscore(redis_progression_name_set, '+inf', '-inf', withscores=True)
|
|
#
|
|
# if len(member_set) == 0: #No data for this date
|
|
# days += 1
|
|
# else:
|
|
# member_set.insert(0, ("passed_days", days))
|
|
# return member_set
|
|
#
|
|
#
|
|
# def get_date_range(num_day):
|
|
# curr_date = datetime.date.today()
|
|
# date = Date(str(curr_date.year)+str(curr_date.month).zfill(2)+str(curr_date.day).zfill(2))
|
|
# date_list = []
|
|
#
|
|
# for i in range(0, num_day+1):
|
|
# date_list.append(date.substract_day(i))
|
|
# return date_list
|
|
#
|
|
# # ============ ROUTES ============
|
|
#
|
|
# @trendingmodules.route("/_moduleCharts", methods=['GET'])
|
|
# @login_required
|
|
# @login_read_only
|
|
# def modulesCharts():
|
|
# keyword_name = request.args.get('keywordName')
|
|
# module_name = request.args.get('moduleName')
|
|
# bar_requested = True if request.args.get('bar') == "true" else False
|
|
#
|
|
# if (bar_requested):
|
|
# num_day = int(request.args.get('days'))
|
|
# bar_values = []
|
|
#
|
|
# date_range = get_date_range(num_day)
|
|
# # Retreive all data from the last num_day
|
|
# for date in date_range:
|
|
# curr_value = r_serv_charts.hget(date, module_name+'-'+keyword_name)
|
|
# bar_values.append([date[0:4]+'/'+date[4:6]+'/'+date[6:8], int(curr_value if curr_value is not None else 0)])
|
|
# bar_values.insert(0, keyword_name)
|
|
# return jsonify(bar_values)
|
|
#
|
|
# else:
|
|
# member_set = get_top_relevant_data(r_serv_charts, module_name)
|
|
# member_set = member_set if member_set is not None else []
|
|
# if len(member_set) == 0:
|
|
# member_set.append(("No relevant data", int(100)))
|
|
# return jsonify(member_set)
|
|
#
|
|
#
|
|
# @trendingmodules.route("/_providersChart", methods=['GET'])
|
|
# @login_required
|
|
# @login_read_only
|
|
# def providersChart():
|
|
# keyword_name = request.args.get('keywordName')
|
|
# module_name = request.args.get('moduleName')
|
|
# bar_requested = True if request.args.get('bar') == "true" else False
|
|
#
|
|
# if (bar_requested):
|
|
# num_day = int(request.args.get('days'))
|
|
# bar_values = []
|
|
#
|
|
# date_range = get_date_range(num_day)
|
|
# # Retreive all data from the last num_day
|
|
# for date in date_range:
|
|
# curr_value_size = ( r_serv_charts.hget(keyword_name+'_'+'size', date) )
|
|
# if curr_value_size is not None:
|
|
# curr_value_size = curr_value_size
|
|
#
|
|
# curr_value_num = r_serv_charts.hget(keyword_name+'_'+'num', date)
|
|
#
|
|
# curr_value_size_avg = r_serv_charts.hget(keyword_name+'_'+'avg', date)
|
|
# if curr_value_size_avg is not None:
|
|
# curr_value_size_avg = curr_value_size_avg
|
|
#
|
|
#
|
|
# if module_name == "size":
|
|
# curr_value = float(curr_value_size_avg if curr_value_size_avg is not None else 0)
|
|
# else:
|
|
# curr_value = float(curr_value_num if curr_value_num is not None else 0.0)
|
|
#
|
|
# bar_values.append([date[0:4]+'/'+date[4:6]+'/'+date[6:8], curr_value])
|
|
# bar_values.insert(0, keyword_name)
|
|
# return jsonify(bar_values)
|
|
#
|
|
# else:
|
|
# #redis_provider_name_set = 'top_size_set' if module_name == "size" else 'providers_set'
|
|
# redis_provider_name_set = 'top_avg_size_set_' if module_name == "size" else 'providers_set_'
|
|
# redis_provider_name_set = redis_provider_name_set + get_date_range(0)[0]
|
|
#
|
|
# member_set = r_serv_charts.zrevrangebyscore(redis_provider_name_set, '+inf', '-inf', withscores=True, start=0, num=8)
|
|
#
|
|
# # Member set is a list of (value, score) pairs
|
|
# if len(member_set) == 0:
|
|
# member_set.append(("No relevant data", float(100)))
|
|
# return jsonify(member_set)
|
|
#
|
|
#
|
|
# @trendingmodules.route("/moduletrending/")
|
|
# @login_required
|
|
# @login_read_only
|
|
# def moduletrending():
|
|
# return render_template("Moduletrending.html")
|
|
#
|
|
#
|
|
# # ========= REGISTRATION =========
|
|
# app.register_blueprint(trendingmodules, url_prefix=baseUrl)
|