mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 22:31:07 -05:00
- Cleaned up and standardized assertions in ApiTestMixin for API response validation. - Updated ASGI settings to use os.environ for setting the DJANGO_SETTINGS_MODULE. - Removed unused imports and improved formatting in settings.py. - Refactored URL patterns in urls.py for better readability and organization. - Enhanced view functions in views.py for consistency and clarity. - Added .flake8 configuration for linting and style enforcement. - Introduced type stubs for django-environ to improve type checking with Pylance.
335 lines
14 KiB
Python
335 lines
14 KiB
Python
from django.core.management.base import BaseCommand
|
|
from parks.models import Park, ParkArea, ParkLocation, Company as Operator
|
|
|
|
|
|
class Command(BaseCommand):
|
|
help = "Seeds initial park data with major theme parks worldwide"
|
|
|
|
def handle(self, *args, **options):
|
|
# Create major theme park companies
|
|
companies_data = [
|
|
{
|
|
"name": "The Walt Disney Company",
|
|
"website": "https://www.disney.com/",
|
|
"headquarters": "Burbank, California",
|
|
"description": "The world's largest entertainment company and theme park operator.",
|
|
},
|
|
{
|
|
"name": "Universal Parks & Resorts",
|
|
"website": "https://www.universalparks.com/",
|
|
"headquarters": "Orlando, Florida",
|
|
"description": "A division of Comcast NBCUniversal, operating major theme parks worldwide.",
|
|
},
|
|
{
|
|
"name": "Six Flags Entertainment Corporation",
|
|
"website": "https://www.sixflags.com/",
|
|
"headquarters": "Arlington, Texas",
|
|
"description": "The world's largest regional theme park company.",
|
|
},
|
|
{
|
|
"name": "Cedar Fair Entertainment Company",
|
|
"website": "https://www.cedarfair.com/",
|
|
"headquarters": "Sandusky, Ohio",
|
|
"description": "One of North America's largest operators of regional amusement parks.",
|
|
},
|
|
{
|
|
"name": "Herschend Family Entertainment",
|
|
"website": "https://www.hfecorp.com/",
|
|
"headquarters": "Atlanta, Georgia",
|
|
"description": "The largest family-owned themed attractions corporation in the United States.",
|
|
},
|
|
{
|
|
"name": "SeaWorld Parks & Entertainment",
|
|
"website": "https://www.seaworldentertainment.com/",
|
|
"headquarters": "Orlando, Florida",
|
|
"description": "Theme park and entertainment company focusing on nature-based themes.",
|
|
},
|
|
]
|
|
|
|
companies = {}
|
|
for company_data in companies_data:
|
|
operator, created = Operator.objects.get_or_create(
|
|
name=company_data["name"], defaults=company_data
|
|
)
|
|
companies[operator.name] = operator
|
|
self.stdout.write(
|
|
f'{"Created" if created else "Found"} company: {operator.name}'
|
|
)
|
|
|
|
# Create parks with their locations
|
|
parks_data = [
|
|
{
|
|
"name": "Magic Kingdom",
|
|
"company": "The Walt Disney Company",
|
|
"description": "The first theme park at Walt Disney World Resort in Florida, opened in 1971.",
|
|
"opening_date": "1971-10-01",
|
|
"size_acres": 142,
|
|
"location": {
|
|
"street_address": "1180 Seven Seas Dr",
|
|
"city": "Lake Buena Vista",
|
|
"state": "Florida",
|
|
"country": "United States",
|
|
"postal_code": "32830",
|
|
"latitude": 28.4177,
|
|
"longitude": -81.5812,
|
|
},
|
|
"areas": [
|
|
{
|
|
"name": "Main Street, U.S.A.",
|
|
"description": "Victorian-era themed entrance corridor",
|
|
},
|
|
{
|
|
"name": "Adventureland",
|
|
"description": "Exotic tropical places themed area",
|
|
},
|
|
{
|
|
"name": "Frontierland",
|
|
"description": "American Old West themed area",
|
|
},
|
|
{
|
|
"name": "Liberty Square",
|
|
"description": "Colonial America themed area",
|
|
},
|
|
{
|
|
"name": "Fantasyland",
|
|
"description": "Fairy tale themed area",
|
|
},
|
|
{
|
|
"name": "Tomorrowland",
|
|
"description": "Future themed area",
|
|
},
|
|
],
|
|
},
|
|
{
|
|
"name": "Universal Studios Florida",
|
|
"company": "Universal Parks & Resorts",
|
|
"description": "Movie and television-based theme park in Orlando, Florida.",
|
|
"opening_date": "1990-06-07",
|
|
"size_acres": 108,
|
|
"location": {
|
|
"street_address": "6000 Universal Blvd",
|
|
"city": "Orlando",
|
|
"state": "Florida",
|
|
"country": "United States",
|
|
"postal_code": "32819",
|
|
"latitude": 28.4749,
|
|
"longitude": -81.4687,
|
|
},
|
|
"areas": [
|
|
{
|
|
"name": "Production Central",
|
|
"description": "Main entrance area with movie-themed attractions",
|
|
},
|
|
{
|
|
"name": "New York",
|
|
"description": "Themed after New York City streets",
|
|
},
|
|
{
|
|
"name": "San Francisco",
|
|
"description": "Themed after San Francisco's waterfront",
|
|
},
|
|
{
|
|
"name": "The Wizarding World of Harry Potter - Diagon Alley",
|
|
"description": "Themed after the Harry Potter series",
|
|
},
|
|
{
|
|
"name": "Springfield",
|
|
"description": "Themed after The Simpsons hometown",
|
|
},
|
|
],
|
|
},
|
|
{
|
|
"name": "Cedar Point",
|
|
"company": "Cedar Fair Entertainment Company",
|
|
"description": 'Known as the "Roller Coaster Capital of the World".',
|
|
"opening_date": "1870-06-01",
|
|
"size_acres": 364,
|
|
"location": {
|
|
"street_address": "1 Cedar Point Dr",
|
|
"city": "Sandusky",
|
|
"state": "Ohio",
|
|
"country": "United States",
|
|
"postal_code": "44870",
|
|
"latitude": 41.4822,
|
|
"longitude": -82.6835,
|
|
},
|
|
"areas": [
|
|
{
|
|
"name": "Frontiertown",
|
|
"description": "Western-themed area with multiple roller coasters",
|
|
},
|
|
{
|
|
"name": "Millennium Island",
|
|
"description": "Home to the Millennium Force roller coaster",
|
|
},
|
|
{
|
|
"name": "Cedar Point Shores",
|
|
"description": "Waterpark area",
|
|
},
|
|
{
|
|
"name": "Top Thrill Dragster",
|
|
"description": "Area surrounding the iconic launched coaster",
|
|
},
|
|
],
|
|
},
|
|
{
|
|
"name": "Silver Dollar City",
|
|
"company": "Herschend Family Entertainment",
|
|
"description": "An 1880s-themed park featuring over 40 rides and attractions.",
|
|
"opening_date": "1960-05-01",
|
|
"size_acres": 61,
|
|
"location": {
|
|
"street_address": "399 Silver Dollar City Parkway",
|
|
"city": "Branson",
|
|
"state": "Missouri",
|
|
"country": "United States",
|
|
"postal_code": "65616",
|
|
"latitude": 36.668497,
|
|
"longitude": -93.339074,
|
|
},
|
|
"areas": [
|
|
{
|
|
"name": "Grand Exposition",
|
|
"description": "Home to many family rides and attractions",
|
|
},
|
|
{
|
|
"name": "Wildfire",
|
|
"description": "Named after the famous B&M coaster",
|
|
},
|
|
{
|
|
"name": "Wilson's Farm",
|
|
"description": "Farm-themed attractions and dining",
|
|
},
|
|
{
|
|
"name": "Riverfront",
|
|
"description": "Water-themed attractions area",
|
|
},
|
|
{
|
|
"name": "The Valley",
|
|
"description": "Home to Time Traveler and other major attractions",
|
|
},
|
|
],
|
|
},
|
|
{
|
|
"name": "Six Flags Magic Mountain",
|
|
"company": "Six Flags Entertainment Corporation",
|
|
"description": "Known for its world-record 19 roller coasters.",
|
|
"opening_date": "1971-05-29",
|
|
"size_acres": 262,
|
|
"location": {
|
|
"street_address": "26101 Magic Mountain Pkwy",
|
|
"city": "Valencia",
|
|
"state": "California",
|
|
"country": "United States",
|
|
"postal_code": "91355",
|
|
"latitude": 34.4253,
|
|
"longitude": -118.5971,
|
|
},
|
|
"areas": [
|
|
{
|
|
"name": "Six Flags Plaza",
|
|
"description": "Main entrance area",
|
|
},
|
|
{
|
|
"name": "DC Universe",
|
|
"description": "DC Comics themed area",
|
|
},
|
|
{
|
|
"name": "Screampunk District",
|
|
"description": "Steampunk themed area",
|
|
},
|
|
{
|
|
"name": "The Underground",
|
|
"description": "Urban themed area",
|
|
},
|
|
{
|
|
"name": "Goliath Territory",
|
|
"description": "Area surrounding the Goliath hypercoaster",
|
|
},
|
|
],
|
|
},
|
|
{
|
|
"name": "SeaWorld Orlando",
|
|
"company": "SeaWorld Parks & Entertainment",
|
|
"description": "Marine zoological park combined with thrill rides and shows.",
|
|
"opening_date": "1973-12-15",
|
|
"size_acres": 200,
|
|
"location": {
|
|
"street_address": "7007 Sea World Dr",
|
|
"city": "Orlando",
|
|
"state": "Florida",
|
|
"country": "United States",
|
|
"postal_code": "32821",
|
|
"latitude": 28.4115,
|
|
"longitude": -81.4617,
|
|
},
|
|
"areas": [
|
|
{
|
|
"name": "Sea Harbor",
|
|
"description": "Main entrance and shopping area",
|
|
},
|
|
{
|
|
"name": "Shark Encounter",
|
|
"description": "Shark exhibit and themed area",
|
|
},
|
|
{
|
|
"name": "Antarctica: Empire of the Penguin",
|
|
"description": "Penguin-themed area",
|
|
},
|
|
{
|
|
"name": "Manta",
|
|
"description": "Area themed around the Manta flying roller coaster",
|
|
},
|
|
{
|
|
"name": "Sesame Street Land",
|
|
"description": "Kid-friendly area based on Sesame Street",
|
|
},
|
|
],
|
|
},
|
|
]
|
|
|
|
# Create parks and their areas
|
|
for park_data in parks_data:
|
|
company = companies[park_data["company"]]
|
|
park, created = Park.objects.get_or_create(
|
|
name=park_data["name"],
|
|
defaults={
|
|
"description": park_data["description"],
|
|
"status": "OPERATING",
|
|
"opening_date": park_data["opening_date"],
|
|
"size_acres": park_data["size_acres"],
|
|
"owner": company,
|
|
},
|
|
)
|
|
self.stdout.write(f'{"Created" if created else "Found"} park: {park.name}')
|
|
|
|
# Create location for park
|
|
if created:
|
|
loc_data = park_data["location"]
|
|
park_location = ParkLocation.objects.create(
|
|
park=park,
|
|
street_address=loc_data["street_address"],
|
|
city=loc_data["city"],
|
|
state=loc_data["state"],
|
|
country=loc_data["country"],
|
|
postal_code=loc_data["postal_code"],
|
|
)
|
|
# Set coordinates using the helper method
|
|
park_location.set_coordinates(
|
|
loc_data["latitude"], loc_data["longitude"]
|
|
)
|
|
park_location.save()
|
|
|
|
# Create areas for park
|
|
for area_data in park_data["areas"]:
|
|
area, created = ParkArea.objects.get_or_create(
|
|
name=area_data["name"],
|
|
park=park,
|
|
defaults={"description": area_data["description"]},
|
|
)
|
|
self.stdout.write(
|
|
f'{"Created" if created else "Found"} area: {area.name} in {park.name}'
|
|
)
|
|
|
|
self.stdout.write(self.style.SUCCESS("Successfully seeded initial park data"))
|