mirror of
https://github.com/rommapp/romm.git
synced 2026-02-18 00:27:41 +01:00
Hotfix scanning via watcher
This commit is contained in:
@@ -63,7 +63,7 @@ async def scan_platforms(
|
||||
log.info(f"Found {len(platform_list)} platforms in file system ")
|
||||
|
||||
for platform_slug in platform_list:
|
||||
platform = db_platform_handler.get_platform_by_slug(platform_slug)
|
||||
platform = db_platform_handler.get_platform_by_fs_slug(platform_slug)
|
||||
scanned_platform = scan_platform(platform_slug, fs_platforms)
|
||||
|
||||
if platform:
|
||||
@@ -135,7 +135,7 @@ async def scan_handler(_sid: str, options: dict):
|
||||
|
||||
log.info(emoji.emojize(":magnifying_glass_tilted_right: Scanning "))
|
||||
|
||||
platform_slugs = options.get("platforms", [])
|
||||
platform_ids = options.get("platforms", [])
|
||||
complete_rescan = options.get("completeRescan", False)
|
||||
rescan_unidentified = options.get("rescanUnidentified", False)
|
||||
selected_roms = options.get("roms", [])
|
||||
@@ -143,7 +143,7 @@ async def scan_handler(_sid: str, options: dict):
|
||||
# Run in worker if redis is available
|
||||
return high_prio_queue.enqueue(
|
||||
scan_platforms,
|
||||
platform_slugs,
|
||||
platform_ids,
|
||||
complete_rescan,
|
||||
rescan_unidentified,
|
||||
selected_roms,
|
||||
|
||||
@@ -24,7 +24,7 @@ class DBPlatformsHandler(DBHandler):
|
||||
)
|
||||
|
||||
@begin_session
|
||||
def get_platform_by_slug(self, fs_slug: str, session: Session = None):
|
||||
def get_platform_by_fs_slug(self, fs_slug: str, session: Session = None):
|
||||
return session.scalars(
|
||||
select(Platform).filter_by(fs_slug=fs_slug).limit(1)
|
||||
).first()
|
||||
|
||||
@@ -21,7 +21,7 @@ SWAPPED_PLATFORM_BINDINGS = dict((v, k) for k, v in cm.config.PLATFORMS_BINDING.
|
||||
def _get_main_platform_igdb_id(platform: Platform):
|
||||
if platform.fs_slug in cm.config.PLATFORMS_VERSIONS.keys():
|
||||
main_platform_slug = cm.config.PLATFORMS_VERSIONS[platform.fs_slug]
|
||||
main_platform = db_platform_handler.get_platform_by_slug(main_platform_slug)
|
||||
main_platform = db_platform_handler.get_platform_by_fs_slug(main_platform_slug)
|
||||
if main_platform:
|
||||
main_platform_igdb_id = main_platform.igdb_id
|
||||
else:
|
||||
|
||||
@@ -17,7 +17,7 @@ def test_platforms():
|
||||
platforms = db_platform_handler.get_platforms()
|
||||
assert len(platforms) == 1
|
||||
|
||||
platform = db_platform_handler.get_platform_by_slug(platform.slug)
|
||||
platform = db_platform_handler.get_platform_by_fs_slug(platform.fs_slug)
|
||||
assert platform.name == "test_platform"
|
||||
|
||||
db_platform_handler.purge_platforms([])
|
||||
|
||||
@@ -7,6 +7,7 @@ from config import (
|
||||
RESCAN_ON_FILESYSTEM_CHANGE_DELAY,
|
||||
)
|
||||
from endpoints.sockets.scan import scan_platforms
|
||||
from handler import db_platform_handler
|
||||
from logger.logger import log
|
||||
from tasks.tasks import tasks_scheduler
|
||||
from config.config_manager import config_manager as cm
|
||||
@@ -41,7 +42,8 @@ class EventHandler(FileSystemEventHandler):
|
||||
return
|
||||
|
||||
event_src = event.src_path.split(path)[-1]
|
||||
platform_slug = event_src.split("/")[1]
|
||||
fs_slug = event_src.split("/")[1]
|
||||
db_platform = db_platform_handler.get_platform_by_fs_slug(fs_slug)
|
||||
|
||||
log.info(f"Filesystem event: {event.event_type} {event_src}")
|
||||
|
||||
@@ -52,8 +54,8 @@ class EventHandler(FileSystemEventHandler):
|
||||
log.info("Full rescan already scheduled")
|
||||
return
|
||||
|
||||
if platform_slug in job.args[0]:
|
||||
log.info(f"Scan already scheduled for {platform_slug}")
|
||||
if db_platform and db_platform.id in job.args[0]:
|
||||
log.info(f"Scan already scheduled for {fs_slug}")
|
||||
return
|
||||
|
||||
time_delta = timedelta(minutes=RESCAN_ON_FILESYSTEM_CHANGE_DELAY)
|
||||
@@ -63,11 +65,11 @@ class EventHandler(FileSystemEventHandler):
|
||||
if event.is_directory and event_src.count("/") == 1:
|
||||
log.info(f"Platform directory changed, {rescan_in_msg}")
|
||||
tasks_scheduler.enqueue_in(time_delta, scan_platforms, [])
|
||||
else:
|
||||
elif db_platform:
|
||||
# Otherwise trigger a rescan for the specific platform
|
||||
log.info(f"Change detected in {platform_slug} folder, {rescan_in_msg}")
|
||||
log.info(f"Change detected in {fs_slug} folder, {rescan_in_msg}")
|
||||
return tasks_scheduler.enqueue_in(
|
||||
time_delta, scan_platforms, [platform_slug]
|
||||
time_delta, scan_platforms, [db_platform.id]
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user