mirror of
https://github.com/rommapp/romm.git
synced 2026-06-28 14:56:01 +00:00
added methods to add and remove platforms bindings to config manager
This commit is contained in:
@@ -3,7 +3,7 @@ from pathlib import Path
|
||||
from logging.config import fileConfig
|
||||
from sqlalchemy import create_engine
|
||||
|
||||
from config.config_loader import ConfigLoader
|
||||
from config.config_manager import ConfigManager
|
||||
from alembic import context
|
||||
from models.base import BaseModel
|
||||
|
||||
@@ -42,7 +42,7 @@ def run_migrations_offline() -> None:
|
||||
"""
|
||||
|
||||
context.configure(
|
||||
url=ConfigLoader.get_db_engine(),
|
||||
url=ConfigManager.get_db_engine(),
|
||||
target_metadata=target_metadata,
|
||||
render_as_batch=True,
|
||||
literal_binds=True,
|
||||
@@ -62,7 +62,7 @@ def run_migrations_online() -> None:
|
||||
|
||||
"""
|
||||
|
||||
engine = create_engine(ConfigLoader.get_db_engine())
|
||||
engine = create_engine(ConfigManager.get_db_engine())
|
||||
|
||||
with engine.connect() as connection:
|
||||
context.configure(
|
||||
|
||||
@@ -57,7 +57,7 @@ class Config:
|
||||
self.HIGH_PRIO_STRUCTURE_PATH = f"{LIBRARY_BASE_PATH}/{self.ROMS_FOLDER_NAME}"
|
||||
|
||||
|
||||
class ConfigLoader:
|
||||
class ConfigManager:
|
||||
"""Parse and load the user configuration from the config.yml file
|
||||
|
||||
Raises:
|
||||
@@ -143,5 +143,26 @@ class ConfigLoader:
|
||||
),
|
||||
)
|
||||
|
||||
def _update_config(self) -> None:
|
||||
try:
|
||||
with open(self.config_path, 'w') as config_file:
|
||||
yaml.dump(self._raw_config, config_file)
|
||||
except FileNotFoundError:
|
||||
self._raw_config = {}
|
||||
finally:
|
||||
self._parse_config()
|
||||
|
||||
config = ConfigLoader().config
|
||||
def add_binding(self, fs_slug: str, slug: str):
|
||||
self._raw_config['system']['platforms'][fs_slug] = slug
|
||||
self._update_config()
|
||||
|
||||
def remove_binding(self, fs_slug):
|
||||
try:
|
||||
del self._raw_config['system']['platforms'][fs_slug]
|
||||
except KeyError:
|
||||
pass
|
||||
self._update_config()
|
||||
|
||||
|
||||
config_manager = ConfigManager()
|
||||
config = config_manager.config
|
||||
@@ -1,11 +1,11 @@
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
from config.config_loader import ConfigLoader
|
||||
from config.config_manager import ConfigManager
|
||||
|
||||
|
||||
def test_config_loader():
|
||||
loader = ConfigLoader(
|
||||
loader = ConfigManager(
|
||||
os.path.join(Path(__file__).resolve().parent, "fixtures", "config.yml")
|
||||
)
|
||||
|
||||
@@ -23,7 +23,7 @@ def test_config_loader():
|
||||
|
||||
|
||||
def test_empty_config_loader():
|
||||
loader = ConfigLoader("")
|
||||
loader = ConfigManager("")
|
||||
|
||||
assert loader.config.EXCLUDED_PLATFORMS == []
|
||||
assert loader.config.EXCLUDED_SINGLE_EXT == []
|
||||
|
||||
@@ -8,7 +8,7 @@ from handler import dbh
|
||||
from utils.fs import build_upload_file_path, remove_file
|
||||
from utils.fastapi import scan_save, scan_state
|
||||
from logger.logger import log
|
||||
from config.config_loader import config
|
||||
from config.config_manager import config
|
||||
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import functools
|
||||
|
||||
from config.config_loader import ConfigLoader
|
||||
from config.config_manager import ConfigManager
|
||||
from models import Platform, Rom, User, Role, Save, State, Screenshot
|
||||
from fastapi import HTTPException, status
|
||||
from logger.logger import log
|
||||
@@ -11,7 +11,7 @@ from sqlalchemy.orm import Session, sessionmaker
|
||||
|
||||
class DBHandler:
|
||||
def __init__(self) -> None:
|
||||
self.engine = create_engine(ConfigLoader.get_db_engine(), pool_pre_ping=True)
|
||||
self.engine = create_engine(ConfigManager.get_db_engine(), pool_pre_ping=True)
|
||||
self.session = sessionmaker(bind=self.engine, expire_on_commit=False)
|
||||
|
||||
@staticmethod
|
||||
|
||||
@@ -3,13 +3,13 @@ import alembic.config
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
|
||||
from config.config_loader import ConfigLoader
|
||||
from config.config_manager import ConfigManager
|
||||
from models import Platform, Rom, User, Save, State, Screenshot
|
||||
from models.user import Role
|
||||
from utils.auth import get_password_hash
|
||||
from .. import dbh
|
||||
|
||||
engine = create_engine(ConfigLoader.get_db_engine(), pool_pre_ping=True)
|
||||
engine = create_engine(ConfigManager.get_db_engine(), pool_pre_ping=True)
|
||||
session = sessionmaker(bind=engine, expire_on_commit=False)
|
||||
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ import sys
|
||||
|
||||
import alembic.config
|
||||
import uvicorn
|
||||
from config.config_loader import ConfigDict, config
|
||||
from config.config_manager import ConfigDict, config
|
||||
from endpoints import identity, oauth, platform, rom, scan, search, tasks # noqa
|
||||
from fastapi import FastAPI
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
|
||||
@@ -2,7 +2,7 @@ from typing import Any
|
||||
|
||||
import emoji
|
||||
import os
|
||||
from config.config_loader import config
|
||||
from config.config_manager import config
|
||||
from models import Platform, Rom, Save, State, Screenshot
|
||||
from handler import dbh, igdbh
|
||||
from logger.logger import log
|
||||
|
||||
@@ -17,7 +17,7 @@ from config import (
|
||||
DEFAULT_URL_COVER_S,
|
||||
DEFAULT_PATH_COVER_S,
|
||||
)
|
||||
from config.config_loader import config
|
||||
from config.config_manager import config
|
||||
from exceptions.fs_exceptions import (
|
||||
PlatformsNotFoundException,
|
||||
RomAlreadyExistsException,
|
||||
|
||||
@@ -132,7 +132,7 @@ def test_rom_size():
|
||||
assert rom_size == (2.0, "KB")
|
||||
|
||||
def test__exclude_files():
|
||||
from config.config_loader import config
|
||||
from config.config_manager import config
|
||||
|
||||
config.EXCLUDED_SINGLE_FILES = ["Super Mario 64 (J) (Rev A) [Part 1].z64"]
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ from config import (
|
||||
LIBRARY_BASE_PATH,
|
||||
RESCAN_ON_FILESYSTEM_CHANGE_DELAY,
|
||||
)
|
||||
from config.config_loader import config
|
||||
from config.config_manager import config
|
||||
from endpoints.scan import scan_platforms
|
||||
from logger.logger import log
|
||||
from tasks.utils import tasks_scheduler
|
||||
|
||||
Reference in New Issue
Block a user