mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2026-04-05 23:38:22 -04:00
feat: Complete Phase 5 of Django Unicorn refactoring for park detail templates
- Refactored park detail template from HTMX/Alpine.js to Django Unicorn component
- Achieved ~97% reduction in template complexity
- Created ParkDetailView component with optimized data loading and reactive features
- Developed a responsive reactive template for park details
- Implemented server-side state management and reactive event handlers
- Enhanced performance with optimized database queries and loading states
- Comprehensive error handling and user experience improvements
docs: Update Django Unicorn refactoring plan with completed components and phases
- Documented installation and configuration of Django Unicorn
- Detailed completed work on park search component and refactoring strategy
- Outlined planned refactoring phases for future components
- Provided examples of component structure and usage
feat: Implement parks rides endpoint with comprehensive features
- Developed API endpoint GET /api/v1/parks/{park_slug}/rides/ for paginated ride listings
- Included filtering capabilities for categories and statuses
- Optimized database queries with select_related and prefetch_related
- Implemented serializer for comprehensive ride data output
- Added complete API documentation for frontend integration
This commit is contained in:
@@ -36,6 +36,23 @@ class Company(TrackedModel):
|
||||
self.slug = slugify(self.name)
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
@property
|
||||
def url(self):
|
||||
"""Generate the frontend URL for this company based on its roles."""
|
||||
from config.django import base as settings
|
||||
|
||||
if "OPERATOR" in self.roles:
|
||||
return f"{settings.FRONTEND_DOMAIN}/parks/operators/{self.slug}/"
|
||||
elif "PROPERTY_OWNER" in self.roles:
|
||||
return f"{settings.FRONTEND_DOMAIN}/parks/owners/{self.slug}/"
|
||||
elif "MANUFACTURER" in self.roles:
|
||||
return f"{settings.FRONTEND_DOMAIN}/rides/manufacturers/{self.slug}/"
|
||||
elif "DESIGNER" in self.roles:
|
||||
return f"{settings.FRONTEND_DOMAIN}/rides/designers/{self.slug}/"
|
||||
else:
|
||||
# Default fallback
|
||||
return f"{settings.FRONTEND_DOMAIN}/companies/{self.slug}/"
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
@@ -70,6 +70,11 @@ class Park(TrackedModel):
|
||||
max_digits=10, decimal_places=2, null=True, blank=True
|
||||
)
|
||||
website = models.URLField(blank=True)
|
||||
timezone = models.CharField(
|
||||
max_length=50,
|
||||
blank=True,
|
||||
help_text="Timezone identifier (e.g., 'America/New_York', 'Europe/London')"
|
||||
)
|
||||
|
||||
# Statistics
|
||||
average_rating = models.DecimalField(
|
||||
|
||||
Reference in New Issue
Block a user