mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-23 07:31:08 -05:00
feat: Refactor rides app with unique constraints, mixins, and enhanced documentation
- Added migration to convert unique_together constraints to UniqueConstraint for RideModel. - Introduced RideFormMixin for handling entity suggestions in ride forms. - Created comprehensive code standards documentation outlining formatting, docstring requirements, complexity guidelines, and testing requirements. - Established error handling guidelines with a structured exception hierarchy and best practices for API and view error handling. - Documented view pattern guidelines, emphasizing the use of CBVs, FBVs, and ViewSets with examples. - Implemented a benchmarking script for query performance analysis and optimization. - Developed security documentation detailing measures, configurations, and a security checklist. - Compiled a database optimization guide covering indexing strategies, query optimization patterns, and computed fields.
This commit is contained in:
@@ -12,7 +12,7 @@ from django.contrib.gis.geos import Polygon
|
||||
from rest_framework.views import APIView
|
||||
from rest_framework.response import Response
|
||||
from rest_framework import status
|
||||
from rest_framework.permissions import AllowAny
|
||||
from rest_framework.permissions import AllowAny, IsAdminUser
|
||||
from drf_spectacular.utils import (
|
||||
extend_schema,
|
||||
extend_schema_view,
|
||||
@@ -306,7 +306,7 @@ class MapLocationsAPIView(APIView):
|
||||
return {
|
||||
"status": "success",
|
||||
"locations": locations,
|
||||
"clusters": [], # TODO: Implement clustering
|
||||
"clusters": [], # TODO(THRILLWIKI-106): Implement map clustering algorithm
|
||||
"bounds": self._calculate_bounds(locations),
|
||||
"total_count": len(locations),
|
||||
"clustered": params["cluster"],
|
||||
@@ -471,7 +471,7 @@ class MapLocationDetailAPIView(APIView):
|
||||
obj.opening_date.isoformat() if obj.opening_date else None
|
||||
),
|
||||
},
|
||||
"nearby_locations": [], # TODO: Implement nearby locations
|
||||
"nearby_locations": [], # TODO(THRILLWIKI-107): Implement nearby locations for parks
|
||||
}
|
||||
else: # ride
|
||||
data = {
|
||||
@@ -538,7 +538,7 @@ class MapLocationDetailAPIView(APIView):
|
||||
obj.manufacturer.name if obj.manufacturer else None
|
||||
),
|
||||
},
|
||||
"nearby_locations": [], # TODO: Implement nearby locations
|
||||
"nearby_locations": [], # TODO(THRILLWIKI-107): Implement nearby locations for rides
|
||||
}
|
||||
|
||||
return Response(
|
||||
@@ -669,7 +669,7 @@ class MapSearchAPIView(APIView):
|
||||
else ""
|
||||
),
|
||||
},
|
||||
"relevance_score": 1.0, # TODO: Implement relevance scoring
|
||||
"relevance_score": 1.0, # TODO(THRILLWIKI-108): Implement relevance scoring for search
|
||||
}
|
||||
)
|
||||
|
||||
@@ -722,7 +722,7 @@ class MapSearchAPIView(APIView):
|
||||
else ""
|
||||
),
|
||||
},
|
||||
"relevance_score": 1.0, # TODO: Implement relevance scoring
|
||||
"relevance_score": 1.0, # TODO(THRILLWIKI-108): Implement relevance scoring for search
|
||||
}
|
||||
)
|
||||
|
||||
@@ -965,8 +965,8 @@ class MapStatsAPIView(APIView):
|
||||
"total_locations": total_locations,
|
||||
"parks_with_location": parks_with_location,
|
||||
"rides_with_location": rides_with_location,
|
||||
"cache_hits": 0, # TODO: Implement cache statistics
|
||||
"cache_misses": 0, # TODO: Implement cache statistics
|
||||
"cache_hits": 0, # TODO(THRILLWIKI-109): Implement cache statistics tracking
|
||||
"cache_misses": 0, # TODO(THRILLWIKI-109): Implement cache statistics tracking
|
||||
},
|
||||
}
|
||||
)
|
||||
@@ -996,7 +996,7 @@ class MapStatsAPIView(APIView):
|
||||
class MapCacheAPIView(APIView):
|
||||
"""API endpoint for cache management (admin only)."""
|
||||
|
||||
permission_classes = [AllowAny] # TODO: Add admin permission check
|
||||
permission_classes = [IsAdminUser] # Admin only
|
||||
|
||||
def delete(self, request: HttpRequest) -> Response:
|
||||
"""Clear all map cache (admin only)."""
|
||||
|
||||
Reference in New Issue
Block a user