Refactor comments app to use mixins for comment functionality; update admin interfaces and add historical model fixes

This commit is contained in:
pacnpal
2025-02-08 16:33:55 -05:00
parent 75f5b07129
commit 03f9df4bab
21 changed files with 548 additions and 280 deletions

View File

@@ -1,148 +1,74 @@
# Active Development Context
# Comment System Architecture Fix
## Current Implementation Status
Version Control System has been evaluated and requires several enhancements:
## Required Code Modifications
### Completed
1. Core VCS Components:
- Base models (VersionBranch, VersionTag, ChangeSet)
- Business logic (BranchManager, ChangeTracker, MergeStrategy)
- UI components and templates
- Asset integration (JS/CSS)
- Comprehensive monitoring system
- Basic caching implementation
### 1. Central CommentThread Model (comments/models.py)
```python
from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation
from django.contrib.contenttypes.models import ContentType
from django.db import models
2. Initial Integration:
- Park model VCS integration
- ParkArea model VCS integration
- Base template VCS support
- Park detail template integration
- Version control context processor
- Monitoring and metrics collection
class CommentThread(models.Model):
"""Centralized comment threading system"""
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
3. Documentation:
- Technical implementation guide
- Template integration guide
- Implementation checklist
- Base README
- API documentation
- User guide
class Meta:
indexes = [
models.Index(fields=["content_type", "object_id"]),
]
app_label = 'comments'
```
### In Progress
1. Model Integration:
- [ ] Rides system
- [ ] Reviews system
- [ ] Companies system
- [ ] Batch processing implementation
- [ ] Enhanced caching layer
### 2. Model Reference Updates (Example for companies/models.py)
```python
# In all affected models (companies, rides, parks, reviews):
from comments.models import CommentThread
2. Template Updates:
- [ ] Park list view
- [ ] Ride detail/list views
- [ ] Review detail/list views
- [ ] Company detail/list views
- [ ] Performance optimized components
class Company(models.Model):
# ... existing fields ...
comments = GenericRelation(CommentThread) # Updated reference
```
### Newly Identified Requirements
1. Performance Optimizations:
- [ ] Implement batch processing for large changesets
- [ ] Add caching for frequently accessed version history
- [ ] Optimize query patterns for large history sets
### 3. Historical Records Adjustment
```python
# Historical model definitions:
class HistoricalCompany(HistoricalRecords):
comments = models.ForeignKey(
'comments.CommentThread', # Unified reference
on_delete=models.SET_NULL,
null=True,
blank=True
)
```
2. Scalability Enhancements:
- [ ] Implement archive strategy for old history records
- [ ] Add partitioning support for large history tables
- [ ] Develop async processing for heavy operations
## Migration Execution Plan
3. Security Improvements:
- [ ] Add encryption for sensitive changes
- [ ] Enhance access control granularity
- [ ] Implement audit logging improvements
1. Generate initial comment thread migration:
```bash
./manage.py makemigrations comments --name create_commentthread
```
## Immediate Next Steps
1. Performance Optimization (Priority)
```python
# Add to history_tracking/batch.py:
class BatchChangeProcessor:
def process_changes(self, changes):
"""Process multiple changes efficiently"""
with transaction.atomic():
# Batch processing logic
```
2. Create dependent migrations for each modified app:
```bash
for app in companies rides parks reviews; do
./manage.py makemigrations $app --name update_comment_references
done
```
2. Caching Enhancement
```python
# Add to history_tracking/caching.py:
class VersionHistoryCache:
def cache_version_info(self):
"""Cache frequently accessed version data"""
# Caching implementation
```
3. Migration dependency chain:
```python
# In each app's migration file:
dependencies = [
('comments', '0001_create_commentthread'),
]
```
3. Testing Expansion
- Add performance benchmarks
- Implement stress testing
- Create scalability tests
## Active Issues
1. Need to implement batch processing for large changesets
2. Must enhance caching strategy for version history
3. Need to implement proper cleanup for old versions
4. Performance optimization required for large history sets
5. Archiving strategy needed for historical data
## Technical Dependencies
- django-simple-history: Base history tracking
- HTMX: UI interactions
- Alpine.js: Frontend reactivity
- Custom VCS components
- Redis: Enhanced caching (planned)
- Celery: Async processing (planned)
## Integration Strategy
1. Roll out performance optimizations
2. Implement enhanced caching
3. Deploy batch processing
4. Add archiving system
5. Implement async operations
## Monitoring Points
- Track version control operation performance
- Monitor database size with version history
- Watch for merge conflicts
- Track user interaction patterns
- Monitor cache hit rates
- Track batch processing efficiency
- Measure async operation latency
## Code Standards
- All versioned models inherit from HistoricalModel
- Consistent save method implementation
- Proper branch context management
- Standard version control UI components
- Performance optimization patterns
- Caching standards
- Batch processing guidelines
## Documentation Status
- [x] Technical implementation
- [x] Template integration guide
- [x] API documentation
- [x] User guide
- [ ] Admin documentation
- [ ] Performance tuning guide
- [ ] Scaling guidelines
## Current Branch
main
## Environment
- Django with HTMX integration
- PostgreSQL database
- django-simple-history
- Custom VCS extensions
- Redis (planned)
- Celery (planned)
## Recent Evaluation
Full system evaluation completed on 2025-02-07. Details in `memory-bank/evaluations/version_control_evaluation.md`.
## Validation Checklist
- [ ] Run full test suite: `uv test ./manage.py test`
- [ ] Execute system check: `uv run ./manage.py check --deploy`
- [ ] Verify database schema changes in migration files
- [ ] Confirm admin interface comment relationships

View File

@@ -0,0 +1,33 @@
# Historical Model Comment Fixes
## Problem
System check errors occurred because historical models referenced CommentThread in their own app context (e.g. `companies.commentthread`) instead of the actual `comments.CommentThread` model.
## Solution
Added `excluded_fields = ['comments']` to Meta classes of all affected models to exclude comment relationships from historical tracking. Note: Initially tried `history_exclude` but this was incorrect - django-simple-history uses `excluded_fields`.
## Affected Models (Fixed)
- Company (companies/models.py)
- Manufacturer (companies/models.py)
- Designer (companies/models.py)
- Park (parks/models.py)
- ParkArea (parks/models.py)
- Ride (rides/models.py)
- RideModel (rides/models.py)
- Review (reviews/models.py)
## Implementation Details
Each model's Meta class was updated to exclude the comments field from historical tracking:
```python
class Meta:
# ... other Meta options ...
excluded_fields = ['comments'] # Exclude from historical tracking
```
This prevents django-simple-history from attempting to track the GenericRelation field in historical models, which was causing the system check errors.
## Verification
Run system checks to verify fix:
```bash
python manage.py check