From e85776fae63cd9a41a598d50364ccc6b313c77d3 Mon Sep 17 00:00:00 2001 From: xBelladonna Date: Mon, 22 Apr 2019 01:46:33 +0930 Subject: [PATCH] Handle hid collision case --- src/pluralkit/system.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/pluralkit/system.py b/src/pluralkit/system.py index 2112c650..02c78161 100644 --- a/src/pluralkit/system.py +++ b/src/pluralkit/system.py @@ -51,6 +51,8 @@ class System(namedtuple("System", ["id", "hid", "name", "description", "tag", "a raise errors.ExistingSystemError() new_hid = generate_hid() + while await System.get_by_hid(conn, new_hid): + new_hid = generate_hid() async with conn.transaction(): new_system = await db.create_system(conn, system_name, new_hid) @@ -122,11 +124,12 @@ class System(namedtuple("System", ["id", "hid", "name", "description", "tag", "a return await self.refresh_token(conn) async def create_member(self, conn, member_name: str) -> Member: - # TODO: figure out what to do if this errors out on collision on generate_hid - new_hid = generate_hid() - if len(member_name) > self.get_member_name_limit(): raise errors.MemberNameTooLongError(tag_present=bool(self.tag)) + + new_hid = generate_hid() + while await db.get_member_by_hid(conn, new_hid): + new_hid = generate_hid() member = await db.create_member(conn, self.id, member_name, new_hid) return member