From: Christian Heller Date: Fri, 5 Sep 2025 14:43:25 +0000 (+0200) Subject: Re-organize NickUserHost field updating code. X-Git-Url: https://plomlompom.com/repos/balance?a=commitdiff_plain;h=01c9853198ff94aabe84b3aca77f6e88e6ffc816;p=ircplom Re-organize NickUserHost field updating code. --- diff --git a/ircplom/client.py b/ircplom/client.py index 35f354d..69581e4 100644 --- a/ircplom/client.py +++ b/ircplom/client.py @@ -525,20 +525,26 @@ class _ClientDb(_UpdatingMixin, SharedClientDbFields): if len(matches) == 1: id_ = matches[0] if '?' in {nickuserhost.user, nickuserhost.host}: - assert nickuserhost.user == nickuserhost.host + assert nickuserhost.user == nickuserhost.host # both are '?' + # only provided with .nick, no fields we could update return id_ stored = self.users[id_] - if '?' in {stored.user, stored.host}: - assert stored.host in {stored.user, '?'} + # .nick by definition same, check other fields for updatability; + # allow where '?', or for set .user only to add "~" prefix, assert + # nothing else could have changed + if stored.host == '?': assert updating - self.users.set_updating(id_, nickuserhost) - else: - assert nickuserhost.host == stored.host - if nickuserhost.user == f'~{stored.user}': - assert updating - self.users.set_updating(id_, nickuserhost) + stored.host = nickuserhost.host + if stored.user == '?': + stored.user = nickuserhost.user else: assert nickuserhost.user == stored.user + elif nickuserhost.user == f'~{stored.user}': + assert updating + assert stored.host == nickuserhost.host + stored.user = nickuserhost.user + else: # not seen set .host with unset .user yet + assert stored.user != '?' elif create_if_none: id_ = str(uuid4()) self.users.set_updating(id_, nickuserhost)