Guest User

Untitled

a guest
Nov 24th, 2017
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.25 KB | None | 0 0
  1. import sqlite3
  2. from db import db
  3. from datetime import datetime
  4. from flask_bcrypt import Bcrypt
  5.  
  6. #User = Companie
  7. class UserModel(db.Model):
  8. __tablename__ = 'usuarios'
  9.  
  10. id = db.Column(db.Integer, primary_key=True)
  11. username = db.Column(db.String(80), unique=True, nullable=False)
  12. password = db.Column(db.String(80), nullable=False)
  13. admin = db.Column(db.Boolean, nullable=False, default=False)
  14. razao_social = db.Column(db.String(80), nullable=False)
  15. cnpj = db.Column(db.String(30))
  16. cidade = db.Column(db.String(50))
  17. estado = db.Column(db.String(30))
  18. endereco = db.Column(db.String(100))
  19. telefone = db.Column(db.String(20))
  20. email = db.Column(db.String(100))
  21. created_at = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)
  22. updated_at = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now)
  23.  
  24. funcionarios = db.relationship('FuncionarioModel', lazy='dynamic')
  25.  
  26.  
  27. def __init__(self, username, password, admin=False, razao_social, cnpj, cidade, estado, endereco, telefone, email, created_at, updated_at):
  28. self.username = username
  29. self.password = bcrypt.generate_password_hash(
  30. password, app.config.get('BCRYPT_LOG_ROUNDS')
  31. ).decode()
  32. self.admin = admin
  33. self.razao_social = razao_social
  34. self.cnpj = cnpj
  35. self.cidade = cidade
  36. self.estado = estado
  37. self.endereco = endereco
  38. self.telefone = telefone
  39. self.email = email
  40. self.created_at = created_at
  41. self.updated_at = updated_at
  42.  
  43. def json(self):
  44. return {'razao_social': self.razao_social, 'cnpj': self.cnpj,
  45. 'cidade': self.cidade, 'estado': self.estado, 'endereco': self.endereco, 'telefone': self.telefone,
  46. 'email': self.email, 'funcionarios': [funcionario.json() for funcionario in self.funcionarios.all()], 'created_at': self.created_at, 'updated_at': self.updated_at}
  47.  
  48. @classmethod
  49. def find_by_id(cls, _id):
  50. return cls.query.filter_by(id=_id).first()
  51.  
  52. @classmethod
  53. def find_by_username(cls, username):
  54. return cls.query.filter_by(username=username).first()
  55.  
  56. def save_to_db(self):
  57. db.session.add(self)
  58. db.session.commit()
  59.  
  60. def delete_from_db(self):
  61. db.session.delete(self)
  62. db.session.commit()
  63.  
  64. from flask_restful import Resource, reqparse
  65.  
  66. from models.user import UserModel
  67.  
  68.  
  69. class UserRegister(Resource):
  70.  
  71. parser = reqparse.RequestParser()
  72. parser.add_argument('username',
  73. type=str,
  74. required=True,
  75. help="This field cannot be blank."
  76. )
  77. parser.add_argument('password',
  78. type=str,
  79. required=True,
  80. help="This field cannot be blank."
  81. )
  82. parser.add_argument('admin',
  83. type=bool,
  84. required=True,
  85. help="This field cannot be blank."
  86. )
  87.  
  88. def post(self):
  89. data = UserRegister.parser.parse_args()
  90.  
  91. if UserModel.find_by_username(data['username']):
  92. return {"message": "Um usuário com esse nome já existe"}, 400
  93.  
  94. user = UserModel(**data)
  95. user.save_to_db()
  96.  
  97. return {"message": "Usuário criado com sucesso."}, 201
  98.  
  99.  
  100. class UserList(Resource):
  101. def get(self):
  102. return {'companies': [user.json() for user in UserModel.query.all()]}
Add Comment
Please, Sign In to add comment