mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-22 09:31:08 -05:00
Refactor park filtering system and templates
- Updated the filtered_list.html template to extend from base/base.html and improved layout and styling. - Removed the park_list.html template as its functionality is now integrated into the filtered list. - Added a new migration to create indexes for improved filtering performance on the parks model. - Merged migrations to maintain a clean migration history. - Implemented a ParkFilterService to handle complex filtering logic, aggregations, and caching for park filters. - Enhanced filter suggestions and popular filters retrieval methods. - Improved the overall structure and efficiency of the filtering system.
This commit is contained in:
62
parks/migrations/0001_add_filter_indexes.py
Normal file
62
parks/migrations/0001_add_filter_indexes.py
Normal file
@@ -0,0 +1,62 @@
|
||||
# Generated manually for enhanced filtering performance
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
atomic = False # Required for CREATE INDEX CONCURRENTLY
|
||||
|
||||
dependencies = [
|
||||
('parks', '0001_initial'), # Adjust this to the latest migration
|
||||
]
|
||||
|
||||
operations = [
|
||||
# Add indexes for commonly filtered fields
|
||||
migrations.RunSQL(
|
||||
"CREATE INDEX CONCURRENTLY IF NOT EXISTS parks_park_status_idx ON parks_park (status);",
|
||||
reverse_sql="DROP INDEX IF EXISTS parks_park_status_idx;",
|
||||
),
|
||||
migrations.RunSQL(
|
||||
"CREATE INDEX CONCURRENTLY IF NOT EXISTS parks_park_operator_id_idx ON parks_park (operator_id);",
|
||||
reverse_sql="DROP INDEX IF EXISTS parks_park_operator_id_idx;",
|
||||
),
|
||||
migrations.RunSQL(
|
||||
"CREATE INDEX CONCURRENTLY IF NOT EXISTS parks_park_average_rating_idx ON parks_park (average_rating);",
|
||||
reverse_sql="DROP INDEX IF EXISTS parks_park_average_rating_idx;",
|
||||
),
|
||||
migrations.RunSQL(
|
||||
"CREATE INDEX CONCURRENTLY IF NOT EXISTS parks_park_size_acres_idx ON parks_park (size_acres);",
|
||||
reverse_sql="DROP INDEX IF EXISTS parks_park_size_acres_idx;",
|
||||
),
|
||||
migrations.RunSQL(
|
||||
"CREATE INDEX CONCURRENTLY IF NOT EXISTS parks_park_coaster_count_idx ON parks_park (coaster_count);",
|
||||
reverse_sql="DROP INDEX IF EXISTS parks_park_coaster_count_idx;",
|
||||
),
|
||||
migrations.RunSQL(
|
||||
"CREATE INDEX CONCURRENTLY IF NOT EXISTS parks_park_ride_count_idx ON parks_park (ride_count);",
|
||||
reverse_sql="DROP INDEX IF EXISTS parks_park_ride_count_idx;",
|
||||
),
|
||||
migrations.RunSQL(
|
||||
"CREATE INDEX CONCURRENTLY IF NOT EXISTS parks_park_updated_at_idx ON parks_park (updated_at);",
|
||||
reverse_sql="DROP INDEX IF EXISTS parks_park_updated_at_idx;",
|
||||
),
|
||||
# Composite indexes for common filter combinations
|
||||
migrations.RunSQL(
|
||||
"CREATE INDEX CONCURRENTLY IF NOT EXISTS parks_park_status_rating_idx ON parks_park (status, average_rating);",
|
||||
reverse_sql="DROP INDEX IF EXISTS parks_park_status_rating_idx;",
|
||||
),
|
||||
migrations.RunSQL(
|
||||
"CREATE INDEX CONCURRENTLY IF NOT EXISTS parks_park_operator_status_idx ON parks_park (operator_id, status);",
|
||||
reverse_sql="DROP INDEX IF EXISTS parks_park_operator_status_idx;",
|
||||
),
|
||||
# Index for parks with coasters (coaster_count > 0)
|
||||
migrations.RunSQL(
|
||||
"CREATE INDEX CONCURRENTLY IF NOT EXISTS parks_park_has_coasters_idx ON parks_park (coaster_count) WHERE coaster_count > 0;",
|
||||
reverse_sql="DROP INDEX IF EXISTS parks_park_has_coasters_idx;",
|
||||
),
|
||||
# Index for big parks (ride_count >= 10)
|
||||
migrations.RunSQL(
|
||||
"CREATE INDEX CONCURRENTLY IF NOT EXISTS parks_park_big_parks_idx ON parks_park (ride_count) WHERE ride_count >= 10;",
|
||||
reverse_sql="DROP INDEX IF EXISTS parks_park_big_parks_idx;",
|
||||
),
|
||||
]
|
||||
13
parks/migrations/0005_merge_20250820_2020.py
Normal file
13
parks/migrations/0005_merge_20250820_2020.py
Normal file
@@ -0,0 +1,13 @@
|
||||
# Generated by Django 5.2.5 on 2025-08-21 00:20
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("parks", "0001_add_filter_indexes"),
|
||||
("parks", "0004_fix_pghistory_triggers"),
|
||||
]
|
||||
|
||||
operations = []
|
||||
Reference in New Issue
Block a user