test: add comprehensive tests for critical untested files and fix deprecated warnings

- Add tests for migrate_logs_to_steps.py, upload_to_paperless.py, dropbox API,
  upload_to_dropbox.py, upload_to_nextcloud.py, upload_to_onedrive.py,
  upload_with_rclone.py, and config_validator.py
- Fix PydanticDeprecatedSince20: @validator → @field_validator in config.py, url_upload.py
- Fix PydanticDeprecatedSince20: class Config → model_config = SettingsConfigDict
- Fix PydanticDeprecatedSince211: filter Pydantic internals in settings_display.py
- Fix MovedIn20Warning: use sqlalchemy.orm.declarative_base instead of ext.declarative

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2026-02-12 17:32:17 +00:00
parent fca5236b47
commit dff32e08e1
12 changed files with 2840 additions and 35 deletions
@@ -9,12 +9,15 @@ from app.utils.config_validator.masking import mask_sensitive_value
logger = logging.getLogger(__name__)
# Pydantic model attributes that should not be iterated as user settings
_PYDANTIC_INTERNALS = {"model_computed_fields", "model_config", "model_extra", "model_fields", "model_fields_set"}
def dump_all_settings():
"""Log all settings values for diagnostic purposes"""
logger.info("--- DUMPING ALL SETTINGS FOR DIAGNOSTIC PURPOSES ---")
for key in dir(settings):
if not key.startswith("_") and not callable(getattr(settings, key)):
if not key.startswith("_") and key not in _PYDANTIC_INTERNALS and not callable(getattr(settings, key)):
value = getattr(settings, key)
# Mask sensitive values in logs
if (
@@ -190,8 +193,8 @@ def get_settings_for_display(show_values=False):
key
for key in dir(settings)
if not key.startswith("_")
and key not in _PYDANTIC_INTERNALS
and not callable(getattr(settings, key))
and key not in ["model_computed_fields", "model_config", "model_extra", "model_fields", "model_fields_set"]
]
)