import uuid from pathlib import Path from iottb.models.device_metadata_model import dir_contains_device_metadata from iottb.utils.utils import get_iso_date def get_capture_uuid(): return str(uuid.uuid4()) def get_capture_date_folder(device_root: Path): today_iso = get_iso_date() today_folder = device_root / today_iso if dir_contains_device_metadata(device_root): if not today_folder.is_dir(): try: today_folder.mkdir() except FileExistsError: print(f"Folder {today_folder} already exists") return today_folder raise FileNotFoundError(f"Given path {device_root} is not a device root directory") def get_capture_src_folder(device_folder: Path): assert device_folder.is_dir(), f"Given path {device_folder} is not a folder" today_iso = get_iso_date() max_sequence_number = 1 for d in device_folder.iterdir(): if d.is_dir() and d.name.startswith(f'{today_iso}_capture_'): name = d.name num = int(name.split("_")[2]) max_sequence_number = max(max_sequence_number, num) next_sequence_number = max_sequence_number + 1 return device_folder.joinpath(f"{today_iso}_capture_{next_sequence_number:03}") def make_capture_src_folder(capture_src_folder: Path): try: capture_src_folder.mkdir() except FileExistsError: print(f"Folder {capture_src_folder} already exists") finally: return capture_src_folder