mirror of
https://github.com/bunkerity/bunkerweb
synced 2026-05-24 09:28:37 +00:00
Optimize get_non_default_settings method to not include templates defaults settings
This commit is contained in:
parent
1b3cf7e343
commit
09983cdcca
1 changed files with 64 additions and 50 deletions
|
|
@ -1730,29 +1730,6 @@ class Database:
|
|||
if global_value.context == "multisite":
|
||||
multisite.add(setting_id)
|
||||
|
||||
template_used = config.get("USE_TEMPLATE", {"value": ""})["value"]
|
||||
if template_used:
|
||||
query = (
|
||||
session.query(Template_settings)
|
||||
.with_entities(Template_settings.setting_id, Template_settings.default, Template_settings.suffix)
|
||||
.filter_by(template_id=template_used)
|
||||
)
|
||||
|
||||
if filtered_settings:
|
||||
query = query.filter(Template_settings.setting_id.in_(filtered_settings))
|
||||
|
||||
for template_setting in query:
|
||||
key = template_setting.setting_id + (f"_{template_setting.suffix}" if template_setting.suffix > 0 else "")
|
||||
if key in config and config[key]["method"] != "default":
|
||||
continue
|
||||
|
||||
config[key] = {
|
||||
"value": template_setting.default,
|
||||
"global": True,
|
||||
"method": "default",
|
||||
"template": template_used,
|
||||
}
|
||||
|
||||
is_multisite = config.get("MULTISITE", {"value": "no"})["value"] == "yes"
|
||||
|
||||
services = session.query(Services).with_entities(Services.id, Services.is_draft)
|
||||
|
|
@ -1815,31 +1792,6 @@ class Database:
|
|||
"method": result.method,
|
||||
"template": None,
|
||||
}
|
||||
|
||||
for service in services:
|
||||
template_used = config.get(f"{service.id}_USE_TEMPLATE", {"value": ""})["value"]
|
||||
if template_used and template_used != config.get("USE_TEMPLATE", {"value": ""})["value"]:
|
||||
query = (
|
||||
session.query(Template_settings)
|
||||
.with_entities(Template_settings.setting_id, Template_settings.default, Template_settings.suffix)
|
||||
.filter_by(template_id=template_used)
|
||||
)
|
||||
|
||||
if filtered_settings:
|
||||
query = query.filter(Template_settings.setting_id.in_(filtered_settings))
|
||||
|
||||
for setting in query:
|
||||
key = f"{service.id}_{setting.setting_id}" + (f"_{setting.suffix}" if setting.suffix > 0 else "")
|
||||
if key in config and config[key]["method"] != "default":
|
||||
continue
|
||||
|
||||
config[key] = {
|
||||
"value": setting.default,
|
||||
"global": False,
|
||||
"method": "default",
|
||||
"template": template_used,
|
||||
}
|
||||
|
||||
else:
|
||||
servers = " ".join(service.id for service in services)
|
||||
|
||||
|
|
@ -1864,6 +1816,11 @@ class Database:
|
|||
filtered_settings: Optional[Union[List[str], Set[str], Tuple[str]]] = None,
|
||||
) -> Dict[str, Any]:
|
||||
"""Get the config from the database"""
|
||||
filtered_settings = set(filtered_settings or [])
|
||||
|
||||
if filtered_settings and not global_only:
|
||||
filtered_settings.update(("SERVER_NAME", "MULTISITE", "USE_TEMPLATE"))
|
||||
|
||||
with self._db_session() as session:
|
||||
config = {}
|
||||
multisite = set()
|
||||
|
|
@ -1887,15 +1844,72 @@ class Database:
|
|||
if setting.context == "multisite":
|
||||
multisite.add(setting.id)
|
||||
|
||||
return self.get_non_default_settings(
|
||||
config = self.get_non_default_settings(
|
||||
global_only=global_only,
|
||||
methods=methods,
|
||||
methods=True,
|
||||
with_drafts=with_drafts,
|
||||
filtered_settings=filtered_settings,
|
||||
original_config=config,
|
||||
original_multisite=multisite,
|
||||
)
|
||||
|
||||
with self._db_session() as session:
|
||||
template_used = config.get("USE_TEMPLATE", {"value": ""})["value"]
|
||||
if template_used:
|
||||
query = (
|
||||
session.query(Template_settings)
|
||||
.with_entities(Template_settings.setting_id, Template_settings.default, Template_settings.suffix)
|
||||
.filter_by(template_id=template_used)
|
||||
)
|
||||
|
||||
if filtered_settings:
|
||||
query = query.filter(Template_settings.setting_id.in_(filtered_settings))
|
||||
|
||||
for template_setting in query:
|
||||
key = template_setting.setting_id + (f"_{template_setting.suffix}" if template_setting.suffix > 0 else "")
|
||||
if key in config and (config[key]["method"] != "default" or key == "SERVER_NAME" and config[key]["value"] != template_setting.default):
|
||||
continue
|
||||
|
||||
config[key] = {
|
||||
"value": template_setting.default,
|
||||
"global": True,
|
||||
"method": "default",
|
||||
"template": template_used,
|
||||
}
|
||||
|
||||
if not global_only and config["MULTISITE"]["value"] == "yes":
|
||||
for service_id in config["SERVER_NAME"]["value"].split(" "):
|
||||
service_template_used = config.get(f"{service_id}_USE_TEMPLATE", {"value": template_used})["value"]
|
||||
if service_template_used:
|
||||
query = (
|
||||
session.query(Template_settings)
|
||||
.with_entities(Template_settings.setting_id, Template_settings.default, Template_settings.suffix)
|
||||
.filter_by(template_id=service_template_used)
|
||||
)
|
||||
|
||||
if filtered_settings:
|
||||
query = query.filter(Template_settings.setting_id.in_(filtered_settings))
|
||||
|
||||
for setting in query:
|
||||
key = f"{service_id}_{setting.setting_id}" + (f"_{setting.suffix}" if setting.suffix > 0 else "")
|
||||
if key in config and (
|
||||
config[key]["method"] != "default" or setting.setting_id == "SERVER_NAME" and config[key]["value"] != template_setting.default
|
||||
):
|
||||
continue
|
||||
|
||||
config[key] = {
|
||||
"value": setting.default,
|
||||
"global": False,
|
||||
"method": "default",
|
||||
"template": service_template_used,
|
||||
}
|
||||
|
||||
if not methods:
|
||||
for key, value in config.copy().items():
|
||||
config[key] = value["value"]
|
||||
|
||||
return config
|
||||
|
||||
def get_custom_configs(self) -> List[Dict[str, Any]]:
|
||||
"""Get the custom configs from the database"""
|
||||
db_config = self.get_non_default_settings(filtered_settings={"USE_TEMPLATE"})
|
||||
|
|
|
|||
Loading…
Reference in a new issue