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