templating - init work on generic settings management
This commit is contained in:
35
gen/Settings.py
Normal file
35
gen/Settings.py
Normal file
@@ -0,0 +1,35 @@
|
||||
import json, re
|
||||
|
||||
class Settings :
|
||||
|
||||
def __init__(self) :
|
||||
self.settings = {}
|
||||
self.variables = {}
|
||||
|
||||
def load_settings(self, path) :
|
||||
with open(path, "r") as f :
|
||||
data = json.loads(f.read())
|
||||
for cat in data :
|
||||
for param in data[cat]["params"] :
|
||||
if param["type"] == "multiple" :
|
||||
real_params = param["params"]
|
||||
else :
|
||||
real_params = [param]
|
||||
for real_param in real_params :
|
||||
self.settings[real_param["env"]] = real_param
|
||||
self.settings[real_param["env"]]["category"] = cat
|
||||
|
||||
def load_variables(self, vars, multisite_only=False) :
|
||||
for var, value in vars.items() :
|
||||
if self.__check_var(var, value) :
|
||||
self.variables[var] = value
|
||||
else :
|
||||
print("Problem with " + var + "=" + value)
|
||||
|
||||
def __check_var(self, var, value, multisite_only=False) :
|
||||
real_var = ""
|
||||
if var in self.settings :
|
||||
real_var = var
|
||||
elif var[len(var.split("_")[0])+1:] in self.settings :
|
||||
real_var = var[len(var.split("_")[0])+1:]
|
||||
return real_var != "" and re.search(self.settings[real_var]["regex"], value) and (not multisite_only or self.settings[real_var]["context"] == "multisite")
|
||||
13
gen/main.py
Executable file
13
gen/main.py
Executable file
@@ -0,0 +1,13 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
from Settings import Settings
|
||||
|
||||
if __name__ == "__main__" :
|
||||
|
||||
my_settings = Settings()
|
||||
my_settings.load_settings("../settings.json")
|
||||
variables = {}
|
||||
variables["MULTISITE"] = "yes"
|
||||
variables["BLOCK_PROXIES"] = "no"
|
||||
variables["omg"] = "lol"
|
||||
my_settings.load_variables(variables)
|
||||
Reference in New Issue
Block a user