* refactor: remove dead and test-only code and the write-only prompt registry (#620) Removes helpers nothing calls, test-only wrappers and their tests, the unused config writer, three unused images, and the prompt registry the nodes wrote to but nothing read, which grew with every run. * fix: network-share readers, model unload off the loop, bad save requests (#620) Every read-only SQLite open now uses one URI helper, so a library on a Windows network share works in backups, restores, moves and history reads. Unloading a model no longer blocks the server. A malformed /save body gets a 400, not a 500. * feat(library): add Recently used, Most used and Name Z-A sorting (#620) The old Dashboard's sorts the community asked for, on the Prompt library, in saved views, and with paging through the whole list. * feat(workspace): stop linking the old pages (#620) They show a removal notice since 3.5.1. System no longer links them, the load failure offers a reload and ComfyUI instead, and the README says they are going away. The pages still work at their URLs.
26 lines
987 B
Python
26 lines
987 B
Python
"""The read-only SQLite URI of a path, safe for Windows network shares."""
|
|
|
|
import ntpath
|
|
import os
|
|
from pathlib import PurePosixPath, PureWindowsPath
|
|
from urllib.parse import quote
|
|
|
|
|
|
def readonly_uri(db_path, *, windows=None):
|
|
"""The ``mode=ro`` SQLite URI of *db_path*, on this platform or the given one.
|
|
|
|
pathlib spells a UNC path ``\\\\server\\share\\x.db`` as
|
|
``file://server/share/x.db``, a remote authority SQLite refuses to open.
|
|
With an empty authority (``file:////server/share/x.db``) SQLite hands
|
|
Windows the ``//server/share`` path, which it opens as the UNC path.
|
|
"""
|
|
if windows is None:
|
|
windows = os.name == "nt"
|
|
db_path = os.path.abspath(db_path)
|
|
if not windows:
|
|
return PurePosixPath(db_path).as_uri() + "?mode=ro"
|
|
path = PureWindowsPath(db_path)
|
|
if ntpath.splitdrive(str(path))[0].startswith("\\\\"):
|
|
return "file:" + quote("//" + path.as_posix()) + "?mode=ro"
|
|
return path.as_uri() + "?mode=ro"
|