Semaine 7

This commit is contained in:
gauvainboiche
2026-03-20 21:26:23 +01:00
parent 74d0c3f75b
commit 606e43e53f
69 changed files with 2343 additions and 0 deletions

View File

@@ -0,0 +1,45 @@
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)