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:
parent
48885e59bb
commit
143aaf245a
1 changed files with 45 additions and 2 deletions
|
|
@ -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:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue