HH/IMPORT_ERROR_FIX.md

46 lines
1.7 KiB
Markdown

# ImportError Fix Summary
## Issue
**Error:** `ImportError: cannot import name 'create_action_from_negative_survey' from 'apps.surveys.tasks'`
**Location:** `apps/surveys/public_views.py`, line 240
## Root Cause
The function `create_action_from_negative_survey` **did exist** in `apps/surveys/tasks.py`, but Python was unable to import it due to stale bytecode cache. This commonly occurs when:
- The Python source file is modified
- The `.pyc` (compiled Python) files in `__pycache__` directories become outdated
- Python imports the old cached bytecode instead of the updated source
## Solution
Cleared all Python bytecode cache files and directories:
```bash
find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null
find . -name "*.pyc" -delete 2>/dev/null
```
## Verification
Created and ran test script (`test_import_fix.py`) to verify the fix:
```python
from apps.surveys.tasks import create_action_from_negative_survey
```
**Result:** ✅ Import successful
## Function Details
- **Function Name:** `create_action_from_negative_survey`
- **Location:** `apps/surveys/tasks.py`
- **Purpose:** Celery task to create PX Actions from negative survey responses
- **Decorators:** `@shared_task`
## Next Steps
1. Restart the Django development server to ensure fresh imports
2. Test survey submission at `/surveys/s/{token}/` endpoint
3. Verify that negative surveys properly trigger PX Action creation
## Prevention
To prevent similar issues in the future:
- Always clear cache after major code changes
- Consider adding a management command to clear cache: `python manage.py clear_cache`
- Use `python manage.py runserver --noreload` during development to reduce cache issues