· 6 years ago · Apr 03, 2019, 06:20 PM
1from flask import Flask, render_template, request, flash, redirect
2from flask_sqlalchemy import SQLAlchemy
3from flask_migrate import Migrate
4from flask_wtf import FlaskForm
5from wtforms import StringField, PasswordField, SubmitField
6from wtforms.validators import InputRequired, Email, Length
7from flask_bootstrap import Bootstrap
8
9app = Flask(__name__)
10app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///meudb.db'
11app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
12app.config['SECRET_KEY'] = '5fbc1554-8b78-4080-98b4-5035b8469fee-042c5b51-5024-4bd5-af69-d2ab00debd6b'
13# Gerar o secret-key com o UUID
14db = SQLAlchemy(app) # inicializa o ORM
15migrate = Migrate(app, db) # inicializa as migrations
16bootstrap = Bootstrap(app) # inicializa o Bootstrap
17
18class Usuario(db.Model):
19 __tablename__ = 'usuarios'
20 id = db.Column(db.Integer, primary_key=True)
21 nome = db.Column(db.String(250))
22 email = db.Column(db.String(250))
23 password = db.Column(db.String(250))
24 telefone = db.Column(db.String(50))
25 cpf = db.Column(db.String(20))
26
27 def __repr__(self):
28 return '<Usuario: {}>'.format(self.nome)
29
30 def __init__(self, nome,email,password,telefone, cpf):
31 self.nome = nome
32 self.email = email
33 self.password = password
34 self.telefone = telefone
35 self.cpf = cpf
36
37
38class InsereUsuarioForm(FlaskForm):
39 nome = StringField('Nome',validators=[InputRequired(),Length(min=3)])
40 email = StringField('Email',validators=[InputRequired(),Email(message='Insira um email válido.')])
41 password= PasswordField('Senha',validators=[InputRequired(),Length(min=6)])
42 telefone= StringField('Telefone',validators=[InputRequired(),Length(min=6)])
43 cpf = StringField('CPF',validators=[InputRequired(),Length(min=11,max=11)])
44 enviar = SubmitField('Enviar')
45
46@app.route('/')
47def index():
48 return render_template('index.tpl')
49
50
51@app.route('/usuarios')
52def lista_usuarios():
53 dados = Usuario.query.all()
54 return render_template('usuarios.tpl', dadostpl = dados)
55
56@app.route('/usuarioadd',methods=['GET'])
57def add_usuario_get():
58 form = InsereUsuarioForm()
59 return render_template('add_usuario.tpl', formtpl = form)
60
61
62@app.route('/usuarioadd',methods=['POST'])
63def add_usuario_post():
64 form = InsereUsuarioForm(request.form)
65 if form.validate_on_submit():
66 novo_usuario = Usuario( nome = form.nome.data,
67 email = form.email.data,
68 password = form.password.data,
69 telefone = form.telefone.data,
70 cpf = form.cpf.data)
71 db.session.add(novo_usuario)
72 db.session.commit()
73 flash('Usuário inserido com sucesso.','success')
74 else :
75 flash('Não inserido. Problemas nos dados.'+str(form.errors),'danger')
76 return redirect('/usuarios')
77
78@app.route('/usuarioedit/<_id>',methods=['GET'])
79def edit_usuario_get(_id):
80 u = Usuario.query.filter_by(id=_id).first()
81 form = InsereUsuarioForm(obj=u)
82 return render_template('edit_usuario.tpl', formtpl = form, _id = _id)
83
84
85@app.route('/usuarioedit/<_id>',methods=['POST'])
86def edit_usuario_post(_id):
87 form = InsereUsuarioForm(request.form)
88 u = Usuario.query.filter_by(id=_id).first()
89 if form.validate_on_submit():
90 form.populate_obj(u)
91 db.session.commit()
92 flash('Usuário alterado com sucesso.','success')
93 else :
94 flash('Não alterado. Problemas nos dados.'+str(form.errors),'danger')
95 return redirect('/usuarios')
96
97@app.route('/usuarioview/<_id>',methods=['GET'])
98def view_usuario_get(_id):
99 u = Usuario.query.filter_by(id=_id).first()
100 return render_template('view_usuario.tpl', d = u)
101
102@app.route('/usuariodel/<_id>',methods=['GET'])
103def del_usuario_get(_id):
104 u = Usuario.query.filter_by(id=_id).first()
105 return render_template('del_usuario.tpl', d = u)
106
107@app.route('/usuariodel/<_id>',methods=['POST'])
108def del_usuario_post(_id):
109 u = Usuario.query.filter_by(id=_id).first()
110 db.session.delete(u)
111 db.session.commit()
112 flash('Usuário excluÃdo com sucesso.','success')
113 return redirect('/usuarios')
114
115
116if __name__ == "__main__":
117 app.run()