import os
import sys
[docs]def get_latest_file():
if sys.platform.startswith("win"):
try:
import winreg
except ImportError:
import _winreg as winreg
explorer = winreg.OpenKey(
winreg.HKEY_CURRENT_USER,
"Software\\GSettings\\org\\gnucash\\history"
)
value, type = winreg.QueryValueEx(explorer, "file0")
return value
elif sys.platform.startswith("linux"):
import subprocess
output_dconf = subprocess.check_output(["dconf", "dump", "/org/gnucash/history/"]).decode()
from configparser import ConfigParser
conf = ConfigParser()
conf.read_string(output_dconf)
return conf["/"]["file0"][1:-1]
else:
raise NotImplemented("not yet implemented for sys.platform = '{}'".format(sys.platform))
[docs]def get_user_config_path():
from os.path import expanduser
home = expanduser("~")
if sys.platform.startswith("win") or sys.platform.startswith("linux"):
return os.path.join(home, ".gnucash")
else:
raise NotImplemented("not yet implemented for sys.platform = '{}'".format(sys.platform))
[docs]def update_config_user(lines, separator=";; lines automatically added\n;; everything below this line will be scraped"):
# add the list of lines to the end of the config.user file
# separating the original content and the new content
# through a separator
path = os.path.join(get_user_config_path(), "config.user")
if os.path.exists(path):
with open(path, "r") as fin:
original = fin.read()
else:
original = ""
if separator in original:
original = original[:original.index(separator)]
if not original.endswith("\n"):
original += "\n"
original += separator + "\n"
original += "\n".join(lines)
with open(path, "w") as fout:
fout.write(original)