diff --git a/bin/getRepoInfo.py b/bin/getRepoInfo.py index 4897725..2c235bd 100644 --- a/bin/getRepoInfo.py +++ b/bin/getRepoInfo.py @@ -98,15 +98,17 @@ def get_image_info(repo_data, trash_data, image_name, image_ext): """ dictionary = "" # Buscamos la imagen en el repositorio, y si la encontramos creamos un diccionario con los datos: - for image in repo_data['images']: - if image['name'] == image_name and image['type'] == image_ext: - dictionary = {"directory": repo_data['directory'], - "images": [image]} + if repo_data != "": + for image in repo_data['images']: + if image['name'] == image_name and image['type'] == image_ext: + dictionary = {"directory": repo_data['directory'], + "images": [image]} # Buscamos la imagen en la papelera, y si la encontramos creamos un diccionario con los datos: - for image in trash_data['images']: - if image['name'] == image_name: - dictionary = {"directory": trash_data['directory'], - "images": [image]} + if trash_data != "": + for image in trash_data['images']: + if image['name'] == image_name: + dictionary = {"directory": trash_data['directory'], + "images": [image]} # Si hemos obtenido datos de la imagen, los pasamos a json y los imprmimos, # y si no, imprimimos un mensaje de error y salimos del script: if dictionary != "": @@ -124,19 +126,21 @@ def get_ou_image_info(repo_data, trash_data, image_name, image_ext, ou_subdir): """ dictionary = "" # Buscamos la OU y la imagen en el repositorio, y si los encontramos creamos un diccionario con los datos: - for ou in repo_data['ous']: - if ou['subdir'] == ou_subdir: - for image in ou['images']: - if image['name'] == image_name and image['type'] == image_ext: - dictionary = {"directory": repo_data['directory'], - "ous": [{"subdir": ou_subdir, "images": [image]}]} + if repo_data != "": + for ou in repo_data['ous']: + if ou['subdir'] == ou_subdir: + for image in ou['images']: + if image['name'] == image_name and image['type'] == image_ext: + dictionary = {"directory": repo_data['directory'], + "ous": [{"subdir": ou_subdir, "images": [image]}]} # Buscamos la OU y la imagen en la papelera, y si los encontramos creamos un diccionario con los datos: - for ou in trash_data['ous']: - if ou['subdir'] == ou_subdir: - for image in ou['images']: - if image['name'] == image_name: - dictionary = {"directory": trash_data['directory'], - "ous": [{"subdir": ou_subdir, "images": [image]}]} + if trash_data != "": + for ou in trash_data['ous']: + if ou['subdir'] == ou_subdir: + for image in ou['images']: + if image['name'] == image_name: + dictionary = {"directory": trash_data['directory'], + "ous": [{"subdir": ou_subdir, "images": [image]}]} # Si hemos obtenido datos de la imagen, los pasamos a json y los imprmimos, # y si no, imprimimos un mensaje de error y salimos del script: if dictionary != "": @@ -159,13 +163,21 @@ def main(): # Evaluamos si se ha enviado la cantidad correcta de parámetros, y en el formato correcto: check_params() - # Almacenamos la información de las imágenes del repositorio, en la variable "repo_data": - with open(repo_file, 'r') as file: - repo_data = json.load(file) + # Almacenamos la información de las imágenes del repositorio, en la variable "repo_data" + # (solo si el archivo tiene contenido, o dará error): + if os.path.getsize(repo_file) > 0: + with open(repo_file, 'r') as file: + repo_data = json.load(file) + else: + repo_data = "" - # Almacenamos la información de las imágenes de la papelera, en la variable "trash_data": - with open(trash_file, 'r') as file: - trash_data = json.load(file) + # Almacenamos la información de las imágenes de la papelera, en la variable "trash_data" + # (solo si el archivo tiene contenido, o dará error): + if os.path.getsize(trash_file) > 0: + with open(trash_file, 'r') as file: + trash_data = json.load(file) + else: + trash_data = "" # Dependiendo del valor de los parámetros, llamamos a la función correspondiente, para imprimir la información # (extrayendo el nombre, la extensión de la imagen, y/o la OU cuando se necesite): diff --git a/bin/updateRepoInfo.py b/bin/updateRepoInfo.py index 8beb3c6..dab0d65 100644 --- a/bin/updateRepoInfo.py +++ b/bin/updateRepoInfo.py @@ -163,9 +163,13 @@ def add_to_json(image_name, image_type, data, size, _sum, fullsum): "sum": _sum, "fullsum": fullsum } - # Almacenamos el contenido del archivo "repoinfo.json" en la variable "info_data": - with open(info_file, 'r') as file: - info_data = json.load(file) + # Almacenamos el contenido del archivo "repoinfo.json" en la variable "info_data" + # (y si no tiene contenido creamos la estructura básica): + if os.path.getsize(info_file) > 0: + with open(info_file, 'r') as file: + info_data = json.load(file) + else: + info_data = {"directory": repo_path, "images": [], "ous": []} # Comprobamos si las claves "info_data" (o sea, del archivo json) son las correctas: if set(info_data.keys()) == {"directory", "images", "ous"}: @@ -301,10 +305,12 @@ def main(): check_dirs() # Llamamos a la función "remove_from_json", para eliminar del archivo json las imágenes que fueron eliminadas del repositorio: - print("Removing deleted images...") - remove_from_json() + if os.path.getsize(info_file) > 0: + print("Removing deleted images...") + remove_from_json() - # Actualizamos la información de la papelera, ejecutando el script "updateTrashInfo.py": + # Actualizamos la información de la papelera, ejecutando el script "updateTrashInfo.py" + # (solo si el archivo tiene contenido, o dará error): print("Updating Trash Info...") update_trash_info() diff --git a/bin/updateTrashInfo.py b/bin/updateTrashInfo.py index eed6968..626fa44 100644 --- a/bin/updateTrashInfo.py +++ b/bin/updateTrashInfo.py @@ -174,9 +174,13 @@ def add_to_json(image_name, image_type, data, size, _sum, fullsum): "sum": _sum, "fullsum": fullsum } - # Almacenamos el contenido del archivo "trashinfo.json" en la variable "info_data": - with open(info_file, 'r') as file: - info_data = json.load(file) + # Almacenamos el contenido del archivo "trashinfo.json" en la variable "info_data" + # (y si no tiene contenido creamos la estructura básica): + if os.path.getsize(info_file) > 0: + with open(info_file, 'r') as file: + info_data = json.load(file) + else: + info_data = {"directory": trash_path, "images": [], "ous": []} # Comprobamos si las claves "info_data" (o sea, del archivo json) son las correctas: if set(info_data.keys()) == {"directory", "images", "ous"}: @@ -301,9 +305,11 @@ def main(): print("Checking dir images...") check_dirs() - # Llamamos a la función "remove_from_json", para eliminar del archivo json las imágenes que ya no están en la papelera: - print("Removing inexistent images...") - remove_from_json() + # Llamamos a la función "remove_from_json", para eliminar del archivo json las imágenes que ya no están en la papelera + # (solo si el archivo tiene contenido, o dará error): + if os.path.getsize(info_file) > 0: + print("Removing inexistent images...") + remove_from_json()