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