From 763e55fcaea4656c7d9ec9a813b1b3a9c7c58ff4 Mon Sep 17 00:00:00 2001 From: Will Miao <13051207myq@gmail.com> Date: Tue, 4 Feb 2025 20:02:59 +0800 Subject: [PATCH] Optimize LoRA cache sorting with flexible resort method - Add optional name-only sorting to LoRA cache resort method - Update API routes to use new resort method with name-only flag - Refactor HTML template to improve script placement and initialization check --- routes/api_routes.py | 2 +- services/lora_cache.py | 13 +++++++------ templates/loras.html | 4 ++-- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/routes/api_routes.py b/routes/api_routes.py index e9b3d32b..3682c61e 100644 --- a/routes/api_routes.py +++ b/routes/api_routes.py @@ -368,7 +368,7 @@ class ApiRoutes: logger.error(f"Error fetching CivitAI data for {lora['file_path']}: {e}") if needs_resort: - cache.sorted_by_name = sorted(cache.raw_data, key=itemgetter('model_name')) + await cache.resort(name_only=True) # 发送完成消息 await ws_manager.broadcast({ diff --git a/services/lora_cache.py b/services/lora_cache.py index d97a6567..9551ff9c 100644 --- a/services/lora_cache.py +++ b/services/lora_cache.py @@ -14,18 +14,19 @@ class LoraCache: def __post_init__(self): self._lock = asyncio.Lock() - async def resort(self): + async def resort(self, name_only: bool = False): """Resort all cached data views""" async with self._lock: self.sorted_by_name = sorted( self.raw_data, key=lambda x: x['model_name'].lower() # Case-insensitive sort ) - self.sorted_by_date = sorted( - self.raw_data, - key=itemgetter('modified'), - reverse=True - ) + if not name_only: + self.sorted_by_date = sorted( + self.raw_data, + key=itemgetter('modified'), + reverse=True + ) # Update folder list self.folders = sorted(list(set( l['folder'] for l in self.raw_data diff --git a/templates/loras.html b/templates/loras.html index 4b5e422c..fd1f4a9d 100644 --- a/templates/loras.html +++ b/templates/loras.html @@ -60,9 +60,9 @@ + {% if is_initializing %} + {% endif %} \ No newline at end of file