From af4ea865a7d6e01c5307a3ed27693e8335e9744a Mon Sep 17 00:00:00 2001 From: "Luiz Gustavo Costa (gugabsd)" Date: Mon, 7 Jan 2013 16:09:05 -0200 Subject: [PATCH] more struture and codes for application --- app/__init__.py | 26 ++++++++ app/__init__.pyc | Bin 0 -> 1072 bytes app/libs/__init__.py | 2 + app/libs/forms.py | 8 +++ app/models.py | 47 +++++++++++++++ templates/base.html => app/templates/404.html | 0 .../login.html => app/templates/base.html | 0 app/templates/login.html | 19 ++++++ app/views/login.py | 56 ++++++++++++++++++ app/views/main.py | 8 +++ config.py | 11 ++++ runserver.py | 6 ++ 12 files changed, 183 insertions(+) create mode 100644 app/__init__.pyc create mode 100644 app/libs/__init__.py create mode 100644 app/libs/forms.py create mode 100644 app/models.py rename templates/base.html => app/templates/404.html (100%) rename templates/login.html => app/templates/base.html (100%) create mode 100644 app/templates/login.html create mode 100644 app/views/login.py create mode 100644 app/views/main.py create mode 100644 config.py diff --git a/app/__init__.py b/app/__init__.py index e69de29..0cd4822 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -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') + ) + diff --git a/app/__init__.pyc b/app/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ef8e162a0f16feaa1d9297ab630f47e688088f9b GIT binary patch literal 1072 zcma)4&2H2%5FR_(-)_6xA^`^uJ+x8|P&o9^143*oRYF=-kc9)eSZVCE33eP}uSCz~ z5qK4ziX#sIGfw%rAYsK5&v-oZ&3qGm-=5a-x7P*StqA`wal5Z5Bz_DufMJj^FdQ-t zCW0&iMt2-^3}yh?pw}bNLog%AMqtK}jeBbhdIDww*#wwkpr&w(;kH0+K|OOw&C3J*OR&!FZ+Kf>w`;BU2w2&jy};}=7X^a0dEka1uLRgMV+LzFa9ESlcvJVWmnb zNyy=?%x^q3&H1h*HvY8b-@SQ&{z#ZtpS%@q-sQh%BLH+X55R})fX&&ET_pEV4e3gn zsg!O5BRxQ3Gh7JwQRn>(rGz?6O+P>>bs#0~dhCQ)h$c5m2<&K}FAc@h1eKjN!d}*@ z@Sb`gFZ~REf%faXky>>r&8Oc*aaV|FJ6qsT+b$)z|I-En@!VLs(dq>aSSbDxTd@0V O!Dnm{ZSxs_82" % ( + self.login, + self.perfil, + self.nome, + self.email, + self.telefone + ) \ No newline at end of file diff --git a/templates/base.html b/app/templates/404.html similarity index 100% rename from templates/base.html rename to app/templates/404.html diff --git a/templates/login.html b/app/templates/base.html similarity index 100% rename from templates/login.html rename to app/templates/base.html diff --git a/app/templates/login.html b/app/templates/login.html new file mode 100644 index 0000000..062b097 --- /dev/null +++ b/app/templates/login.html @@ -0,0 +1,19 @@ + + + Tela de Login + + + +
+ {{ form.hidden_tag() }} + + {{ form.login(size=30) }} + + {{ form.senha(size=30) }} + + + +
+ + + \ No newline at end of file diff --git a/app/views/login.py b/app/views/login.py new file mode 100644 index 0000000..c1e74cd --- /dev/null +++ b/app/views/login.py @@ -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('/') \ No newline at end of file diff --git a/app/views/main.py b/app/views/main.py new file mode 100644 index 0000000..2e17234 --- /dev/null +++ b/app/views/main.py @@ -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') \ No newline at end of file diff --git a/config.py b/config.py new file mode 100644 index 0000000..ca77939 --- /dev/null +++ b/config.py @@ -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) \ No newline at end of file diff --git a/runserver.py b/runserver.py index e69de29..72d9cd0 100644 --- a/runserver.py +++ b/runserver.py @@ -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) \ No newline at end of file