from datetime import datetime from app import db class Login(db.Model): __tablename__ = "login" id = db.Column(db.Integer, primary_key=True) login = db.Column(db.String(50), nullable=False, unique=True) nom = db.Column(db.String(100), nullable=False) prenom = db.Column(db.String(100), nullable=False) mail = db.Column(db.String(255), nullable=False, unique=True) pass_ = db.Column("pass", db.String(255), nullable=False) actif = db.Column(db.Boolean, default=True) creer_le = db.Column(db.DateTime, default=datetime.utcnow) modifie_le = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) reset_token = db.Column(db.String(255), nullable=True) reset_token_created_at = db.Column(db.DateTime, nullable=True) class Action(db.Model): __tablename__ = "actions" id = db.Column(db.Integer, primary_key=True) isin = db.Column(db.String(50), nullable=False, unique=True) ticker = db.Column(db.String(50)) company_name = db.Column(db.String(255)) exchange = db.Column(db.String(50), nullable=False) pays = db.Column(db.String(50), nullable=False) currency = db.Column(db.String(10), nullable=False) updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) class Societe(db.Model): __tablename__ = "societe" id = db.Column(db.Integer, primary_key=True) nom = db.Column(db.String(60), nullable=False) forme = db.Column(db.String(10), nullable=False) capital = db.Column(db.Integer, nullable=False) siren = db.Column(db.String(20), nullable=False) siret = db.Column(db.String(20), nullable=False) rcs = db.Column(db.String(50), nullable=False) tva = db.Column(db.String(50), nullable=False) naf = db.Column(db.String(10), nullable=False) tel = db.Column(db.String(30), nullable=False) web = db.Column(db.String(100), nullable=False) mail = db.Column(db.String(100), nullable=False) created_at = db.Column(db.DateTime, default=datetime.utcnow) updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) comptes = db.relationship("Compte", backref="societe", lazy=True) class Compte(db.Model): __tablename__ = "compte" id = db.Column(db.Integer, primary_key=True) id_societe = db.Column(db.Integer, db.ForeignKey("societe.id"), nullable=False) date_operation = db.Column(db.Date, nullable=False) debit = db.Column(db.Numeric(15, 2), default=0) credit = db.Column(db.Numeric(15, 2), default=0) libelle = db.Column(db.Text) source = db.Column(db.Enum("manuel", "ordre"), nullable=False, default="manuel") created_at = db.Column(db.DateTime, default=datetime.utcnow) updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) class Ordre(db.Model): __tablename__ = "ordre" id = db.Column(db.Integer, primary_key=True) id_societe = db.Column(db.Integer, db.ForeignKey("societe.id"), nullable=False) isin = db.Column(db.String(50), db.ForeignKey("actions.isin"), nullable=False) plus_value = db.Column(db.Numeric(19, 4), nullable=False, default=0) date_plus_value = db.Column(db.Date, nullable=True) created_at = db.Column(db.DateTime, default=datetime.utcnow) updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) pieds = db.relationship("OrdrePied", backref="ordre", lazy=True, cascade="all, delete-orphan") class OrdrePied(db.Model): __tablename__ = "ordre_pied" id = db.Column(db.Integer, primary_key=True) id_entete = db.Column(db.Integer, db.ForeignKey("ordre.id", ondelete="CASCADE", onupdate="CASCADE"), nullable=False) date_op = db.Column(db.Date, nullable=False) quantite = db.Column(db.Integer, nullable=False) prix_brut = db.Column(db.Numeric(19, 4)) frais_broker = db.Column(db.Numeric(19, 4)) frais_etat = db.Column(db.Numeric(19, 4)) frais_autre = db.Column(db.Numeric(19, 4)) sens = db.Column(db.Enum("achat", "vente"), nullable=False) position = db.Column(db.Enum("long", "short"), nullable=False) etat = db.Column(db.Enum("actif", "soldé", "annulé"), nullable=False) created_at = db.Column(db.DateTime, default=datetime.utcnow) updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)