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

43 lines
1.1 KiB
Python

#! /usr/bin/env python3
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from models import *
import sys
from prompt_toolkit.completion import FuzzyWordCompleter
from prompt_toolkit.shortcuts import prompt
engine = create_engine("sqlite:///app.db")
Base = declarative_base()
Session = sessionmaker(bind=engine)
session = Session()
# categories = session.query(Category).all()
def create_category(name, parent=None):
c = session.query(Category).filter(Category.name == name).first()
if not c:
c = Category(name=name, parent_id=parent)
session.add(c)
session.commit()
return c.id
def add_category(name):
parts = name.split(":")
if len(parts) == 1:
create_category(name)
else:
for i in range(len(parts) - 1):
parent = parts[i]
child = parts[i + 1]
parent_id = create_category(parent)
create_category(child, parent=parent_id)
names = ["Ausgaben", "Einnahmen", "Ausgaben:Miete", "Einnahmen:Gehalt", "Ausgaben:Nahrung"]
for c in names:
add_category(c)