Code source de app.base.routes

# -*- encoding: utf-8 -*-
"""
Modified for GRID, 2021

Copyright (c) 2019 - present AppSeed.us

Gère les routines des connnexions et inscription
"""

from flask import jsonify, render_template, redirect, request, url_for
from flask_login import (
    current_user,
    login_required,
    login_user,
    logout_user
)
import pandas

from app import db, login_manager

from app.base import blueprint
from app.base.forms import LoginForm, CreateAccountForm
from app.base.models import User

from app.base.util import verify_pass

import plotly
import plotly.graph_objs as go

import pandas as pd
import numpy as np
import json

import run
from agri_data import data_draw

[docs]@blueprint.route('/') def route_default(): return redirect(url_for('base_blueprint.login'))
## Login & Registration
[docs]@blueprint.route('/login', methods=['GET', 'POST']) def login(): login_form = LoginForm(request.form) if 'login' in request.form: # read form data username = request.form['username'] password = request.form['password'] # Locate user user = User.query.filter_by(username=username).first() # Check the password if user and verify_pass( password, user.password): login_user(user) data_draw.RandomDraw().main() render = run.index() return render # Something (user or pass) is not ok return render_template( 'accounts/login.html', msg='Wrong user or password', form=login_form) if not current_user.is_authenticated: return render_template( 'accounts/login.html', form=login_form) render = run.index() return render
[docs]@blueprint.route('/register', methods=['GET', 'POST']) def register(): login_form = LoginForm(request.form) create_account_form = CreateAccountForm(request.form) if 'register' in request.form: username = request.form['username'] email = request.form['email' ] # Check usename exists user = User.query.filter_by(username=username).first() if user: return render_template( 'accounts/register.html', msg='Username already registered', success=False, form=create_account_form) # Check email exists user = User.query.filter_by(email=email).first() if user: return render_template( 'accounts/register.html', msg='Email already registered', success=False, form=create_account_form) # else we can create the user user = User(**request.form) db.session.add(user) db.session.commit() return render_template( 'accounts/register.html', msg='User created please <a href="/login">login</a>', success=True, form=create_account_form) else: return render_template( 'accounts/register.html', form=create_account_form)
[docs]@blueprint.route('/logout') def logout(): logout_user() return redirect(url_for('base_blueprint.login'))
[docs]@blueprint.route('/shutdown') def shutdown(): func = request.environ.get('werkzeug.server.shutdown') if func is None: raise RuntimeError('Not running with the Werkzeug Server') func() return 'Server shutting down...'
## Errors
[docs]@login_manager.unauthorized_handler def unauthorized_handler(): return render_template('page-403.html'), 403
[docs]@blueprint.errorhandler(403) def access_forbidden(error): return render_template('page-403.html'), 403
[docs]@blueprint.errorhandler(404) def not_found_error(error): return render_template('page-404.html'), 404
[docs]@blueprint.errorhandler(500) def internal_error(error): return render_template('page-500.html'), 500