3
0
mirror of https://github.com/ergochat/ergo.git synced 2024-11-14 07:59:31 +01:00
Handle the case where atheme had a successor, but didn't correctly
elect them as founder (?)
This commit is contained in:
Shivaram Lingamneni 2020-12-06 20:50:06 -05:00
parent b95afa1464
commit 468b5a4a39

View File

@ -140,14 +140,31 @@ def convert(infile):
chdata['amode'][username] = 'h' chdata['amode'][username] = 'h'
elif 'v' in flags or 'V' in flags: elif 'v' in flags or 'V' in flags:
chdata['amode'][username] = 'v' chdata['amode'][username] = 'v'
elif 'S' in flags:
# take the first entry as the successor
if not chdata.get('successor'):
chdata['successor'] = username
else: else:
pass pass
# do some basic integrity checks # do some basic integrity checks
def validate_user(name):
if not name:
return False
return bool(out['users'].get(name))
invalid_channels = []
for chname, chdata in out['channels'].items(): for chname, chdata in out['channels'].items():
founder = chdata.get('founder') if not validate_user(chdata.get('founder')):
if founder not in out['users']: if validate_user(chdata.get('successor')):
raise ValueError("no user corresponding to channel founder", chname, chdata.get('founder')) chdata['founder'] = chdata['successor']
else:
invalid_channels.append(chname)
for chname in invalid_channels:
logging.warning("Unable to find a valid founder for channel %s, discarding it", chname)
del out['channels'][chname]
return out return out