ref: master
core/types/user.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
from sqlalchemy import Column, Integer, String, Unicode, Boolean, DateTime from sqlalchemy import ForeignKey, Table, Text, text from sqlalchemy.orm import relationship, backref from core.database import Base from core.types.order import Order from core.types.cycle import Cycle, CycleStatus class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) username = Column(String(80), unique=True, nullable=False) email = Column(String(220), unique=True, nullable=False) password = Column(String(96), nullable=False) first_name = Column(String(250), nullable=False) last_name = Column(String(250)) created_at = Column(DateTime, nullable=False) updated_at = Column(DateTime, nullable=False) orders = relationship("Order", backref="user", lazy=True) def __init__(self, email, password, username, first_name, last_name): self.email = email self.password = password self.username = username self.first_name = first_name self.last_name = last_name def is_admin(self): # TODO: Move this to a field on the database return self.email in ["porcellis@eletrotupi.com"] def current_order(self): return Order.query.join(User).join(Cycle).filter(User.id == self.id, Cycle.status == CycleStatus.published).first() # Flask.Login stuff # We don't use most of these features def is_authenticated(self): return True def is_active(self): return True def is_anonymous(self): return False def get_id(self): return int(self.id) |