46 lines
1.7 KiB
Markdown
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 |