Beispiel #1
0
class LoanClientAssociation(db.Model):
    loan_ref = db.Column(db.String(64),
                         db.ForeignKey('loan.id'),
                         primary_key=True)
    loan = db.relationship('Loan', backref='loan_client_associations')
    client_ref = db.Column(db.String(64),
                           db.ForeignKey('client.id_number'),
                           primary_key=True)
    client = db.relationship('Client', backref='loan_client_associations')
Beispiel #2
0
class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    image_file = db.Column(db.String(20),
                           nullable=False,
                           default='default.jpg')
    password = db.Column(db.String(60), nullable=False)
    posts = db.relationship('Post', backref='author', lazy=True)
    post_index = db.Column(db.Integer())
    address = db.Column(db.String(100))
    city = db.Column(db.String(30))
    blood_group = db.Column(db.String(10), nullable=False)
    phone = db.Column(
        db.Integer(),
        unique=True,
    )
    about = db.Column(db.String(140))
    last_seen = db.Column(db.DateTime, default=datetime.utcnow)
    donates = db.relationship('Donate', backref='author', lazy=True)
    followed = db.relationship('User',
                               secondary=followers,
                               primaryjoin=(followers.c.follower_id == id),
                               secondaryjoin=(followers.c.followed_id == id),
                               backref=db.backref('followers', lazy='dynamic'),
                               lazy='dynamic')

    def __repr__(self):
        return f"User('{self.username}', '{self.email}', '{self.image_file}')"

    def avatar(self, size):
        digest = md5(self.email.lower().encode('utf-8')).hexdigest()
        return 'https://www.gravatar.com/avatar/{}?d=identicon&s={}'.format(
            digest, size)

    def follow(self, user):
        if not self.is_following(user):
            self.followed.append(user)

    def unfollow(self, user):
        if self.is_following(user):
            self.followed.remove(user)

    def is_following(self, user):
        return self.followed.filter(
            followers.c.followed_id == user.id).count() > 0

    def followed_posts(self):
        followed = Post.query.join(
            followers, (followers.c.followed_id == Post.user_id)).filter(
                followers.c.follower_id == self.id)
        own = Post.query.filter_by(user_id=self.id)
        return followed.union(own).order_by(Post.timestamp.desc())
