#!/usr/bin/env python """ Test script for ParkLocation model functionality """ import os import django # Setup Django os***REMOVED***iron.setdefault('DJANGO_SETTINGS_MODULE', 'thrillwiki.settings') django.setup() from parks.models import Park, ParkLocation from parks.models.companies import Company def test_park_location(): print("๐Ÿงช Testing ParkLocation Model Functionality") print("=" * 50) # Create a test company (operator) operator, created = Company.objects.get_or_create( name="Test Theme Parks Inc", defaults={ 'slug': 'test-theme-parks-inc', 'roles': ['OPERATOR'] } ) print(f"โœ… Created operator: {operator.name}") # Create a test park park, created = Park.objects.get_or_create( name="Test Magic Kingdom", defaults={ 'slug': 'test-magic-kingdom', 'description': 'A test theme park for location testing', 'operator': operator } ) print(f"โœ… Created park: {park.name}") # Create a park location location, created = ParkLocation.objects.get_or_create( park=park, defaults={ 'street_address': '1313 Disneyland Dr', 'city': 'Anaheim', 'state': 'California', 'country': 'USA', 'postal_code': '92802', 'highway_exit': 'I-5 Exit 110B', 'parking_notes': 'Large parking structure available', 'seasonal_notes': 'Open year-round' } ) print(f"โœ… Created location: {location}") # Test coordinate setting print("\n๐Ÿ” Testing coordinate functionality:") location.set_coordinates(33.8121, -117.9190) # Disneyland coordinates location.save() print(f" Latitude: {location.latitude}") print(f" Longitude: {location.longitude}") print(f" Coordinates: {location.coordinates}") print(f" Formatted Address: {location.formatted_address}") # Test Park model integration print("\n๐Ÿ” Testing Park model integration:") print(f" Park formatted location: {park.formatted_location}") print(f" Park coordinates: {park.coordinates}") # Create another location for distance testing operator2, created = Company.objects.get_or_create( name="Six Flags Entertainment", defaults={ 'slug': 'six-flags-entertainment', 'roles': ['OPERATOR'] } ) park2, created = Park.objects.get_or_create( name="Six Flags Magic Mountain", defaults={ 'slug': 'six-flags-magic-mountain', 'description': 'Another test theme park', 'operator': operator2 } ) location2, created = ParkLocation.objects.get_or_create( park=park2, defaults={ 'city': 'Valencia', 'state': 'California', 'country': 'USA' } ) location2.set_coordinates(34.4244, -118.5971) # Six Flags Magic Mountain coordinates location2.save() # Test distance calculation print("\n๐Ÿ” Testing distance calculation:") distance = location.distance_to(location2) if distance: print(f" Distance between parks: {distance:.2f} km") else: print(" โŒ Distance calculation failed") # Test spatial indexing print("\n๐Ÿ” Testing spatial queries:") try: from django.contrib.gis.measure import D from django.contrib.gis.geos import Point # Find parks within 100km of a point search_point = Point(-117.9190, 33.8121, srid=4326) # Same as Disneyland nearby_locations = ParkLocation.objects.filter( point__distance_lte=(search_point, D(km=100)) ) print(f" Found {nearby_locations.count()} parks within 100km") for loc in nearby_locations: print(f" - {loc.park.name} in {loc.city}, {loc.state}") except Exception as e: print(f" โš ๏ธ Spatial queries not fully functional: {e}") print("\nโœ… ParkLocation model tests completed successfully!") return True if __name__ == '__main__': try: test_park_location() except Exception as e: print(f"โŒ Test failed: {e}") import traceback traceback.print_exc()