Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sqlite3
- from db import db
- from datetime import datetime
- from flask_bcrypt import Bcrypt
- #User = Companie
- class UserModel(db.Model):
- __tablename__ = 'usuarios'
- id = db.Column(db.Integer, primary_key=True)
- username = db.Column(db.String(80), unique=True, nullable=False)
- password = db.Column(db.String(80), nullable=False)
- admin = db.Column(db.Boolean, nullable=False, default=False)
- razao_social = db.Column(db.String(80), nullable=False)
- cnpj = db.Column(db.String(30))
- cidade = db.Column(db.String(50))
- estado = db.Column(db.String(30))
- endereco = db.Column(db.String(100))
- telefone = db.Column(db.String(20))
- email = db.Column(db.String(100))
- created_at = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)
- updated_at = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now)
- funcionarios = db.relationship('FuncionarioModel', lazy='dynamic')
- def __init__(self, username, password, admin=False, razao_social, cnpj, cidade, estado, endereco, telefone, email, created_at, updated_at):
- self.username = username
- self.password = bcrypt.generate_password_hash(
- password, app.config.get('BCRYPT_LOG_ROUNDS')
- ).decode()
- self.admin = admin
- self.razao_social = razao_social
- self.cnpj = cnpj
- self.cidade = cidade
- self.estado = estado
- self.endereco = endereco
- self.telefone = telefone
- self.email = email
- self.created_at = created_at
- self.updated_at = updated_at
- def json(self):
- return {'razao_social': self.razao_social, 'cnpj': self.cnpj,
- 'cidade': self.cidade, 'estado': self.estado, 'endereco': self.endereco, 'telefone': self.telefone,
- 'email': self.email, 'funcionarios': [funcionario.json() for funcionario in self.funcionarios.all()], 'created_at': self.created_at, 'updated_at': self.updated_at}
- @classmethod
- def find_by_id(cls, _id):
- return cls.query.filter_by(id=_id).first()
- @classmethod
- def find_by_username(cls, username):
- return cls.query.filter_by(username=username).first()
- def save_to_db(self):
- db.session.add(self)
- db.session.commit()
- def delete_from_db(self):
- db.session.delete(self)
- db.session.commit()
- from flask_restful import Resource, reqparse
- from models.user import UserModel
- class UserRegister(Resource):
- parser = reqparse.RequestParser()
- parser.add_argument('username',
- type=str,
- required=True,
- help="This field cannot be blank."
- )
- parser.add_argument('password',
- type=str,
- required=True,
- help="This field cannot be blank."
- )
- parser.add_argument('admin',
- type=bool,
- required=True,
- help="This field cannot be blank."
- )
- def post(self):
- data = UserRegister.parser.parse_args()
- if UserModel.find_by_username(data['username']):
- return {"message": "Um usuário com esse nome já existe"}, 400
- user = UserModel(**data)
- user.save_to_db()
- return {"message": "Usuário criado com sucesso."}, 201
- class UserList(Resource):
- def get(self):
- return {'companies': [user.json() for user in UserModel.query.all()]}
Add Comment
Please, Sign In to add comment