not sure what I was doing last time but I'm pretty sure it works better than it did
This commit is contained in:
@@ -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.
|
Reference in New Issue
Block a user