diff --git a/groupTasks/groups/shx-all-in-one-order/empty.py b/groupTasks/groups/shx-all-in-one-order/empty.py new file mode 100644 index 0000000..e69de29 diff --git a/groupTasks/groups/shx-all-in-one-order/index.json b/groupTasks/groups/shx-all-in-one-order/index.json new file mode 100644 index 0000000..b28e916 --- /dev/null +++ b/groupTasks/groups/shx-all-in-one-order/index.json @@ -0,0 +1,99 @@ +{ + "category": "Shinnex", + "name": "All-in-One Bestelltask", + "globalInputs": [], + "tasks": [ + { + "name": "Gummibärchen einpacken", + "onFinish": "pause", + "undoPossible": false, + "repeatPossible": true, + "scriptPath": "empty.py", + "parameters": [] + }, + { + "name": "Produktschilder ausdrucken", + "onFinish": "pause", + "undoPossible": false, + "repeatPossible": true, + "scriptPath": "product-label-script.py", + "parameters": [ + { + "parameterName": "label_paper_position", + "type": "text", + "displayName": "Position auf dem A4 Blatt (Beginnend mit 1 von oben links) (Mit Komma trennbar wie z. B. 1,3,7)" + }, + { + "parameterName": "product_type_id", + "type": "select", + "displayName": "Produkttyp auswählen", + "options": [ + "#32420; Gizmo die Eidechse; Grün, Blau, Orange; (Glänzend)", + "#92784; Gizmo die Eidechse; Glitzer Grün; (Seidenmatt)", + "#36521; Charlie das Häschen; Hellbraun; (Matt)", + "#48273; Charlie das Häschen; Gold; (Glänzend)", + "#71936; Ruby die Schlange; Feuerrot; (Glänzend)", + "#58324; Ruby die Schlange; Rot/Blau; (Glänzend)", + "#21433; Bruno der Dino; Grün/Blau/Orange; (Glänzend)", + "#57953; Bruno der Dino; Rot/Blau; (Glänzend)", + "#90578; Bruno der Dino; Gold; (Glänzend)", + "#51563; Bruno der Dino; Himmelblau; (Fluoreszierend)" + ] + } + ] + }, + { + "name": "Gutscheincodes für Bestellung erstellen", + "onFinish": "pause", + "undoPossible": false, + "repeatPossible": true, + "scriptPath": "order-voucher-codes-script.py", + "parameters": [ + { + "parameterName": "orderId", + "type": "text", + "displayName": "Bestellnummer" + }, + { + "parameterName": "customerEmail", + "type": "text", + "displayName": "E-Mail vom Kunden" + }, + { + "parameterName": "customerName", + "type": "text", + "displayName": "Vorname vom Kunden" + }, + { + "parameterName": "productUrl", + "type": "text", + "displayName": "URL vom Produkt (Shopify) (z. B. https://shinnex.de/products/gizmo) (für Direktweiterleitung 5 € Gutschein QR-Code)" + }, + { + "parameterName": "discountCode", + "type": "text", + "displayName": "10 % Gutscheincode für den Kunden (in Shopify erstellen)" + } + ] + }, + { + "name": "Versandlabel erstellen", + "onFinish": "pause", + "undoPossible": false, + "repeatPossible": true, + "scriptPath": "order-package-label-script.py", + "parameters": [ + { + "parameterName": "shipping_label_url", + "type": "text", + "displayName": "Bild-URL des Versandlabels" + }, + { + "parameterName": "customer_first_name", + "type": "text", + "displayName": "Vorname des Kunden" + } + ] + } + ] +} \ No newline at end of file diff --git a/groupTasks/groups/shx-all-in-one-order/order-package-label-script.py b/groupTasks/groups/shx-all-in-one-order/order-package-label-script.py new file mode 100644 index 0000000..885a297 --- /dev/null +++ b/groupTasks/groups/shx-all-in-one-order/order-package-label-script.py @@ -0,0 +1,11 @@ +import sys +import os + +sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '../..'))) + +from libs.utils import utils + +if __name__ == "__main__": + utils.delete_folder("oldFiles") + + utils.execute_another_group_task("../../groups/shx-order-package-label/", "script.py") diff --git a/groupTasks/groups/shx-all-in-one-order/order-voucher-codes-script.py b/groupTasks/groups/shx-all-in-one-order/order-voucher-codes-script.py new file mode 100644 index 0000000..5b0043a --- /dev/null +++ b/groupTasks/groups/shx-all-in-one-order/order-voucher-codes-script.py @@ -0,0 +1,11 @@ +import sys +import os + +sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '../..'))) + +from libs.utils import utils + +if __name__ == "__main__": + utils.delete_folder("oldFiles") + + utils.execute_another_group_task("../../groups/shx-order-voucher-codes/", "script.py") diff --git a/groupTasks/groups/shx-all-in-one-order/product-label-script.py b/groupTasks/groups/shx-all-in-one-order/product-label-script.py new file mode 100644 index 0000000..c460d04 --- /dev/null +++ b/groupTasks/groups/shx-all-in-one-order/product-label-script.py @@ -0,0 +1,9 @@ +import sys +import os + +sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '../..'))) + +from libs.utils import utils + +if __name__ == "__main__": + utils.execute_another_group_task("../../groups/shx-product-label/", "script.py") diff --git a/groupTasks/libs/utils/__pycache__/utils.cpython-39.pyc b/groupTasks/libs/utils/__pycache__/utils.cpython-39.pyc index 5ba044b..293fc64 100644 Binary files a/groupTasks/libs/utils/__pycache__/utils.cpython-39.pyc and b/groupTasks/libs/utils/__pycache__/utils.cpython-39.pyc differ diff --git a/groupTasks/libs/utils/utils.py b/groupTasks/libs/utils/utils.py index 319dfb2..902d0ba 100644 --- a/groupTasks/libs/utils/utils.py +++ b/groupTasks/libs/utils/utils.py @@ -2,13 +2,23 @@ import subprocess import PyPDF2 import os import shutil +import sys + def clear_workspace(files): if not files or not isinstance(files, list) or len(files) == 0: return for file in files: - subprocess.run(["rm", file]) + if os.path.exists(file): + os.remove(file) + + +def delete_folder(folder_path): + try: + shutil.rmtree(folder_path) + except Exception as e: + print(f"Error deleting the folder {folder_path}: {e}") def merge_pdfs(pdf1_path, pdf2_path, output_path): @@ -42,4 +52,64 @@ def move_files_back_from_old_files(): if os.path.exists("oldFiles"): for file in os.listdir("oldFiles"): shutil.move(os.path.join("oldFiles", file), file) - os.rmdir("oldFiles") \ No newline at end of file + os.rmdir("oldFiles") + + +# copy the tasks files from another task to the current runningTasks to execute it +# be aware of that in your work directory the python script has not the same name as the target script because it will be overwriten +def execute_another_group_task(folder_path, script_file_name): + work_directory = os.getcwd() # get current folder path + + copy_files(folder_path, work_directory) + clear_workspace(["index.json", "requirements.txt"]) + + execute_python_file(script_file_name) + + +def execute_python_file(file_path): + if not os.path.exists(file_path): + print(f"The file {file_path} does not exist.") + sys.exit(1) + return + + if not file_path.endswith('.py'): + print("The specified file is not a Python file.") + sys.exit(1) + return + + try: + #base_dir = os.path.dirname(os.path.abspath(file_path)) + #os.chdir(base_dir) # Change to the directory of the script + subprocess.run(['python3.9', os.path.basename(file_path)] + sys.argv[1:], check=True) + except subprocess.CalledProcessError as e: + print(f"Error executing the file: {e}") + sys.exit(1) + except Exception as e: + print(f"An unexpected error occurred: {e}") + sys.exit(1) + + +def copy_files(source_folder, destination_folder): + if not os.path.exists(source_folder): + print(f"The source folder {source_folder} does not exist.") + sys.exit(1) + return + + if not os.path.exists(destination_folder): + print(f"The destination folder {destination_folder} does not exist.") + sys.exit(1) + return + + try: + # List all files in the source folder + files = os.listdir(source_folder) + + # Copy each file to the destination folder + for file in files: + source_path = os.path.join(source_folder, file) + destination_path = os.path.join(destination_folder, file) + shutil.copy2(source_path, destination_path) + + except Exception as e: + print(f"An error occurred while copying files: {e}") + sys.exit(1) \ No newline at end of file