#!/usr/bin/env python3 """ Targeted permission fix for specific directories only This script fixes permissions ONLY for the directories you're interested in """ import os import stat from pathlib import Path def fix_specific_permissions(): """Fix permissions only for the target directories and their contents""" # Target directories (both actual and symlink paths) target_dirs = [ ".cache/Generated", ".cache/static", ".cache/view_session", "Generated", # symlink "static", # symlink "view_session" # symlink ] print("šŸ”§ Fixing permissions for specific directories only...") print("=" * 50) for dir_path in target_dirs: path_obj = Path(dir_path) if not path_obj.exists(): print(f"āš ļø {dir_path} - Does not exist, skipping") continue try: # Fix the directory itself if path_obj.is_dir() and not path_obj.is_symlink(): current_perms = oct(path_obj.stat().st_mode)[-3:] path_obj.chmod(0o755) # rwxr-xr-x print(f"āœ… {dir_path} - Fixed directory permissions ({current_perms} → 755)") # Fix all contents recursively fix_contents_permissions(path_obj) elif path_obj.is_symlink(): print(f"šŸ”— {dir_path} - Symbolic link (no permission fix needed)") else: print(f"āš ļø {dir_path} - Not a directory, skipping") except Exception as e: print(f"āŒ {dir_path} - Error: {e}") def fix_contents_permissions(directory_path): """Recursively fix permissions for directory contents""" try: for item in directory_path.rglob("*"): try: if item.is_dir(): item.chmod(0o755) # Directories: rwxr-xr-x elif item.is_file(): item.chmod(0o644) # Files: rw-r--r-- except Exception as e: print(f" āš ļø {item} - Could not fix: {e}") except Exception as e: print(f" āŒ Error scanning {directory_path}: {e}") def check_permissions(): """Check current permissions of target directories""" print("\nšŸ” Current Permissions Check:") print("-" * 30) target_dirs = [ ".cache/Generated", ".cache/static", ".cache/view_session" ] for dir_path in target_dirs: path_obj = Path(dir_path) if path_obj.exists(): perms = oct(path_obj.stat().st_mode)[-3:] access_status = "āœ… Accessible" if perms in ["755", "775"] else "āŒ Restricted" print(f"{dir_path:20} - {perms} ({access_status})") else: print(f"{dir_path:20} - Does not exist") if __name__ == "__main__": print("šŸŽÆ Targeted Permission Fix for Specific Directories") print("This script ONLY affects view_session, Generated, and static folders") print("=" * 70) # Check current state check_permissions() # Ask for confirmation print("\n" + "=" * 50) response = input("Fix permissions for these directories? (y/N): ").strip().lower() if response in ['y', 'yes']: fix_specific_permissions() print("\n" + "=" * 50) print("āœ… Permission fix complete!") check_permissions() else: print("Operation cancelled.")