#!/usr/bin/env python3 # -*-coding:UTF-8 -* # ''' # Flask functions and routes for the trending modules page # ''' # import os # import sys # import datetime # import calendar # 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 # r_serv_sentiment = Flask_config.r_serv_sentiment # # sentiments = Blueprint('sentiments', __name__, template_folder='templates') # # # ============ FUNCTIONS ============ # # 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 ============ # # @sentiments.route("/sentiment_analysis_trending/") # @login_required # @login_read_only # def sentiment_analysis_trending(): # return render_template("sentiment_analysis_trending.html") # # # @sentiments.route("/sentiment_analysis_getplotdata/", methods=['GET']) # @login_required # @login_read_only # def sentiment_analysis_getplotdata(): # # Get the top providers based on number of pastes # oneHour = 60*60 # sevenDays = oneHour*24*7 # dateStart = datetime.datetime.now() # dateStart = dateStart.replace(minute=0, second=0, microsecond=0) # dateStart_timestamp = calendar.timegm(dateStart.timetuple()) # # getAllProviders = request.args.get('getProviders') # provider = request.args.get('provider') # allProvider = request.args.get('all') # if getAllProviders == 'True': # if allProvider == "True": # range_providers = r_serv_charts.smembers('all_provider_set') # # return jsonify(list(range_providers)) # else: # range_providers = r_serv_charts.zrevrangebyscore('providers_set_'+ get_date_range(0)[0], '+inf', '-inf', start=0, num=8) # # if empty, get yesterday top providers # range_providers = r_serv_charts.zrevrangebyscore('providers_set_'+ get_date_range(1)[1], '+inf', '-inf', start=0, num=8) if range_providers == [] else range_providers # # # # if still empty, takes from all providers # if range_providers == []: # print('today provider empty') # range_providers = r_serv_charts.smembers('all_provider_set') # # return jsonify(list(range_providers)) # # elif provider is not None: # to_return = {} # # cur_provider_name = provider + '_' # list_date = {} # for cur_timestamp in range(int(dateStart_timestamp), int(dateStart_timestamp)-sevenDays-oneHour, -oneHour): # cur_set_name = cur_provider_name + str(cur_timestamp) # # list_value = [] # for cur_id in r_serv_sentiment.smembers(cur_set_name): # cur_value = (r_serv_sentiment.get(cur_id)) # list_value.append(cur_value) # list_date[cur_timestamp] = list_value # to_return[provider] = list_date # # return jsonify(to_return) # return "Bad request" # # # # @sentiments.route("/sentiment_analysis_plot_tool/") # @login_required # @login_read_only # def sentiment_analysis_plot_tool(): # return render_template("sentiment_analysis_plot_tool.html") # # # # @sentiments.route("/sentiment_analysis_plot_tool_getdata/", methods=['GET']) # @login_required # @login_read_only # def sentiment_analysis_plot_tool_getdata(): # getProviders = request.args.get('getProviders') # # if getProviders == 'True': # providers = [] # for cur_provider in r_serv_charts.smembers('all_provider_set'): # providers.append(cur_provider) # return jsonify(providers) # # else: # query = request.args.get('query') # query = query.split(',') # Qdate = request.args.get('Qdate') # # date1 = (Qdate.split('-')[0]).split('/') # date1 = datetime.date(int(date1[2]), int(date1[0]), int(date1[1])) # # date2 = (Qdate.split('-')[1]).split('/') # date2 = datetime.date(int(date2[2]), int(date2[0]), int(date2[1])) # # timestamp1 = calendar.timegm(date1.timetuple()) # timestamp2 = calendar.timegm(date2.timetuple()) # # oneHour = 60*60 # oneDay = oneHour*24 # # to_return = {} # for cur_provider in query: # list_date = {} # cur_provider_name = cur_provider + '_' # for cur_timestamp in range(int(timestamp1), int(timestamp2)+oneDay, oneHour): # cur_set_name = cur_provider_name + str(cur_timestamp) # # list_value = [] # for cur_id in r_serv_sentiment.smembers(cur_set_name): # cur_value = (r_serv_sentiment.get(cur_id)) # list_value.append(cur_value) # list_date[cur_timestamp] = list_value # to_return[cur_provider] = list_date # # return jsonify(to_return) # # # ========= REGISTRATION ========= # app.register_blueprint(sentiments, url_prefix=baseUrl)