toxygen/toxygen/user_data/backup_service.py

41 lines
1.3 KiB
Python

import os.path
from utils.util import get_profile_name_from_path, join_path
class BackupService:
def __init__(self, settings, profile_manager):
self._settings = settings
self._profile_name = get_profile_name_from_path(profile_manager.get_path())
settings.settings_saved_event.add_callback(self._settings_saved)
profile_manager.profile_saved_event.add_callback(self._profile_saved)
def _settings_saved(self, data):
if not self._check_if_should_save_backup():
return
file_path = join_path(self._get_backup_directory(), self._profile_name + '.json')
with open(file_path, 'wt') as fl:
fl.write(data)
def _profile_saved(self, data):
if not self._check_if_should_save_backup():
return
file_path = join_path(self._get_backup_directory(), self._profile_name + '.tox')
with open(file_path, 'wb') as fl:
fl.write(data)
def _check_if_should_save_backup(self):
backup_directory = self._get_backup_directory()
if backup_directory is None:
return False
return os.path.exists(backup_directory) and os.path.isdir(backup_directory)
def _get_backup_directory(self):
return self._settings['backup_directory']