photos fix

This commit is contained in:
pacnpal
2024-11-01 01:27:11 +00:00
parent 80a9d61ca2
commit f51c8370ce
89 changed files with 2241 additions and 614 deletions

View File

@@ -0,0 +1,114 @@
import os
import requests
from django.core.management.base import BaseCommand
from django.core.files import File
from django.core.files.temp import NamedTemporaryFile
from media.models import Photo
from parks.models import Park
from rides.models import Ride
from django.contrib.contenttypes.models import ContentType
import json
from django.core.files.base import ContentFile
class Command(BaseCommand):
help = 'Download photos from seed data URLs'
def handle(self, *args, **kwargs):
self.stdout.write('Downloading photos from seed data...')
# Read seed data
with open('parks/management/commands/seed_data.json', 'r') as f:
seed_data = json.load(f)
park_content_type = ContentType.objects.get_for_model(Park)
ride_content_type = ContentType.objects.get_for_model(Ride)
# Process parks and their photos
for park_data in seed_data['parks']:
try:
park = Park.objects.get(name=park_data['name'])
# Download park photos
for idx, photo_url in enumerate(park_data['photos'], 1):
try:
# Download image
self.stdout.write(f'Downloading from URL: {photo_url}')
response = requests.get(photo_url)
if response.status_code == 200:
# Delete any existing photos for this park
Photo.objects.filter(
content_type=park_content_type,
object_id=park.id
).delete()
# Create new photo record
photo = Photo(
content_type=park_content_type,
object_id=park.id,
is_primary=idx == 1
)
# Save image content
photo.image.save(
f"{park.slug}_{idx}.jpg",
ContentFile(response.content),
save=False
)
photo.save()
self.stdout.write(f'Downloaded photo for {park.name}: {photo.image.name}')
self.stdout.write(f'Database record created with ID: {photo.id}')
else:
self.stdout.write(f'Error downloading image. Status code: {response.status_code}')
except Exception as e:
self.stdout.write(f'Error downloading park photo: {str(e)}')
# Process rides and their photos
for ride_data in park_data['rides']:
try:
ride = Ride.objects.get(name=ride_data['name'], park=park)
# Download ride photos
for idx, photo_url in enumerate(ride_data['photos'], 1):
try:
# Download image
self.stdout.write(f'Downloading from URL: {photo_url}')
response = requests.get(photo_url)
if response.status_code == 200:
# Delete any existing photos for this ride
Photo.objects.filter(
content_type=ride_content_type,
object_id=ride.id
).delete()
# Create new photo record
photo = Photo(
content_type=ride_content_type,
object_id=ride.id,
is_primary=idx == 1
)
# Save image content
photo.image.save(
f"{ride.slug}_{idx}.jpg",
ContentFile(response.content),
save=False
)
photo.save()
self.stdout.write(f'Downloaded photo for {ride.name}: {photo.image.name}')
self.stdout.write(f'Database record created with ID: {photo.id}')
else:
self.stdout.write(f'Error downloading image. Status code: {response.status_code}')
except Exception as e:
self.stdout.write(f'Error downloading ride photo: {str(e)}')
except Ride.DoesNotExist:
self.stdout.write(f'Ride not found: {ride_data["name"]}')
except Park.DoesNotExist:
self.stdout.write(f'Park not found: {park_data["name"]}')
self.stdout.write('Finished downloading photos')