class LoanApplication(db.Model): """Model for storing the loan applications of the users.""" __tablename__ = 'loan_applications' STATES = [ (u'pending', u'Pending'), (u'approved', u'Approved'), (u'denied', u'Denied'), ] id = db.Column(db.Integer, primary_key=True, autoincrement=True) creator_id = db.Column(db.Integer, db.ForeignKey('users.id')) creator = relationship("User", back_populates="loan_applications") business_name = db.Column(db.String(255), nullable=False) tax_id = db.Column(db.String(20), nullable=False) requested_amount = db.Column(db.Numeric(12, 4), nullable=False) application_status = db.Column(ChoiceType(STATES), nullable=False) requested_on = db.Column(db.DateTime, nullable=False) loan = relationship("Loan", uselist=False, back_populates="loan_application") def __init__(self, creator_id, business_name, requested_amount, tax_id, application_status): self.creator_id = creator_id self.business_name = business_name self.requested_amount = requested_amount self.tax_id = tax_id self.application_status = application_status self.requested_on = datetime.datetime.now() def __repr__(self): return f"{self.business_name}, {self.requested_amount}, {self.application_status}"
class Loan(db.Model): """Represents the loans that have been accepted.""" __tablename__ = 'loans' STATES = [ (u'active', u'Active'), (u'closed', u'Closed'), ] id = db.Column(db.Integer, primary_key=True, autoincrement=True) loan_application_id = db.Column(db.Integer, db.ForeignKey('loan_applications.id')) loan_application = relationship("LoanApplication", back_populates="loan") loan_status = db.Column(ChoiceType(STATES), nullable=False) accepted_on = db.Column(db.DateTime, nullable=False) requested_amount = db.Column(db.Numeric(12, 4), nullable=False) def __init__(self, loan_application_id, loan_status, requested_amount): self.loan_application_id = loan_application_id self.loan_status = loan_status self.accepted_on = datetime.datetime.now() self.requested_amount = requested_amount def __repr__(self): return f"{self.loan_application}, accepted_on={self.accepted_on}"
class Product(db.Model): __tablename__ = 'products' id = db.Column(db.Integer, primary_key=True, autoincrement=True) title = db.Column(db.String(255), nullable=False) price = db.Column(db.Numeric(asdecimal=True, precision=10, scale=2), nullable=False) bogof = db.Column(db.Boolean, default=False)
class Bill(db.Model): """ Billing table for storing line item allocated bills """ __tablename__ = "bills" id = db.Column(db.Integer, primary_key=True, autoincrement=True) bill_name = db.Column(db.String(250), unique=False, nullable=False) bill_timestamp_id = db.Column(db.String(250), unique=False, nullable=False) bill_date = db.Column(db.Date, nullable=False, index=True) bill_amount = db.Column(db.Numeric(15, 2), unique=False, nullable=False) line_number = db.Column(db.Integer, nullable=False) line_name = db.Column(db.String(250), nullable=True) line_notes = db.Column(db.String(1000), nullable=True) line_amount = db.Column(db.Numeric(15, 2), unique=False, nullable=False) allocation_array = db.Column(db.ARRAY(db.Float), nullable=False) created_on = db.Column(db.DateTime, nullable=False, index=True) sent_to_ledger_flag = db.Column(db.Boolean, nullable=False, default=False) def __init__(self, bill_name="", bill_date=datetime.date.today(), bill_timestamp_id=str(datetime.date.today()), bill_amount=0.0, line_number=0, line_name="", line_notes="", line_amount=0.0, allocation_array=[ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 ], sent_to_ledger_flag=False, **kwargs): self.bill_name = bill_name self.bill_timestamp_id = bill_timestamp_id self.bill_date = bill_date self.bill_amount = bill_amount self.line_number = line_number self.line_name = line_name self.line_notes = line_notes self.line_amount = line_amount self.created_on = datetime.datetime.now() self.allocation_array = allocation_array self.sent_to_ledger_flag = sent_to_ledger_flag
class CartItem(db.Model): __tablename__ = 'cart_items' # Constants ADD = 'add' SUBTRACT = 'subtract' REMOVE = 'remove' ACTIONS = (ADD, SUBTRACT, REMOVE) id = db.Column(db.Integer, primary_key=True, autoincrement=True) quantity = db.Column(db.Integer, default=1) price = db.Column(db.Numeric(asdecimal=True, precision=10, scale=2), nullable=False) cart_id = db.Column(db.Integer, db.ForeignKey('carts.id'), nullable=True) cart = db.relationship('Cart', backref=backref("cart_items", lazy='joined', cascade="all, delete-orphan"), lazy=True) product_id = db.Column(db.Integer, db.ForeignKey('products.id'), nullable=True) product = db.relationship('Product', backref="cartitem", uselist=False, lazy='joined')
class Cart(db.Model): __tablename__ = 'carts' id = db.Column(db.Integer, primary_key=True, autoincrement=True) total = db.Column(db.Numeric(asdecimal=True, precision=10, scale=2), default=0)