mirror of
https://github.com/ergochat/ergo.git
synced 2024-11-11 06:29:29 +01:00
fix #1403
Handle the case where atheme had a successor, but didn't correctly elect them as founder (?)
This commit is contained in:
parent
b95afa1464
commit
468b5a4a39
@ -140,14 +140,31 @@ def convert(infile):
|
||||
chdata['amode'][username] = 'h'
|
||||
elif 'v' in flags or 'V' in flags:
|
||||
chdata['amode'][username] = 'v'
|
||||
elif 'S' in flags:
|
||||
# take the first entry as the successor
|
||||
if not chdata.get('successor'):
|
||||
chdata['successor'] = username
|
||||
else:
|
||||
pass
|
||||
|
||||
# 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():
|
||||
founder = chdata.get('founder')
|
||||
if founder not in out['users']:
|
||||
raise ValueError("no user corresponding to channel founder", chname, chdata.get('founder'))
|
||||
if not validate_user(chdata.get('founder')):
|
||||
if validate_user(chdata.get('successor')):
|
||||
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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user