mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2026-08-19 01:15:04 -05:00
Five small defensive fixes that were exposed by running the full regression suite end-to-end: 1. utils/validation_utils.py: validate_email() now returns False instead of raising TypeError when passed a non-str/bytes value (e.g. None from a missing form field). Matches the wrapper's contract that it only ever returns bool. 2. tools/user_management/__init__.py: list endpoint guarded against users with no roles. u.roles[0].id -> u.roles[0].id if u.roles else None. Triggered by ChangePasswordTestCase fixtures. 3. utils/preferences.py: control_props['tags'] / ['creatable'] replaced with .get(...) so preferences whose control_props omit these keys do not raise KeyError on update. 4. browser/server_groups/servers/__init__.py (create endpoint): convert_connection_parameter() is bidirectional (list<->dict). The save path always wants the storage shape (dict). When input is already a dict (internal callers / tests mimicking storage form), skip conversion to avoid the dict->list round-trip that breaks the MutableDict column. Same fix applied to the workspaces save path. 5. misc/workspaces/__init__.py: same defensive handling for convert_connection_parameter() on the save path. These are all pre-existing master bugs surfaced by edge-case test data; none are introduced by the 9.15 CVE work.