mirror of
https://github.com/bunkerity/bunkerweb
synced 2026-05-24 09:28:37 +00:00
Refactor Database.py to conditionally set the database URI and update metadata for non-draft services
This commit is contained in:
parent
33eea02c6e
commit
071bb9e4ac
3 changed files with 37 additions and 27 deletions
|
|
@ -114,8 +114,11 @@ try:
|
|||
"pro_status": "invalid",
|
||||
"pro_overlapped": False,
|
||||
"pro_services": 0,
|
||||
"non_draft_services": 0,
|
||||
}
|
||||
metadata = {
|
||||
"non_draft_services": int(data["service_number"]),
|
||||
}
|
||||
metadata = {}
|
||||
error = False
|
||||
|
||||
temp_dir = TMP_DIR.joinpath(str(uuid4()))
|
||||
|
|
@ -159,6 +162,7 @@ try:
|
|||
if (
|
||||
pro_license_key == db_metadata.get("pro_license", "")
|
||||
and metadata.get("is_pro", False) == db_metadata["is_pro"]
|
||||
and (not metadata.get("pro_overlapped", False) or metadata.get("non_draft_services", 0) == db_metadata.get("non_draft_services", 0))
|
||||
and db_metadata["last_pro_check"]
|
||||
and current_date.replace(hour=0, minute=0, second=0, microsecond=0) == db_metadata["last_pro_check"].replace(hour=0, minute=0, second=0, microsecond=0)
|
||||
):
|
||||
|
|
|
|||
|
|
@ -389,6 +389,7 @@ class Database:
|
|||
"pro_expire": None,
|
||||
"pro_status": "invalid",
|
||||
"pro_services": 0,
|
||||
"non_draft_services": 0,
|
||||
"pro_overlapped": False,
|
||||
"last_pro_check": None,
|
||||
"failover": False,
|
||||
|
|
@ -2870,7 +2871,7 @@ class Database:
|
|||
|
||||
if page:
|
||||
path_ui = plugin_path.joinpath("ui")
|
||||
if not path_ui.is_dir():
|
||||
if path_ui.is_dir():
|
||||
with BytesIO() as plugin_page_content:
|
||||
with tar_open(fileobj=plugin_page_content, mode="w:gz", compresslevel=9) as tar:
|
||||
tar.add(path_ui, arcname=path_ui.name, recursive=True)
|
||||
|
|
@ -3042,7 +3043,7 @@ class Database:
|
|||
|
||||
return ""
|
||||
|
||||
def delete_plugin(self, plugin_id: str, method: str) -> str:
|
||||
def delete_plugin(self, plugin_id: str, method: str, *, changes: bool = True) -> str:
|
||||
"""Delete a plugin from the database."""
|
||||
with self._db_session() as session:
|
||||
plugin = session.query(Plugins).filter_by(id=plugin_id, method=method).first()
|
||||
|
|
@ -3050,33 +3051,37 @@ class Database:
|
|||
return f"Plugin with id {plugin_id} and method {method} not found"
|
||||
|
||||
session.query(Plugins).filter_by(id=plugin_id, method=method).delete()
|
||||
session.query(Settings).filter_by(plugin_id=plugin_id).delete()
|
||||
session.query(Selects).filter(Selects.setting_id.in_(session.query(Settings).filter_by(plugin_id=plugin_id).with_entities(Settings.id))).delete()
|
||||
session.query(Jobs).filter_by(plugin_id=plugin_id).delete()
|
||||
session.query(Jobs_cache).filter_by(plugin_id=plugin_id).delete()
|
||||
session.query(Jobs_runs).filter_by(plugin_id=plugin_id).delete()
|
||||
for db_setting in session.query(Settings).filter_by(plugin_id=plugin_id).all():
|
||||
session.query(Selects).filter_by(setting_id=db_setting.id).delete()
|
||||
session.query(Services_settings).filter_by(setting_id=db_setting.id).delete()
|
||||
session.query(Global_values).filter_by(setting_id=db_setting.id).delete()
|
||||
session.query(Template_settings).filter_by(setting_id=db_setting.id).delete()
|
||||
session.query(Settings).filter_by(id=db_setting.id).delete()
|
||||
|
||||
for db_job in session.query(Jobs).filter_by(plugin_id=plugin_id).all():
|
||||
session.query(Jobs_cache).filter_by(job_name=db_job.name).delete()
|
||||
session.query(Jobs_runs).filter_by(job_name=db_job.name).delete()
|
||||
session.query(Jobs).filter_by(name=db_job.name).delete()
|
||||
|
||||
session.query(Plugin_pages).filter_by(plugin_id=plugin_id).delete()
|
||||
session.query(Bw_cli_commands).filter_by(plugin_id=plugin_id).delete()
|
||||
session.query(Templates).filter_by(plugin_id=plugin_id).delete()
|
||||
session.query(Template_steps).filter(
|
||||
Template_steps.template_id.in_(session.query(Templates).filter_by(plugin_id=plugin_id).with_entities(Templates.id))
|
||||
).delete()
|
||||
session.query(Template_settings).filter(
|
||||
Template_settings.template_id.in_(session.query(Templates).filter_by(plugin_id=plugin_id).with_entities(Templates.id))
|
||||
).delete()
|
||||
session.query(Template_custom_configs).filter(
|
||||
Template_custom_configs.template_id.in_(session.query(Templates).filter_by(plugin_id=plugin_id).with_entities(Templates.id))
|
||||
).delete()
|
||||
|
||||
with suppress(ProgrammingError, OperationalError):
|
||||
metadata = session.query(Metadata).get(1)
|
||||
if metadata is not None:
|
||||
if method in ("external", "ui"):
|
||||
metadata.external_plugins_changed = True
|
||||
metadata.last_external_plugins_change = datetime.now().astimezone()
|
||||
elif method == "pro":
|
||||
metadata.pro_plugins_changed = True
|
||||
metadata.last_pro_plugins_change = datetime.now().astimezone()
|
||||
for db_template in session.query(Templates).filter_by(plugin_id=plugin_id).all():
|
||||
session.query(Template_steps).filter_by(template_id=db_template.id).delete()
|
||||
session.query(Template_settings).filter_by(template_id=db_template.id).delete()
|
||||
session.query(Template_custom_configs).filter_by(template_id=db_template.id).delete()
|
||||
session.query(Templates).filter_by(id=db_template.id).delete()
|
||||
|
||||
if changes:
|
||||
with suppress(ProgrammingError, OperationalError):
|
||||
metadata = session.query(Metadata).get(1)
|
||||
if metadata is not None:
|
||||
if method in ("external", "ui"):
|
||||
metadata.external_plugins_changed = True
|
||||
metadata.last_external_plugins_change = datetime.now().astimezone()
|
||||
elif method == "pro":
|
||||
metadata.pro_plugins_changed = True
|
||||
metadata.last_pro_plugins_change = datetime.now().astimezone()
|
||||
|
||||
try:
|
||||
session.commit()
|
||||
|
|
|
|||
|
|
@ -287,6 +287,7 @@ class Metadata(Base):
|
|||
pro_expire = Column(DateTime(timezone=True), nullable=True)
|
||||
pro_status = Column(PRO_STATUS_ENUM, default="invalid", nullable=False)
|
||||
pro_services = Column(Integer, default=0, nullable=False)
|
||||
non_draft_services = Column(Integer, default=0, nullable=False)
|
||||
pro_overlapped = Column(Boolean, default=False, nullable=False)
|
||||
last_pro_check = Column(DateTime(timezone=True), nullable=True)
|
||||
first_config_saved = Column(Boolean, nullable=False)
|
||||
|
|
|
|||
Loading…
Reference in a new issue