config: purge all but the last 10 drawings from the config storage directory
Tuhi is not a permanent storage for drawings, this needs to be handled by the client(s). To make sure no-one is tempted to use it as permanent storage, always delete all but the last 10 drawings on startup. Fixes #45
This commit is contained in:
parent
83852701ec
commit
1a25163733
|
@ -64,6 +64,8 @@ class TuhiConfig(GObject.Object):
|
|||
config = configparser.ConfigParser()
|
||||
config.read(path)
|
||||
|
||||
self._purge_drawings(entry)
|
||||
|
||||
assert config['Device']['Address'] == entry.name
|
||||
self._devices[entry.name] = config['Device']
|
||||
|
||||
|
@ -133,3 +135,22 @@ class TuhiConfig(GObject.Object):
|
|||
drawings.append(d)
|
||||
|
||||
return drawings
|
||||
|
||||
def _purge_drawings(self, directory):
|
||||
'''Removes all but the most recent 10 files from the config
|
||||
directory. This is primarily done so that no-one relies on the tuhi
|
||||
daemon for permanent storage.'''
|
||||
|
||||
files = []
|
||||
with os.scandir(directory) as it:
|
||||
for entry in it:
|
||||
if entry.is_file() and entry.name.endswith('.json'):
|
||||
files.append(entry)
|
||||
|
||||
if len(files) <= 10:
|
||||
return
|
||||
|
||||
files.sort(key=lambda e: e.name)
|
||||
for f in files[:-10]:
|
||||
logger.debug(f'{directory.name}: purging {f.name}')
|
||||
os.remove(f)
|
||||
|
|
Loading…
Reference in New Issue