from datetime import datetime, timezone from flask_login import UserMixin, current_user from flask import redirect, url_for, flash from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import synonym, relationship from app import db # S2qBHlGQxVDMQGYOO5Db class Users(UserMixin, db.Model): __tablename__ = 'Users' id = db.Column(db.Integer, primary_key=True) Username = db.Column(db.String()) Password = db.Column(db.String()) FullName = db.Column(db.String()) Email = db.Column(db.String()) PassResetCode = db.Column(db.String()) PassResetRequest = db.Column(db.DateTime) Enabled = db.Column(db.Boolean, nullable=False, default=1) Permissions = db.Column(db.String()) Created = db.Column(db.DateTime, nullable=False, default=datetime.now(timezone.utc)) LoginChangePass = db.Column(db.Boolean, nullable=False, default=0) def __repr__(self): return '' % self.FullName def get_id(self): return str(self.id) class PaymentBatch(db.Model): __tablename__ = 'PaymentBatch' id = db.Column(db.Integer, primary_key=True) Created = db.Column(db.DateTime, nullable=False, default=datetime.now()) class Payments(db.Model): __tablename__ = 'Payments' id = db.Column(db.Integer, primary_key=True) Splynx_ID = db.Column(db.Integer) PaymentBatch_ID = db.Column(db.Integer, db.ForeignKey('PaymentBatch.id'), nullable=False) Stripe_Customer_ID = db.Column(db.String()) Payment_Intent = db.Column(db.String()) PI_FollowUp = db.Column(db.Boolean, nullable=False, default=0) PI_Last_Check = db.Column(db.DateTime, nullable=True) Payment_Method = db.Column(db.String()) Stripe_Payment_Method = db.Column(db.String()) Fee_Tax = db.Column(db.Float()) Fee_Stripe = db.Column(db.Float()) Fee_Total = db.Column(db.Float()) Payment_Amount = db.Column(db.Float()) PI_JSON = db.Column(db.Text()) PI_FollowUp_JSON = db.Column(db.Text()) Error = db.Column(db.Text()) Success = db.Column(db.Boolean, nullable=True, default=None) Created = db.Column(db.DateTime, nullable=False, default=datetime.now()) PaymentPlan_ID = db.Column(db.Integer, db.ForeignKey('PaymentPlans.id'), nullable=True) class SinglePayments(db.Model): __tablename__ = 'SinglePayments' id = db.Column(db.Integer, primary_key=True) Splynx_ID = db.Column(db.Integer) Stripe_Customer_ID = db.Column(db.String()) Payment_Intent = db.Column(db.String()) PI_FollowUp = db.Column(db.Boolean, nullable=False, default=0) PI_Last_Check = db.Column(db.DateTime, nullable=True) Payment_Method = db.Column(db.String()) Stripe_Payment_Method = db.Column(db.String()) Fee_Tax = db.Column(db.Float()) Fee_Stripe = db.Column(db.Float()) Fee_Total = db.Column(db.Float()) Payment_Amount = db.Column(db.Float()) PI_JSON = db.Column(db.Text()) PI_FollowUp_JSON = db.Column(db.Text()) Error = db.Column(db.Text()) Success = db.Column(db.Boolean, nullable=True, default=None) Created = db.Column(db.DateTime, nullable=False, default=datetime.now()) Who = db.Column(db.Integer, db.ForeignKey('Users.id'), nullable=False) class Logs(db.Model): __tablename__ = 'Logs' id = db.Column(db.Integer, primary_key=True) User_ID = db.Column(db.Integer, db.ForeignKey('Users.id'), nullable=False) Log_Entry = db.Column(db.String(4000)) Added = db.Column(db.DateTime, nullable=False, default=datetime.now(timezone.utc)) Action = db.Column(db.String(50)) Entity_Type = db.Column(db.String(50)) Entity_ID = db.Column(db.Integer) IP_Address = db.Column(db.String(50)) class PaymentPlans(db.Model): __tablename__ = 'PaymentPlans' id = db.Column(db.Integer, primary_key=True) Splynx_ID = db.Column(db.Integer) Stripe_Customer_ID = db.Column(db.String(50)) Amount = db.Column(db.Float) Frequency = db.Column(db.String(50)) Start_Date = db.Column(db.DateTime, nullable=True) Stripe_Payment_Method = db.Column(db.String(50)) Created = db.Column(db.DateTime, nullable=False, default=datetime.now()) Who = db.Column(db.Integer, db.ForeignKey('Users.id'), nullable=False) Enabled = db.Column(db.Boolean, nullable=True, default=True)