not sure what I was doing last time but I'm pretty sure it works better than it did

This commit is contained in:
2024-05-04 13:51:36 +10:00
parent 43c4ff2d75
commit 10586b480a
4 changed files with 50 additions and 30 deletions

View File

@@ -15,7 +15,7 @@ def _load(name,pos,file,obj):
for line in linegen(file):
split=line.split(',')
if split[pos]==name: return obj(*split)
raise Exception(f'No such {obj.__name__} with identifier {name}')
return None
def _load_multi(name,pos,file,obj):
out=[]
for line in linegen(file):
@@ -46,53 +46,56 @@ def load_token(tokeid):
def load_tokens(user):
return _load_multi(user.username,1,access_tokens,models.AccessToken)
def save_token(token):
return _save(token,0,access_tokens,token.value)
return _save(token,0,access_tokens,str(token))
def delete_token(token):
return _delete(token,0,access_tokens,token.value)
return _delete(token,0,access_tokens,str(token))
def load_invite(tokeid):
return _load(tokeid,0,invite_tokens,models.InviteToken)
def load_invites(user):
return _load_multi(user.username,1,invite_tokens,models.InviteToken)
def save_invite(token):
return _save(token,0,invite_tokens,token.value)
return _save(token,0,invite_tokens,str(token))
def delete_invite(token):
return _delete(token,0,invite_tokens,token.value)
return _delete(token,0,invite_tokens,str(token))
def linegen(path):
i=0
file=open(path)
line=file.readline().rstrip('\n') # Maybe sometimes there won't be one.
line=_rl(file)
while line:
i+=1
response=yield line
if response is not None: yield i
line=file.readline()
line=_rl(file)
file.close()
def update(path,lines):
def _action(file,i,line):
if i in lines: file.write(lines[i]+'\n')
else: file.write(line)
else: file.write(line+'\n')
def _post(file):
if -1 in lines: file.write(lines[-1]+'\n')
writefile(path,_action,_post)
def remove(path,lines):
def _action(file,i,line):
if i not in lines: file.write(line)
if i not in lines: file.write(line+'\n')
writefile(path,_action)
def writefile(path,action,post=None):
i=0
file=open(path)
write=open(f'{path}.tmp','w')
line=file.readline()
line=_rl(file)
while line:
i+=1
action(write,i,line)
line=file.readline().rstrip('\n')
line=_rl(file)
if post is not None: post(write)
file.close()
write.close()
rename(f'{path}.tmp',path)
rename(f'{path}.tmp',path)
def _rl(file):
return file.readline().rstrip('\n') # Maybe sometimes there won't be one.