more struture and codes for application
This commit is contained in:
parent
0c03506c24
commit
af4ea865a7
@ -0,0 +1,26 @@
|
|||||||
|
from flask import Flask, render_template, session
|
||||||
|
from flask_sqlalchemy import SQLAlchemy
|
||||||
|
from locale import setlocale, LC_ALL
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
app = Flask(__name__)
|
||||||
|
app.config.from_object('config')
|
||||||
|
|
||||||
|
# Configura locale para pt_BR
|
||||||
|
setlocale(LC_ALL, "pt_BR.UTF-8")
|
||||||
|
|
||||||
|
db = SQLAlchemy(app)
|
||||||
|
|
||||||
|
@app.errorhandler(404)
|
||||||
|
def not_found(error):
|
||||||
|
return render_template('404.html'), 404
|
||||||
|
|
||||||
|
@app.context_processor
|
||||||
|
def contexto_para_templates():
|
||||||
|
return dict(
|
||||||
|
login=session.get('login') if session.get('login') else "",
|
||||||
|
data=unicode(datetime.today().strftime(
|
||||||
|
"%A, %d de %B de %Y"
|
||||||
|
), 'utf8')
|
||||||
|
)
|
||||||
|
|
BIN
app/__init__.pyc
Normal file
BIN
app/__init__.pyc
Normal file
Binary file not shown.
2
app/libs/__init__.py
Normal file
2
app/libs/__init__.py
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
8
app/libs/forms.py
Normal file
8
app/libs/forms.py
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from flask.ext.wtf import Form, TextField, PasswordField, validators
|
||||||
|
|
||||||
|
class FormLogin(Form):
|
||||||
|
""" Formulário de login """
|
||||||
|
login = TextField('login', [validators.Length(min=3, max=30)])
|
||||||
|
senha = PasswordField('senha', [validators.Length(min=3, max=30)])
|
47
app/models.py
Normal file
47
app/models.py
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from app import db
|
||||||
|
|
||||||
|
class Usuario(db.Model):
|
||||||
|
__tablename__ = 'usuario'
|
||||||
|
id = db.Column(db.Integer, primary_key=True)
|
||||||
|
ligado = db.Column(db.Boolean)
|
||||||
|
login = db.Column(db.String(50), unique=True)
|
||||||
|
senha = db.Column(db.String(200))
|
||||||
|
perfil = db.Column(db.String(80))
|
||||||
|
nome = db.Column(db.String(150))
|
||||||
|
email = db.Column(db.String(120))
|
||||||
|
telefone = db.Column(db.String(15))
|
||||||
|
descricao = db.Column(db.Text)
|
||||||
|
grupo = db.Column(db.Integer)
|
||||||
|
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
ligado,
|
||||||
|
login,
|
||||||
|
senha,
|
||||||
|
perfil,
|
||||||
|
nome,
|
||||||
|
email,
|
||||||
|
telefone,
|
||||||
|
descricao,
|
||||||
|
grupo
|
||||||
|
):
|
||||||
|
self.ligado = ligado
|
||||||
|
self.login = login
|
||||||
|
self.senha = senha
|
||||||
|
self.perfil = perfil
|
||||||
|
self.nome = nome
|
||||||
|
self.email = email
|
||||||
|
self.telefone = telefone
|
||||||
|
self.descricao = descricao
|
||||||
|
self.grupo = grupo
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return "<User('%s','%s','%s','%s','%s')>" % (
|
||||||
|
self.login,
|
||||||
|
self.perfil,
|
||||||
|
self.nome,
|
||||||
|
self.email,
|
||||||
|
self.telefone
|
||||||
|
)
|
19
app/templates/login.html
Normal file
19
app/templates/login.html
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Tela de Login</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<form method="POST" action="/login">
|
||||||
|
{{ form.hidden_tag() }}
|
||||||
|
|
||||||
|
{{ form.login(size=30) }}
|
||||||
|
|
||||||
|
{{ form.senha(size=30) }}
|
||||||
|
|
||||||
|
<button type="submit">Entrar</button>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
56
app/views/login.py
Normal file
56
app/views/login.py
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from flask import request, redirect, render_template, url_for, flash
|
||||||
|
from flask.ext.login import (LoginManager, login_required,
|
||||||
|
login_user, logout_user, UserMixin)
|
||||||
|
|
||||||
|
from app import app
|
||||||
|
from app.libs.forms import FormLogin
|
||||||
|
import app.models as modelos
|
||||||
|
|
||||||
|
# flask-login - Configurações de Autenticação:
|
||||||
|
login_manager = LoginManager()
|
||||||
|
login_manager.setup_app(app)
|
||||||
|
login_manager.login_view = "login"
|
||||||
|
|
||||||
|
class User(UserMixin):
|
||||||
|
def __init__(self, name, id, active=True):
|
||||||
|
self.name = name
|
||||||
|
self.id = id
|
||||||
|
self.active = active
|
||||||
|
|
||||||
|
def is_active(self):
|
||||||
|
return self.active
|
||||||
|
|
||||||
|
@login_manager.user_loader
|
||||||
|
def load_user(id):
|
||||||
|
usuario = modelos.Usuario.query.get(int(id))
|
||||||
|
return User(usuario.login, usuario.id)
|
||||||
|
|
||||||
|
login_manager.setup_app(app)
|
||||||
|
|
||||||
|
@app.route('/login', methods=['GET', 'POST'])
|
||||||
|
def login():
|
||||||
|
form = FormLogin(request.form)
|
||||||
|
if request.method == 'POST' and form.validate():
|
||||||
|
_login = request.form['login']
|
||||||
|
_senha = request.form['senha']
|
||||||
|
|
||||||
|
_em_db = modelos.Usuario.query.filter_by(login = _login).first()
|
||||||
|
if (_em_db):
|
||||||
|
if ( _login == _em_db.login and _senha == _em_db.senha):
|
||||||
|
login_user(User(_em_db.login, _em_db.id))
|
||||||
|
redirect(request.args.get("next") or url_for("index"))
|
||||||
|
else:
|
||||||
|
flash(unicode("Senha Invalida", "UTF-8"))
|
||||||
|
return render_template("login.html", form=form)
|
||||||
|
else:
|
||||||
|
flash(unicode("Usuário não existe", "UTF-8"))
|
||||||
|
return render_template("login.html", form=form)
|
||||||
|
|
||||||
|
@app.route('/logout')
|
||||||
|
@login_required
|
||||||
|
def logout():
|
||||||
|
""" Define a remoção da sessão do usuário """
|
||||||
|
logout_user()
|
||||||
|
return redirect('/')
|
8
app/views/main.py
Normal file
8
app/views/main.py
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from flask import render_template
|
||||||
|
from app import app
|
||||||
|
|
||||||
|
@app.route("/")
|
||||||
|
def index():
|
||||||
|
return render_template('principal.html')
|
11
config.py
Normal file
11
config.py
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import os
|
||||||
|
_basedir = os.path.abspath(os.path.dirname(__file__))
|
||||||
|
|
||||||
|
DEBUG = False
|
||||||
|
|
||||||
|
SECRET_KEY = 'niuddm7nh235hybh786f67vtbcawkiknl/'
|
||||||
|
|
||||||
|
PATH_DB = os.path.join("./db", "main.db")
|
||||||
|
SQLALCHEMY_DATABASE_URI = 'sqlite:///%s' % (PATH_DB)
|
@ -0,0 +1,6 @@
|
|||||||
|
from app import app
|
||||||
|
from app import db
|
||||||
|
|
||||||
|
db.create_all()
|
||||||
|
|
||||||
|
app.run(host='0.0.0.0', port=8000, debug=True)
|
Loading…
x
Reference in New Issue
Block a user