From 143aaf245a608f11c22d34fd74106731e2587180 Mon Sep 17 00:00:00 2001 From: Dave Porter Date: Thu, 18 Dec 2025 14:11:27 -0500 Subject: [PATCH] CRITICAL FIX: Create folders inside Business Areas, not at root - Add get_business_areas_folder() method to find/create Business Areas - Update get_or_create_folder() to default to Business Areas as parent - Cache Business Areas folder ID for performance - Now creates structure: LGL Team > Business Areas > [Robots/PetCare/etc] - Prevents creating folders at root level This fixes the issue where folders like 'Robots' were created at the space root instead of inside Business Areas. --- wrike_monitor_lgl.py | 47 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/wrike_monitor_lgl.py b/wrike_monitor_lgl.py index ca04b5e..a6db6a7 100644 --- a/wrike_monitor_lgl.py +++ b/wrike_monitor_lgl.py @@ -213,6 +213,7 @@ class WrikeMonitor: # Caches self.folder_cache = {} self.project_cache = {} + self.business_areas_id = None # Cache for Business Areas folder # Track recently processed files self.recently_processed: Set[str] = set() @@ -295,10 +296,52 @@ class WrikeMonitor: except: return None + def get_business_areas_folder(self): + """Get or create the Business Areas folder (parent for all business area folders)""" + if self.business_areas_id: + return self.business_areas_id + + # Search for Business Areas folder in space + result = self.make_wrike_request("GET", f"/folders/{Config.WRIKE_SPACE_ID}/folders") + + if result and "data" in result: + # Find space folder with childIds + space_folder = None + for item in result["data"]: + if item["id"] == Config.WRIKE_SPACE_ID: + space_folder = item + break + + if space_folder: + child_ids = space_folder.get("childIds", []) + # Search for Business Areas in direct children + for folder in result["data"]: + if folder["id"] in child_ids and folder["title"] == "Business Areas": + self.business_areas_id = folder["id"] + self.logger.info(f"✓ Found Business Areas folder: {self.business_areas_id}") + return self.business_areas_id + + # Business Areas doesn't exist - create it + self.logger.info("Creating Business Areas folder...") + data = {"title": "Business Areas", "description": "Parent folder for all business area categories"} + result = self.make_wrike_request("POST", f"/folders/{Config.WRIKE_SPACE_ID}/folders", data) + + if result and "data" in result and len(result["data"]) > 0: + self.business_areas_id = result["data"][0]["id"] + self.logger.info(f"✓ Created Business Areas folder: {self.business_areas_id}") + return self.business_areas_id + + self.logger.error("Failed to create Business Areas folder!") + return None + def get_or_create_folder(self, folder_name, parent_id=None): - """Get existing folder or create new one""" + """Get existing folder or create new one (inside Business Areas by default)""" if parent_id is None: - parent_id = Config.WRIKE_SPACE_ID + # Default to Business Areas folder, not space root + parent_id = self.get_business_areas_folder() + if not parent_id: + self.logger.error("Cannot create folder - Business Areas folder not found") + return None cache_key = f"{parent_id}:{folder_name}" if cache_key in self.folder_cache: