Add merge migrations for parks, companies, and moderation apps; update EmailConfiguration, Review, Photo, TopList, and TopListItem models to use pghistory for historical tracking

This commit is contained in:
pacnpal
2025-02-09 16:00:10 -05:00
parent b7f6c60682
commit 228eeeb3c8
30 changed files with 779 additions and 1654 deletions

View File

@@ -1,98 +1,41 @@
# PGHistory Migration Progress
# Foreign Key Constraint Resolution - 2025-02-09 (Updated)
## All Migrations Complete! 🎉
## Revision Note
Corrected migration sequence conflict:
- Original 0002 migration conflicted with existing 0002 file
- Created new migration as 0012_cleanup_invalid_designers.py
- Deleted conflicting 0002_cleanup_invalid_designers.py
### Latest Migration
- `location/migrations/0002_locationevent_remove_historicallocation_content_type_and_more.py`
- Created LocationEvent model
- Removed simple-history fields
- Set up pghistory triggers
- Cleaned up historical models
## Updated Resolution Steps
1. Created conflict-free migration 0012
2. Verified migration dependencies:
```python
dependencies = [
('rides', '0011_merge_20250209_1143'),
('designers', '0001_initial'),
]
```
3. New migration command:
```bash
python manage.py migrate rides 0012_cleanup_invalid_designers
```
### Previously Completed Migrations
1. Companies App
- Created CompanyEvent and ManufacturerEvent
- Removed Designer model
- Set up pghistory triggers
2. Rides App
- Created RideEvent and RideModelEvent
- Removed simple-history fields
- Updated Designer foreign key
- Set up pghistory triggers
3. Parks App
- Created ParkEvent and ParkAreaEvent models
- Set up pghistory tracking triggers
- Removed simple-history fields and models
4. Designers App
- Created DesignerEvent model
- Set up insert/update triggers
- Full pghistory implementation
5. Moderation Models
- Created EditSubmissionEvent model
- Created PhotoSubmissionEvent model
- Set up triggers for both models
## Infrastructure Updates
1. History Tracking App
- Removed simple-history initialization from apps.py
- Updated base models to use pghistory
- Added DiffMixin for tracking changes
## Final Steps
### 1. Remove django-simple-history
```bash
# Update requirements.txt
- Remove django-simple-history==3.8.0
```
### 2. Clean Up Configuration
- Remove any remaining simple-history settings
- Update documentation for new history tracking
- Add migration guide for future models
### 3. Testing
1. Test all models:
- Create/Update/Delete operations
- Historical queries
- Change tracking
- Event context
2. Verify functionality:
- Slug history lookups
- Model relationships
- Admin interfaces
### 4. Documentation Updates
1. Update model documentation
2. Add pghistory usage examples
3. Document migration patterns
4. Update contributor guide
## Technical Notes
- PGHistory tracking implemented via triggers
- Event models store complete history
- Foreign key relationships preserved
- Context tracking available
- GeoDjango fields supported
- Improved query performance expected
## Migration Statistics
✅ Designer Model
✅ Moderation Models
✅ Companies Models
✅ Rides Models
✅ Parks Models
✅ Location Models
## Lessons Learned
1. Keep backward compatibility during transition
2. Migrate models in dependency order
3. Test thoroughly after each migration
4. Update related code incrementally
5. Maintain documentation throughout
## PGHistory Migration Fix - 2025-02-09
Foreign key constraint violation during pghistory migration:
1. Issue: `rides_ride_designer_id_172b997d_fk_designers_designer_id` constraint violation during 0010_rideevent migration
2. Resolution:
- Created new cleanup migration (0009_cleanup_invalid_designers_pre_events.py) to run before event table creation
- Updated migration dependencies to ensure proper sequencing:
```python
# 0009_cleanup_invalid_designers_pre_events.py
dependencies = [
('rides', '0008_historicalride_post_closing_status_and_more'),
('designers', '0001_initial'),
]
```
- Created merge migration (0013_merge_20250209_1214.py) to resolve multiple leaf nodes
3. Final Migration Sequence:
- Base migrations up to 0008
- Cleanup migration (0009_cleanup_invalid_designers_pre_events)
- Event table creation (0010_rideevent_ridemodelevent_and_more)
- Merge migrations (0011, 0012, 0013)