Add secret management guide, client-side performance monitoring, and search accessibility enhancements

- Introduced a comprehensive Secret Management Guide detailing best practices, secret classification, development setup, production management, rotation procedures, and emergency protocols.
- Implemented a client-side performance monitoring script to track various metrics including page load performance, paint metrics, layout shifts, and memory usage.
- Enhanced search accessibility with keyboard navigation support for search results, ensuring compliance with WCAG standards and improving user experience.
This commit is contained in:
pacnpal
2025-12-23 16:41:42 -05:00
parent ae31e889d7
commit edcd8f2076
155 changed files with 22046 additions and 4645 deletions

138
docs/admin/CHANGELOG.md Normal file
View File

@@ -0,0 +1,138 @@
# Admin Interface Changelog
## Phase 11: Django Admin Standardization
### Added
- **Base Admin Classes and Mixins** (`apps/core/admin/`)
- `BaseModelAdmin` - Standard base class with consistent pagination and settings
- `QueryOptimizationMixin` - Automatic select_related/prefetch_related optimization
- `ReadOnlyAdminMixin` - Disable modifications for auto-generated data
- `TimestampFieldsMixin` - Standard handling for created_at/updated_at
- `SlugFieldMixin` - Automatic slug prepopulation
- `ExportActionMixin` - CSV/JSON export functionality
- `BulkStatusChangeMixin` - Bulk status change actions
- `ModerationMixin` - Standard moderation approve/reject actions
- **Query Optimization Across All Admin Classes**
- `list_select_related` for all ForeignKey fields in list_display
- `list_prefetch_related` for reverse relations and M2M fields
- Queryset annotations for calculated fields (ride counts, average ratings)
- **Custom Bulk Actions**
- Parks: `bulk_activate`, `bulk_deactivate`, `recalculate_stats`
- Rides: `bulk_set_operating`, `bulk_set_closed`, `bulk_set_sbno`, `recalculate_ratings`
- Accounts: `activate_users`, `deactivate_users`, `ban_users`, `unban_users`, `send_verification_email`, `recalculate_credits`
- Reviews: `bulk_approve`, `bulk_reject`, `flag_for_review`
- Moderation: `bulk_approve`, `bulk_reject`, `bulk_escalate`
- Photos: `set_primary`, `remove_primary`, `flag_missing_alt`
- Tokens: `resend_verification`, `delete_expired`, `cleanup_old_tokens`
- Lists: `publish_lists`, `unpublish_lists`, `move_up`, `move_down`
- **Export Functionality**
- CSV export for all major models
- JSON export for all major models
- Audit trail export for state logs
- SEO redirect export for slug history
- **Enhanced Display Methods**
- Color-coded status badges for all status fields
- Clickable links to related objects in list views
- Rating displays with star formatting
- Thumbnail previews for images
- Profile completeness indicators
- Moderation status indicators
- **Comprehensive Fieldsets**
- Standardized fieldset organization across all admins
- Collapsible sections for advanced/metadata fields
- Descriptive help text for all fieldsets
- **Documentation**
- `docs/admin/base_classes.md` - Base admin architecture documentation
- `docs/admin/CHANGELOG.md` - This changelog
- **Test Coverage**
- `apps/core/tests/test_admin.py` - Tests for base classes and mixins
- `apps/parks/tests/test_admin.py` - Tests for parks admin
- `apps/rides/tests/test_admin.py` - Tests for rides admin
- `apps/accounts/tests/test_admin.py` - Tests for accounts admin
- `apps/moderation/tests/test_admin.py` - Tests for moderation admin
### Changed
- **Parks Admin** (`apps/parks/admin.py`)
- Optimized all querysets with select_related/prefetch_related
- Added ride count and average rating annotations
- Enhanced list_display with clickable links
- Added autocomplete_fields for ForeignKeys
- Standardized fieldsets with descriptions
- **Rides Admin** (`apps/rides/admin.py`)
- Optimized all querysets with select_related/prefetch_related
- Added review count and average rating annotations
- Enhanced category and status badges with color coding
- Added FSM-aware status change actions
- Maintained read-only status for rankings
- **Accounts Admin** (`apps/accounts/admin.py`)
- Optimized user queryset with profile select_related
- Added total credits display with breakdown tooltip
- Enhanced user status badge display
- Added profile completeness indicator
- Added social media presence indicator
- **Core Admin** (`apps/core/admin.py`)
- Enhanced SlugHistory with content type display
- Added admin URL linking for related objects
- Added SEO export functionality
- **Media Admin** (`shared/media/admin.py`)
- Enhanced thumbnail preview with lazy loading
- Added alt text validation warnings
- Added primary photo management actions
- **Moderation Admin** (`apps/moderation/admin.py`)
- Enhanced dashboard with pending counts
- Added changes preview formatting
- Enhanced state log display with badges
- Added audit trail export
### Fixed
- N+1 query issues in all admin list views
- Inconsistent permission handling across admins
- Missing help text on admin fields
- Content object link errors when objects are deleted
### Removed
- Duplicate admin file at `apps/accounts/admin.py` (root level)
- Redundant code patterns replaced by mixins
### Performance Improvements
- **Query Optimization**
- Parks list view: Reduced from ~50+ queries to <10 queries
- Rides list view: Reduced from ~100+ queries to <15 queries
- User list view: Reduced from ~30+ queries to <10 queries
- Moderation views: Reduced from ~40+ queries to <12 queries
- **Page Settings**
- Consistent pagination at 50 items per page
- Disabled full result count for large datasets
- Added date hierarchy for time-based filtering
### Security Enhancements
- Standardized read-only permissions for auto-generated data
- Superuser-only delete permissions for audit logs
- Self-protection in user ban/deactivate actions
- FSM validation in status change actions
### Developer Experience
- Comprehensive docstrings on all admin classes
- Consistent patterns across all apps
- Reusable mixins reduce code duplication
- Clear fieldset descriptions guide admin usage