Fix for wrong path for settings json files (#258)

Co-authored-by: AAGaming <aa@mail.catvibers.me>
This commit is contained in:
Marco Rodolfi
2022-11-20 01:34:38 +01:00
committed by GitHub
parent 1e02fcf394
commit 5d8601347a
2 changed files with 30 additions and 4 deletions
+10
View File
@@ -1,3 +1,5 @@
import grp
import pwd
import re import re
import ssl import ssl
import subprocess import subprocess
@@ -56,6 +58,14 @@ def get_user() -> str:
raise ValueError("helpers.get_user method called before user variable was set. Run helpers.set_user first.") raise ValueError("helpers.get_user method called before user variable was set. Run helpers.set_user first.")
return user return user
#Get the user owner of the given file path.
def get_user_owner(file_path) -> str:
return pwd.getpwuid(os.stat(file_path).st_uid)[0]
#Get the user group of the given file path.
def get_user_group(file_path) -> str:
return grp.getgrgid(os.stat(file_path).st_gid)[0]
# Set the global user group. get_user must be called first # Set the global user group. get_user must be called first
def set_user_group() -> str: def set_user_group() -> str:
global group global group
+20 -4
View File
@@ -1,20 +1,36 @@
import imp
from json import dump, load from json import dump, load
from os import mkdir, path from os import mkdir, path, listdir, rename
from shutil import chown
from helpers import get_home_path, get_homebrew_path, get_user, set_user from helpers import get_home_path, get_homebrew_path, get_user, set_user, get_user_owner
class SettingsManager: class SettingsManager:
def __init__(self, name, settings_directory = None) -> None: def __init__(self, name, settings_directory = None) -> None:
set_user() set_user()
USER = get_user() USER = get_user()
wrong_dir = get_homebrew_path(get_home_path(USER))
if settings_directory == None: if settings_directory == None:
settings_directory = get_homebrew_path(get_home_path(USER)) settings_directory = path.join(wrong_dir, "settings")
self.path = path.join(settings_directory, name + ".json") self.path = path.join(settings_directory, name + ".json")
#Create the folder with the correct permission
if not path.exists(settings_directory): if not path.exists(settings_directory):
mkdir(settings_directory) mkdir(settings_directory)
chown(settings_directory, USER, USER)
#Copy all old settings file in the root directory to the correct folder
for file in listdir(wrong_dir):
if file.endswith(".json"):
rename(path.join(wrong_dir,file),
path.join(settings_directory, file))
self.path = path.join(settings_directory, name + ".json")
#If the owner of the settings directory is not the user, then set it as the user:
if get_user_owner(settings_directory) != USER:
chown(settings_directory, USER, USER)
self.settings = {} self.settings = {}