home-backup/home_backup/user_service/backups.py

58 lines
1.7 KiB
Python

from .. import utils
class Backup():
name:str
periode:int
blocked:set
def __init__(self, name:str, periode:int=None, blocked:list=[]):
# Check args
utils.valid_name_check(name)
if periode is not None and not isinstance(periode, int):
raise TypeError("Periode have to be an integer or null.")
if periode is not None and periode < 0:
raise ValueError("periode can't be negetive.")
blocked = set(blocked)
for i in blocked:
utils.valid_name_check(i)
# Set values
self.name = name
self.periode = periode
self.blocks = blocked
def get_next_scedule(self, latest, zero):
if self.periode is not None:
tmp = (latest - zero) // self.periode
return zero + self.periode * (tmp + 1)
else:
raise NotImplementedError("No implemented types.")
def dump_config(self):
result = {}
if self.blocked:
result["blocked"] = ",".join(self.blocked)
if self.periode is not None:
result["periode"] = str(self.periode)
return result
@staticmethod
def load_backup(name:str, config):
# Load informations
config = dict(config.items())
periode = None
if "periode" in config:
periode = int(config["periode"])
del config["periode"]
blocked = []
if "blocked" in config:
blocked = config["blocked"].split(",")
del config["blocked"]
# Generate backup
utils.check_empty_data_dict(config)
return Backup(name=name, periode=periode, blocked=blocked)