ciclos

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)