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.
This commit is contained in:
Dave Porter 2025-12-18 14:11:27 -05:00
parent 48885e59bb
commit 143aaf245a

View file

@ -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: