Add encrypted configuration backup and planned restore

This commit is contained in:
Mikei386
2026-09-30 14:20:21 +02:00
parent 18adaf4a52
commit e7a1deaab0
22 changed files with 844 additions and 28 deletions
+2 -2
View File
@@ -23,7 +23,7 @@ class PromptEnhancer:
def status(self):
with self.lock:
return dict(models={task:dict(repo=repo,installed=bool(self.installed(task)),revision=(self.installed(task) or {}).get('revision')) for task,repo in PROMPT_ENHANCER_REPOS.items()},job=dict(self.job) if self.job else None,preview=dict(self.preview) if self.preview else None)
def install(self,task):
def install(self,task,revision=None):
if task not in PROMPT_ENHANCER_REPOS:raise ValueError('Unbekannter Prompt-Aufwerter.')
with self.lock:
if self.job and self.job['state']=='running':raise ValueError('Ein Aufwerter-Download läuft bereits.')
@@ -31,7 +31,7 @@ class PromptEnhancer:
if self.installed(task):raise ValueError('Dieser Aufwerter ist bereits installiert.')
if not self.runtime.status()['installed']:raise ValueError('Zuerst die Bildlaufzeit einrichten.')
if shutil.disk_usage(self.root if self.root.exists() else self.root.parent).free<30*GIB:raise ValueError('Mindestens 30 GiB freier Plattenspeicher erforderlich.')
source=self.catalog.files(PROMPT_ENHANCER_REPOS[task]);revision=source['revision']
source=self.catalog.files(PROMPT_ENHANCER_REPOS[task],revision) if revision else self.catalog.files(PROMPT_ENHANCER_REPOS[task]);revision=source['revision']
expected=sum(f['size'] for f in source['files'] if f['name'].endswith('.safetensors'))
if expected<15*GIB or expected>25*GIB:raise ValueError('Unerwartete Größe der offiziellen Aufwerter-Gewichte; Rezept prüfen.')
self.root.mkdir(parents=True,exist_ok=True,mode=0o700);self.cancel.clear()