43 lines
1.1 KiB
Python
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)
|