schmeckels/models.py
2020-03-04 23:36:49 +01:00

39 lines
1.2 KiB
Python

#! /usr/bin/env python3
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, DateTime, ForeignKey
from sqlalchemy.orm import relationship, backref
Base = declarative_base()
class Transaction(Base):
__tablename__ = "Transaction"
id = Column(Integer, primary_key=True)
name = Column(String)
date = Column(DateTime)
iban = Column(String)
amount = Column(Integer)
description = Column(String)
category_id = Column(Integer, ForeignKey("Category.id"))
class Category(Base):
__tablename__ = "Category"
id = Column(Integer, primary_key=True)
name = Column(String)
transactions = relationship("Category")
parent_id = Column(Integer, ForeignKey("Category.id"))
children = relationship("Category", backref=backref("parent", remote_side=[id]))
def __repr__(self):
return f"<Category {self.name}>"
def is_child(self):
# we are a child if we have zero children
return len(self.children) == 0
def full_name(self):
if not self.parent:
return self.name
else:
return f"{self.parent.full_name()}:{self.name}"