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

45 lines
1.5 KiB
Python

from datetime import datetime
from random import randint
from accounts import Account
from sqlalchemy import Column, Integer, CHAR
from sqlalchemy.orm import relationship
from database import Base, engine
class CreditCard(Base):
__tablename__ = "credit_cards"
id = Column(Integer, primary_key= True, autoincrement= True)
number = Column(CHAR(19), nullable= False)
secure_code = Column(CHAR(3), nullable= False)
expire_date = Column(CHAR(5), nullable= False)
account = relationship("Account", back_populates= "credit_cards", uselist= False) # type: ignore
def __init__(self, account: "Account") -> None:
self.number = self.credit_card_number()
self.expire_date = self.expiration_date()
self.secure_code = self.security_code()
self.account = account
def __repr__(self) -> str:
return f"\
[Numéro de carte] : {self.number}\n\
[Date d'expiration] : {self.expire_date}\n\
[Code de sécurité] : {self.secure_code}"
def credit_card_number(self):
number = "".join(str(randint(0,9)) for _ in range(16))
return " ".join(number[_: _ + 4] for _ in range(0,16,4))
def security_code(self):
return "".join(str(randint(0,9)) for _ in range(3))
def expiration_date(self):
current_date = datetime.now()
future_date = current_date.replace(year=current_date.year + 5)
return str(future_date.strftime("%m/%y"))
Base.metadata.create_all(engine)