mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 11:51:10 -05:00
2.7 KiB
2.7 KiB
History Tracking Migration
Context
The project is transitioning from django-simple-history to django-pghistory for model history tracking.
Implementation Details
Base Implementation (history_tracking/models.py)
- Both old and new implementations maintained during transition:
HistoricalModel- Legacy base class using django-simple-historyTrackedModel- New base class using django-pghistory
- Custom
DiffMixinfor comparing historical records - Maintained
HistoricalSlugfor backward compatibility
Transition Strategy
-
Maintain Backward Compatibility
- Keep both HistoricalModel and TrackedModel during transition
- Update models one at a time to use TrackedModel
- Ensure no breaking changes during migration
-
Model Updates
-
Designer (Completed)
- Migrated to TrackedModel
- Updated get_by_slug to use pghistory queries
- Removed SimpleHistoryAdmin dependency
-
Pending Model Updates
- Companies (Company, Manufacturer)
- Parks (Park, ParkArea)
- Rides (Ride, RollerCoasterStats)
- Location models
-
Migration Process
-
For Each Model:
- Switch base class from HistoricalModel to TrackedModel
- Update admin.py to remove SimpleHistoryAdmin
- Create and apply migrations
- Test history tracking functionality
- Update any history-related queries
-
Testing Steps
- Create test objects
- Make changes
- Verify history records
- Check diff functionality
- Validate historical slug lookup
-
Admin Integration
- Remove SimpleHistoryAdmin
- Use standard ModelAdmin
- Keep existing list displays and search fields
Benefits
- Native PostgreSQL trigger-based tracking
- More efficient storage and querying
- Better performance characteristics
- Context tracking capabilities
Rollback Plan
Since both implementations are maintained:
- Revert model inheritance to HistoricalModel
- Restore SimpleHistoryAdmin
- Keep existing migrations
Next Steps
- Create migrations for Designer model
- Update remaining models in this order: a. Companies app b. Parks app c. Rides app d. Location app
- Test historical functionality
- Once all models are migrated:
- Remove HistoricalModel class
- Remove django-simple-history dependency
- Update documentation
Technical Notes
- Uses pghistory's default tracking configuration
- Maintains compatibility with existing code patterns
- Custom diff functionality preserved
- Historical slug tracking unchanged
- Both tracking systems can coexist during migration
Completion Criteria
- All models migrated to TrackedModel
- All functionality tested and working
- No dependencies on django-simple-history
- Documentation updated to reflect new implementation
- All migrations applied successfully