Files
live-campus-mcs-p-2027.2/Semaine_07/Jour_04/bank/entities/accounts.py
gauvainboiche 606e43e53f Semaine 7
2026-03-20 21:26:23 +01:00

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)