mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 11:31:07 -05:00
262 lines
11 KiB
Python
262 lines
11 KiB
Python
from django.core.management.base import BaseCommand
|
|
from django.contrib.auth import get_user_model
|
|
from django.contrib.contenttypes.models import ContentType
|
|
from django.core.files.uploadedfile import SimpleUploadedFile
|
|
from apps.moderation.models import EditSubmission, PhotoSubmission
|
|
from apps.parks.models import Park
|
|
from apps.rides.models import Ride
|
|
from datetime import date
|
|
|
|
User = get_user_model()
|
|
|
|
|
|
class Command(BaseCommand):
|
|
help = "Seeds test submissions for moderation dashboard"
|
|
|
|
def handle(self, *args, **kwargs):
|
|
# Ensure we have a test user
|
|
user, created = User.objects.get_or_create(
|
|
username="test_user", email="test@example.com"
|
|
)
|
|
if created:
|
|
user.set_password("testpass123")
|
|
user.save()
|
|
self.stdout.write(self.style.SUCCESS("Created test user"))
|
|
|
|
# Get content types
|
|
park_ct = ContentType.objects.get_for_model(Park)
|
|
ride_ct = ContentType.objects.get_for_model(Ride)
|
|
|
|
# Create test park for edit submissions
|
|
test_park, created = Park.objects.get_or_create(
|
|
name="Test Park",
|
|
defaults={
|
|
"description": "A test theme park located in Orlando, Florida",
|
|
"status": "OPERATING",
|
|
"operating_season": "Year-round",
|
|
"size_acres": 100.50,
|
|
"website": "https://testpark.example.com",
|
|
},
|
|
)
|
|
|
|
# Create test ride for edit submissions
|
|
test_ride, created = Ride.objects.get_or_create(
|
|
name="Test Coaster",
|
|
park=test_park,
|
|
defaults={
|
|
"description": "A thrilling steel roller coaster with multiple inversions",
|
|
"status": "OPERATING",
|
|
"category": "RC",
|
|
"capacity_per_hour": 1200,
|
|
"ride_duration_seconds": 180,
|
|
"min_height_in": 48,
|
|
"opening_date": date(2020, 6, 15),
|
|
},
|
|
)
|
|
|
|
# Create EditSubmissions
|
|
|
|
# New park creation with detailed information
|
|
EditSubmission.objects.create(
|
|
user=user,
|
|
content_type=park_ct,
|
|
submission_type="CREATE",
|
|
changes={
|
|
"name": "Adventure World Orlando",
|
|
"description": (
|
|
"A brand new theme park coming to Orlando featuring five uniquely themed lands: "
|
|
"Future Frontier, Ancient Mysteries, Ocean Depths, Sky Kingdom, and Fantasy Forest. "
|
|
"The park will feature state-of-the-art attractions including 3 roller coasters, "
|
|
"4 dark rides, and multiple family attractions in each themed area."
|
|
),
|
|
"status": "UNDER_CONSTRUCTION",
|
|
"opening_date": "2024-06-01",
|
|
"operating_season": "Year-round with extended hours during summer and holidays",
|
|
"size_acres": 250.75,
|
|
"website": "https://adventureworld.example.com",
|
|
"location": {
|
|
"street_address": "1234 Theme Park Way",
|
|
"city": "Orlando",
|
|
"state": "Florida",
|
|
"country": "United States",
|
|
"postal_code": "32819",
|
|
"latitude": "28.538336",
|
|
"longitude": "-81.379234",
|
|
},
|
|
},
|
|
reason=(
|
|
"Submitting new theme park details based on official press release and construction permits. "
|
|
"The park has begun vertical construction and has announced its opening date."
|
|
),
|
|
source=(
|
|
"Official press release: https://adventureworld.example.com/press/announcement\n"
|
|
"Construction permits: Orange County Building Department #2023-12345"
|
|
),
|
|
status="PENDING",
|
|
)
|
|
|
|
# Existing park edit with comprehensive updates
|
|
EditSubmission.objects.create(
|
|
user=user,
|
|
content_type=park_ct,
|
|
object_id=test_park.id,
|
|
submission_type="EDIT",
|
|
changes={
|
|
"description": (
|
|
"A world-class theme park featuring 12 uniquely themed areas and over 50 attractions. "
|
|
'Recent expansion added the new "Cosmic Adventures" area with 2 roller coasters and '
|
|
"3 family attractions. The park now offers enhanced dining options and night-time "
|
|
'spectacular "Starlight Dreams".'
|
|
),
|
|
"status": "OPERATING",
|
|
"website": "https://testpark.example.com",
|
|
"size_acres": 120.25,
|
|
"operating_season": (
|
|
"Year-round with extended hours (9AM-11PM) during summer. "
|
|
"Special events during Halloween and Christmas seasons."
|
|
),
|
|
"location": {
|
|
"street_address": "5678 Park Boulevard",
|
|
"city": "Orlando",
|
|
"state": "Florida",
|
|
"country": "United States",
|
|
"postal_code": "32830",
|
|
"latitude": "28.538336",
|
|
"longitude": "-81.379234",
|
|
},
|
|
},
|
|
reason=(
|
|
"Updating park information to reflect recent expansion and operational changes. "
|
|
"The new Cosmic Adventures area opened last month and operating hours have been extended."
|
|
),
|
|
source=(
|
|
"Park press release: https://testpark.example.com/news/expansion\n"
|
|
"Official park map: https://testpark.example.com/map\n"
|
|
"Personal visit and photos from opening day of new area"
|
|
),
|
|
status="PENDING",
|
|
)
|
|
|
|
# New ride creation with detailed specifications
|
|
EditSubmission.objects.create(
|
|
user=user,
|
|
content_type=ride_ct,
|
|
submission_type="CREATE",
|
|
changes={
|
|
"name": "Thunderbolt: The Ultimate Launch Coaster",
|
|
"park": test_park.id,
|
|
"description": (
|
|
"A cutting-edge steel launch coaster featuring the world's tallest inversion (160 ft) "
|
|
"and fastest launch acceleration (0-80 mph in 2 seconds). The ride features a unique "
|
|
"triple launch system, 5 inversions including a zero-g roll and cobra roll, and a "
|
|
"first-of-its-kind vertical helix element. Total track length is 4,500 feet with a "
|
|
"maximum height of 375 feet."
|
|
),
|
|
"status": "UNDER_CONSTRUCTION",
|
|
"category": "RC",
|
|
"opening_date": "2024-07-01",
|
|
"capacity_per_hour": 1400,
|
|
"ride_duration_seconds": 210,
|
|
"min_height_in": 52,
|
|
"manufacturer": 1, # Assuming manufacturer ID
|
|
"park_area": 1, # Assuming park area ID
|
|
"stats": {
|
|
"height_ft": 375,
|
|
"length_ft": 4500,
|
|
"speed_mph": 80,
|
|
"inversions": 5,
|
|
"propulsion_system": "LSM",
|
|
"track_material": "STEEL",
|
|
"roller_coaster_type": "SITDOWN",
|
|
"trains_count": 3,
|
|
"cars_per_train": 6,
|
|
"seats_per_car": 4,
|
|
},
|
|
},
|
|
reason=(
|
|
"Submitting details for the new flagship roller coaster announced by the park. "
|
|
"Construction has begun and track pieces are arriving on site."
|
|
),
|
|
source=(
|
|
"Official announcement: https://testpark.example.com/thunderbolt\n"
|
|
"Construction photos: https://coasterfan.com/thunderbolt-construction\n"
|
|
"Manufacturer specifications sheet"
|
|
),
|
|
status="PENDING",
|
|
)
|
|
|
|
# Existing ride edit with technical updates
|
|
EditSubmission.objects.create(
|
|
user=user,
|
|
content_type=ride_ct,
|
|
object_id=test_ride.id,
|
|
submission_type="EDIT",
|
|
changes={
|
|
"description": (
|
|
"A high-speed steel roller coaster featuring 4 inversions and a unique "
|
|
"dual-loading station system. Recent upgrades include new magnetic braking "
|
|
"system and enhanced on-board audio experience."
|
|
),
|
|
"status": "OPERATING",
|
|
"capacity_per_hour": 1500, # Increased after station upgrades
|
|
"ride_duration_seconds": 185,
|
|
"min_height_in": 48,
|
|
"max_height_in": 80,
|
|
"stats": {
|
|
"trains_count": 3,
|
|
"cars_per_train": 8,
|
|
"seats_per_car": 4,
|
|
},
|
|
},
|
|
reason=(
|
|
"Updating ride information to reflect recent upgrades including new braking system, "
|
|
"audio system, and increased capacity due to improved loading efficiency."
|
|
),
|
|
source=(
|
|
"Park operations manual\n"
|
|
"Maintenance records\n"
|
|
"Personal observation and timing of new ride cycle"
|
|
),
|
|
status="PENDING",
|
|
)
|
|
|
|
# Create PhotoSubmissions with detailed captions
|
|
|
|
# Park photo submission
|
|
image_data = b"GIF87a\x01\x00\x01\x00\x80\x01\x00\x00\x00\x00ccc,\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02D\x01\x00;"
|
|
dummy_image = SimpleUploadedFile(
|
|
"park_entrance.gif", image_data, content_type="image/gif"
|
|
)
|
|
|
|
PhotoSubmission.objects.create(
|
|
user=user,
|
|
content_type=park_ct,
|
|
object_id=test_park.id,
|
|
photo=dummy_image,
|
|
caption=(
|
|
"Main entrance plaza of Test Park showing the newly installed digital display board "
|
|
"and renovated ticketing area. Photo taken during morning park opening."
|
|
),
|
|
date_taken=date(2024, 1, 15),
|
|
status="PENDING",
|
|
)
|
|
|
|
# Ride photo submission
|
|
dummy_image2 = SimpleUploadedFile(
|
|
"coaster_track.gif", image_data, content_type="image/gif"
|
|
)
|
|
PhotoSubmission.objects.create(
|
|
user=user,
|
|
content_type=ride_ct,
|
|
object_id=test_ride.id,
|
|
photo=dummy_image2,
|
|
caption=(
|
|
"Test Coaster's first drop and loop element showing the new paint scheme. "
|
|
"Photo taken from the guest pathway near Station Alpha."
|
|
),
|
|
date_taken=date(2024, 1, 20),
|
|
status="PENDING",
|
|
)
|
|
|
|
self.stdout.write(self.style.SUCCESS("Successfully seeded test submissions"))
|