class RecurringGroup(db.Model): id = db.Column(db.Integer(), primary_key=True) account_id = db.Column(db.Integer()) label = db.Column(db.String(255)) amount = db.Column(db.DECIMAL(19, 2)) start_date = db.Column(db.Date()) end_date = db.Column(db.Date()) recurrence_day = db.Column(db.Integer()) recurrence_month = db.Column(db.Integer()) def __init__(self, account_id, label, amount, start_date, end_date, recurrence_day, recurrence_month): self.account_id = account_id self.label = label self.amount = amount self.start_date = start_date self.end_date = end_date self.recurrence_day = recurrence_day self.recurrence_month = recurrence_month @staticmethod def get_groups(account_ids): if not isinstance(account_ids, (list)): account_ids = [account_ids] return RecurringGroup.query.filter( RecurringGroup.account_id.in_(account_ids)).all()
class Account(db.Model): id = db.Column(db.Integer(), primary_key=True) user = db.Column(db.Integer()) label = db.Column(db.String(255)) bank = db.Column(db.String(255)) iban = db.Column(db.String(34), unique=True) bic = db.Column(db.String(12)) projected_date = db.Column(db.Date()) def __init__(self, user, label, bank, iban, bic, projected_date): self.user = user['id'] self.label = label self.bank = bank self.iban = iban self.bic = bic self.projected_date = projected_date @staticmethod def get_accounts(user): return Account.query.filter_by(user=user['id']).all() @staticmethod def get_account_by_id(id): account = Account.query.filter_by(id=id) if account: return account else: return None @staticmethod def get_projected_date(id): account = Account.query.filter_by(id=id).first() return account.projected_date
class Appointment(db.Model): id = db.Column(db.Integer, primary_key=True, autoincrement=True) room = db.Column(db.Integer, db.ForeignKey('room.roomNumber'), nullable=False) clinic_id = db.Column(db.Integer, db.ForeignKey('clinic.id'), nullable=False) doctor_permit_number = db.Column(db.String(7), db.ForeignKey('doctor.permit_number'), nullable=False) patient_hcnumber = db.Column(db.String(12), db.ForeignKey('patient.hcnumber'), nullable=False) length = db.Column(db.Integer, nullable=False) time = db.Column(db.String(), nullable=False) date = db.Column(db.Date(), nullable=False) def __iter__(self): yield 'id', self.id yield 'room', self.room yield 'clinic_id', self.clinic_id yield 'doctor_permit_number', self.doctor_permit_number yield 'patient_hcnumber', self.patient_hcnumber yield 'length', self.length yield 'time', self.time yield 'date', self.date.strftime("%Y-%m-%d")
class UserSession(db.Model): __tablename__ = "user_session" id = db.Column(db.Integer(), primary_key=True) user_id = db.Column(db.Integer(), db.ForeignKey("user.id")) date = db.Column(db.Date()) sets = db.relationship("UserSet") note = db.Column(db.Text()) grip = db.Column(db.String(255)) program = db.Column(db.Integer(), db.ForeignKey("program_template.id"))
class IpQuery(db.Model): __bind_key__ = 'wehomeproperty' id = db.Column(db.Integer(), index=True, primary_key=True) ip = db.Column(db.String(255), index=True) home_id = db.Column(db.String(255)) source_name = db.Column(db.String(255)) date = db.Column(db.Date()) created_at = db.Column(db.DateTime(), default=datetime.datetime.now) updated_at = db.Column(db.DateTime(), default=datetime.datetime.now, onupdate=datetime.datetime.now) def __init__(self, ip, home_id, source_name, date): self.ip = ip self.home_id = home_id self.source_name = source_name self.date = date
class Transaction(db.Model): id = db.Column(db.Integer(), primary_key=True) transaction_id = db.Column(db.String(38), unique=True) account_id = db.Column(db.Integer()) label = db.Column(db.String(255)) amount = db.Column(db.DECIMAL(19, 2)) recurring_group_id = db.Column(db.Integer()) date = db.Column(db.Date()) tick = db.Column(db.SmallInteger()) def __init__(self, transaction_id, account_id, label, amount, recurring_group_id, date, tick): self.transaction_id = transaction_id self.account_id = account_id self.label = label self.amount = amount self.recurring_group_id = recurring_group_id self.date = date self.tick = tick @staticmethod def get_transactions(account_id, limit): return Transaction.query \ .filter(Transaction.account_id == account_id) \ .filter(or_(db.func.date(Transaction.date) <= datetime.now().date(), Transaction.recurring_group_id == None)) \ .order_by(desc(Transaction.date)) \ .limit(limit) \ .all() @staticmethod def get_recurring_until_projected(account_id): return Transaction.query \ .filter((Transaction.account_id == account_id), (db.func.date(Transaction.date) <= Account.get_projected_date(account_id)), (db.func.date(Transaction.date) > datetime.now().date()), (Transaction.recurring_group_id != None)) \ .all()