예제 #1
0
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)
예제 #2
0
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)
예제 #3
0
 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)
예제 #4
0
 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)
예제 #5
0
 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)
예제 #6
0
 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)
예제 #7
0
 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)
예제 #8
0
 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)
예제 #9
0
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})
예제 #10
0
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)
예제 #11
0
def home():
    return Render.htmlTemplate('home/dashboard.html')
예제 #12
0
def backtest():
    return Render.htmlTemplate('home/backtest.html')
예제 #13
0
def orders():
    return Render.htmlTemplate('home/orders.html')
예제 #14
0
def perf():
    return Render.htmlTemplate('home/perf.html')
예제 #15
0
def markets():
    return Render.htmlTemplate('home/markets.html')
예제 #16
0
def test():
    return Render.htmlTemplate('home/test.html')
예제 #17
0
def index():
    return Render.htmlTemplate('home/index.html')
예제 #18
0
def bot():
    return Render.htmlTemplate('bot/index.html')