Beispiel #3
0
class Loan(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    money = db.Column(db.Float, nullable=False)
    status = db.Column(db.String(64), nullable=False)
    bank_ref = db.Column(db.String(64),
                         db.ForeignKey('bank.name'),
                         nullable=False)
    bank = db.relationship('Bank', backref='loans')
Beispiel #4
0
class Account(db.Model):
    acnt_id = db.Column(db.Integer, primary_key=True)
    cust_id = db.Column(db.Integer, db.ForeignKey('customer.cust_id'))
    acnt_type = db.Column(db.String(20), index=False, unique=False)
    acnt_balance = db.Column(db.Integer, index=False, unique=False)
    acnt_status = db.Column(db.String(20), index=False, unique=False)
    acnt_last_tr_date = db.Column(db.DateTime, index=False, unique=False)
    acnt_message = db.Column(db.String(20), index=False, unique=False)
    transaction = db.relationship('Transaction', backref='customer')
Beispiel #5
0
class Account(db.Model):
    id = db.Column(db.String(64), primary_key=True)
    balance = db.Column(db.Float, nullable=False)
    open_date = db.Column(db.Integer, nullable=False)
    account_type = db.Column(db.String(64), nullable=False)
    bank_ref = db.Column(db.String(64),
                         db.ForeignKey('bank.name'),
                         nullable=False)
    bank = db.relationship('Bank', backref='accounts')

    __mapper_args__ = {'polymorphic_on': account_type}
Beispiel #6
0
class Staff(db.Model):
    id_number = db.Column(db.String(64), primary_key=True)
    name = db.Column(db.String(64), nullable=False)
    phone_number = db.Column(db.String(64), nullable=False)
    address = db.Column(db.String(64), nullable=False)
    joined_date = db.Column(db.Integer, nullable=False)
    kind = db.Column(db.String(64), nullable=False)

    department_ref = db.Column(db.Integer,
                               db.ForeignKey('department.id'),
                               nullable=False)
    department = db.relationship('Department', backref='staffs')
class Token(db.Model):
    token = db.Column(db.String(64),
                      default=lambda: str(uuid.uuid4()),
                      primary_key=True)
    expiresAt = db.Column(db.Integer,
                          nullable=False,
                          default=lambda: int(datetime.utcnow().timestamp()) +
                          current_app.config['TOKEN_EXPIRE'])
    user_ref = db.Column(db.String(64),
                         db.ForeignKey('user.username'),
                         nullable=False)
    user = db.relationship('User', backref='tokens')
Beispiel #8
0
class Customer(db.Model):
    cust_id = db.Column(db.Integer, primary_key=True)
    cust_ssn = db.Column(db.Integer, index=True, unique=True)
    cust_name = db.Column(db.String(20), index=False, unique=False)
    cust_age = db.Column(db.Integer, index=False, unique=False)
    cust_addr1 = db.Column(db.Text, index=False, unique=False)
    cust_addr2 = db.Column(db.Text, index=False, unique=False, nullable=True)
    cust_city = db.Column(db.String(20), index=False, unique=False)
    cust_state = db.Column(db.String(20), index=False, unique=False)
    cust_last_update = db.Column(db.Date, index=False, unique=False)
    cust_status = db.Column(db.String(20), index=False, unique=False)
    cust_message = db.Column(db.String(20), index=False, unique=False)
    account = db.relationship('Account', backref='customer')
class Client(db.Model):
    id_number = db.Column(db.String(64), primary_key=True)
    name = db.Column(db.String(64), nullable=False)
    phone_number = db.Column(db.String(64), nullable=False)
    address = db.Column(db.String(64), nullable=False)
    contact_name = db.Column(db.String(64), nullable=False)
    contact_phone_number = db.Column(db.String(64), nullable=False)
    contact_email = db.Column(db.String(64), nullable=False)
    contact_relationship = db.Column(db.String(64), nullable=False)
    staff_ref = db.Column(db.String(64),
                          db.ForeignKey('staff.id_number'),
                          nullable=False)
    staff = db.relationship('Staff', backref='clients')
Beispiel #10
0
class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(120), unique=True, nullable=False)
    password = db.Column(db.String(60), nullable=False)
    first_name = db.Column(db.String(255), nullable=False)
    last_name = db.Column(db.String(255), nullable=False)
    admin = db.Column(db.Boolean, unique=False, default=False)
    balance = db.Column(
        db.Numeric(precision=10,
                   scale=2,
                   asdecimal=True,
                   decimal_return_scale=2))
    logs = db.relationship('TransactionLog', backref='user', lazy=True)
Beispiel #11
0
class CustomerAccount(db.Model):
    account_id = db.Column(db.Integer, primary_key=True, nullable=False)
    customer_id = db.Column(db.Integer,
                            db.ForeignKey('customer.customer_id'),
                            nullable=False)
    customer = db.relationship("Customer",
                               backref=db.backref("customer", uselist=False))
    account_type = db.Column(db.String(30), nullable=False)
    deposit_amount = db.Column(db.Integer, nullable=False)
    last_updated = db.Column(db.DateTime,
                             nullable=False,
                             default=datetime.datetime.now)

    def __repr__(self):
        return f'Account: {self.account_id} Customer_id: {self.customer_id}'
Beispiel #12
0
class TransactionInfo(db.Model):
    transaction_id = db.Column(db.String(100),
                               primary_key=True,
                               nullable=False)
    account_id = db.Column(db.Integer,
                           db.ForeignKey('customer_account.account_id'),
                           nullable=False)
    account = db.relationship("CustomerAccount",
                              backref=db.backref("customer_account",
                                                 uselist=False))
    amount = db.Column(db.Integer, nullable=False)
    deposit = db.Column(db.Boolean, nullable=False)
    transfer = db.Column(db.Boolean, nullable=False)
    transfer_account_id = db.Column(db.Integer, nullable=False)
    action_date = db.Column(db.DateTime,
                            nullable=False,
                            default=datetime.datetime.now)
Beispiel #13
0
class Payment(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    pay_date = db.Column(db.Integer, nullable=False)
    money = db.Column(db.Float, nullable=False)
    loan_ref = db.Column(db.Integer, db.ForeignKey('loan.id'), nullable=False)
    loan = db.relationship('Loan', backref='payments')