def login(): error = None if request.method == 'POST': # Entrée dans les logs # Recuperation des Parametres Utilisateurs username = request.form['username'] password = request.form['password'] userIp = request.remote_addr # [ETAPE 1] - Verification si le user est bloqué par son IP if Auth.isIpBlocked(ip=userIp): return Render.htmlTemplate("login.html", data="Votre IP est bloqué") # [ETAPE 2] - Vérifier si l'utilisateur a précédemment échoué ses tentatives de connexion if Auth.getFailedLoginByUser(username=username): return Render.htmlTemplate( "login.html", data= "Vous avez dépassé le nombre de tentatives possibles, veuillez réessayer plus tard" ) # [ETAPE 3] - Obtenir l'utilisateur de la base de données if not Auth.checkUser(username=username, password=password, ip=userIp): return Render.htmlTemplate( "login.html", data= "Les Informations d'identification sont invalides. Veuillez réessayer." ) else: # Redirection vers l'accueil print("Connexion reussi pour : {}".format(Session.getUserId())) return redirect(url_for('home.home')) else: return Render.htmlTemplate('login.html', data=error)
def marketsEdit(idCrypt): # Recuperation des ressources statiques Bokeh js_resources = INLINE.render_js() css_resources = INLINE.render_css() # Creation de la Strategie stgyObj = StgyFactory("DEV").make() # Decryptage id idDecrypt = Crypt.decode(cfg._APP_SECRET_KEY, idCrypt) # Recuperation des infos data = MarketsModel().getMarketById(idDecrypt).to_dict('Records') # Recuperation des prix stgyObj.run(symbol=data[0]['symbol'], ut='H1') # Recuperation des Ordres df_orders = OrdersModel().getOrdersBySymbol(symbol=data[0]['symbol']) # Construction du Graphique avec Ordres graph = stgyObj.plot() graph.addOrders(df_orders) script, div = components(graph.save()) # Preparation des données de la page data = { 'id': idCrypt, # Graphique 'plot_div': div, 'plot_script': script, 'js_resources': js_resources, 'css_resources': css_resources } # Renvoi de la page return Render.htmlTemplate('home/marketEdit.html', data=data)
def exceptions(e): """ logger = Logger() logger.pid = Session.getPid() logger.user = Session.getUserDisplay() # ---------------------------------------------------- # Trace dans l'activité d'une erreur dans activity.log logger.error('{APP_NAME} à rencontré une erreur'.format(APP_NAME=cfg._APP_NAME)) # ---------------------------------------------------- # Trace de l'exception dans un fichier à part # import traceback # traceback.print_exc() logger.critical( nom=exc_type.__name__, message=str(exc_value), trace=exc_tb ) """ # Recuperation ERREUR et trace dans Activité exc_type, exc_value, exc_tb = sys.exc_info() # print(exc_value) # loggerAct.exception(e) # Renvoi Erreur if Utils.isAjaxRequest(request) is True: return Render.jsonTemplate( operation='OOPS !! Une erreur est arrivé', message='{MESSAGE}'.format(MESSAGE=exc_value), categorie="ERROR", code=500) return Render.htmlTemplate("errors/{}.html".format(str(500)), data=None, code=500)
def unauthentified(error): if request.path.startswith("/api/"): return Render.jsonTemplate(operation='Utilisateur deconnecté', message='Acces refusé par le serveur', categorie="ERROR", code=error.code) return Render.htmlTemplate("errors/{}.html".format(error.code), data=None, code=error.code)
def incorrect_request(error): if request.path.startswith("/api/"): return Render.jsonTemplate( operation='OOPS !! Une erreur est arrivé', message='Methode Non Autorisé ou CSRF Incorrecte', categorie="ERROR", code=error.code) return Render.htmlTemplate("errors/{}.html".format(error.code), data=None, code=error.code)
def page_not_found_error(error): if request.path.startswith("/api/"): return Render.jsonTemplate(operation='Chemin inconnu', message="L'URL est inconnu : {}".format( request.path), categorie="ERROR", code=error.code) return Render.htmlTemplate("errors/{}.html".format(error.code), data=None, code=error.code)
def unauthorised(error): if request.path.startswith("/api/"): return Render.jsonTemplate( operation='Accés Interdit', message='Accés interdit à cette fonctionnalité', categorie="ERROR", code=error.code) return Render.htmlTemplate("errors/{}.html".format(error.code), data=None, code=error.code)
def bad_request(error): if request.path.startswith("/api/"): return Render.jsonTemplate( operation='Mauvaise Requete', message="La requête n'a pas pu être comprise par le serveur", categorie="ERROR", code=error.code) return Render.htmlTemplate("errors/{}.html".format(error.code), data=None, code=error.code)
def changelog(): # Ouverture du fichier readme_file = open(cfg._INIT_DIR + os.sep + "CHANGELOG.md", "r", encoding="UTF-8") # Conversion du Markdown md_template_string = markdown.markdown(readme_file.read(), extensions=["fenced_code"]) # Affichage template return Render.htmlTemplate('home/changelog.html', data={"markdown": md_template_string})
def dev(): # Recuperation des ressources statiques Bokeh js_resources = INLINE.render_js() css_resources = INLINE.render_css() # Creation de la Strategie stgyObj = StgyFactory("DEV").make() # Recuperation des prix stgyObj.run(symbol='EURUSD', ut='H1') # Recuperation des Ordres df_orders = OrdersModel().getOrdersBySymbol(symbol='EURUSD') # Construction du Graphique avec Ordres graph = stgyObj.plot() graph.addOrders(df_orders) script, div = components(graph.save()) # Preparation des données de la page data = { # Graphique 'plot_div': div, 'plot_script': script, 'js_resources': js_resources, 'css_resources': css_resources } return Render.htmlTemplate('dev/dev.html', data=data)
def home(): return Render.htmlTemplate('home/dashboard.html')
def backtest(): return Render.htmlTemplate('home/backtest.html')
def orders(): return Render.htmlTemplate('home/orders.html')
def perf(): return Render.htmlTemplate('home/perf.html')
def markets(): return Render.htmlTemplate('home/markets.html')
def test(): return Render.htmlTemplate('home/test.html')
def index(): return Render.htmlTemplate('home/index.html')
def bot(): return Render.htmlTemplate('bot/index.html')