Upgrading Django Checklist
Preliminary Requirements
- Testing Suite
- Testing Suite
- Testing Suite
- Development Environment
- Staging/Testing Environment
- List of Current Site Dependencies
- Did I mention a Testing Suite? he asked while grinding his axe
Goals
- Upgrade a Single Django Major Release
- eg: 1.4 to 1.5 to 1.6 to 1.7, not 1.4 to 1.7
- Divide and Conquer: Small Steps!
- Always Valid: Each Change Leads to a Valid Deploy
Upgrading Django
- Plan
- Upgrade Dependencies
- Each Dependency a Layer; Use Nested Lists
- For Each Upgrade In Nested List:
- Upgrade the Dependency
- Test
- Run Test Suite
- Fix Any Problems
- Repeat Process until Correct
- Update Documentation
- Update Deploy Scripts
- Commit and Push Changes in Version Control System
- Upgrade Django
- When Upgrading:
- Modify Code
- Test
python -Wall manage.py test
python -Werror manage.py test
- Repeat until Tests Pass
- Upgrade Process:
- Preempt Backwards Incompatible Changes
- Upgrade Django Package
- Backwards Incompatible Changes
- Replace Deprecated Features
- Integrate New Features