51 lines
1.9 KiB
Python
51 lines
1.9 KiB
Python
from random import randint
|
|
|
|
from sqlalchemy import ForeignKey, Column, Integer, Float
|
|
from sqlalchemy.orm import relationship
|
|
|
|
from database import Base, engine
|
|
|
|
class Account(Base):
|
|
__tablename__ = "accounts"
|
|
|
|
id = Column(Integer, primary_key= True, autoincrement= True)
|
|
number = Column(Integer, nullable= False)
|
|
balance = Column(Float, default= 0, nullable= False)
|
|
|
|
client_id = Column(Integer, ForeignKey("clients.id"), nullable= False)
|
|
credit_card_id = Column(Integer, ForeignKey("credit_cards.id"))
|
|
|
|
client = relationship('Client', back_populates= "accounts")
|
|
|
|
def __init__(self, initial_deposit: int | float) -> None:
|
|
self.number = self.account_number()
|
|
self.amount = initial_deposit
|
|
|
|
def __repr__(self) -> str:
|
|
return f"\
|
|
[Numéro de compte] : {self.number}\n\
|
|
[Montant disponible] : {self.amount}"
|
|
|
|
def __eq__(self, other: 'Account'):
|
|
return self.number == other.number
|
|
|
|
def account_number(self):
|
|
number = "".join(str(randint(0,9)) for _ in range(7))
|
|
return " ".join(number[_: _ + 4] for _ in range(0,7,4))
|
|
|
|
def add_money(self, add_amount: int | float):
|
|
if add_amount < 0:
|
|
return f"{add_amount} n'est pas un entier positif. Recommencez."
|
|
self.amount += add_amount
|
|
return f"{add_amount} ont été ajoutés. Le nouveau solde est de {self.amount}."
|
|
|
|
def take_money(self, take_amount: int | float):
|
|
if take_amount < 0:
|
|
return f"{take_amount} n'est pas un entier positif. Recommencez."
|
|
self.amount -= take_amount
|
|
if self.amount < 0:
|
|
return f"{take_amount} ont été retirés. Le nouveau solde est de {self.amount}.\n\
|
|
Vous êtes débiteur et devrez payer des agios si vous ne régularisez pas votre situation."
|
|
return f"{take_amount} ont été retirés. Le nouveau solde est de {self.amount}."
|
|
|
|
Base.metadata.create_all(engine) |