Spaces:
Sleeping
Sleeping
| #!/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.") |