more struture and codes for application

This commit is contained in:
Luiz Gustavo Costa (gugabsd) 2013-01-07 16:09:05 -02:00
parent 0c03506c24
commit af4ea865a7
12 changed files with 183 additions and 0 deletions

View File

@ -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

Binary file not shown.

2
app/libs/__init__.py Normal file
View File

@ -0,0 +1,2 @@
# -*- coding: utf-8 -*-

8
app/libs/forms.py Normal file
View 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
View 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
View 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
View 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
View 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
View 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)

View File

@ -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)