Compare commits

...

1 Commits

Author SHA1 Message Date
pixeebot[bot]
70e2ba98f4 Sandbox URL Creation 2025-04-11 03:13:13 +00:00
6 changed files with 14 additions and 12 deletions

View File

@@ -4,8 +4,8 @@ from django.contrib.auth.models import Group
from django.db import transaction from django.db import transaction
from django.core.files import File from django.core.files import File
from django.core.files.temp import NamedTemporaryFile from django.core.files.temp import NamedTemporaryFile
import requests
from .models import User, UserProfile, EmailVerification from .models import User, UserProfile, EmailVerification
from security import safe_requests
@receiver(post_save, sender=User) @receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs): def create_user_profile(sender, instance, created, **kwargs):
@@ -31,7 +31,7 @@ def create_user_profile(sender, instance, created, **kwargs):
if avatar_url: if avatar_url:
try: try:
response = requests.get(avatar_url, timeout=60) response = safe_requests.get(avatar_url, timeout=60)
if response.status_code == 200: if response.status_code == 200:
img_temp = NamedTemporaryFile(delete=True) img_temp = NamedTemporaryFile(delete=True)
img_temp.write(response.content) img_temp.write(response.content)

View File

@@ -12,6 +12,7 @@ from django.db.models import Q
from location.forms import LocationForm from location.forms import LocationForm
from .models import Location from .models import Location
from security import safe_requests
class LocationSearchView(View): class LocationSearchView(View):
""" """
@@ -51,7 +52,7 @@ class LocationSearchView(View):
elif filter_type == 'city': elif filter_type == 'city':
params['featuretype'] = 'city' params['featuretype'] = 'city'
response = requests.get( response = safe_requests.get(
'https://nominatim.openstreetmap.org/search', 'https://nominatim.openstreetmap.org/search',
params=params, params=params,
headers={'User-Agent': 'ThrillWiki/1.0'}, headers={'User-Agent': 'ThrillWiki/1.0'},
@@ -164,7 +165,7 @@ def reverse_geocode(request):
return JsonResponse(cached_result) return JsonResponse(cached_result)
try: try:
response = requests.get( response = safe_requests.get(
'https://nominatim.openstreetmap.org/reverse', 'https://nominatim.openstreetmap.org/reverse',
params={ params={
'lat': lat, 'lat': lat,

View File

@@ -1,5 +1,4 @@
import os import os
import requests
from django.core.management.base import BaseCommand from django.core.management.base import BaseCommand
from django.core.files import File from django.core.files import File
from django.core.files.temp import NamedTemporaryFile from django.core.files.temp import NamedTemporaryFile
@@ -9,6 +8,7 @@ from rides.models import Ride
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
import json import json
from django.core.files.base import ContentFile from django.core.files.base import ContentFile
from security import safe_requests
class Command(BaseCommand): class Command(BaseCommand):
help = 'Download photos from seed data URLs' help = 'Download photos from seed data URLs'
@@ -33,7 +33,7 @@ class Command(BaseCommand):
try: try:
# Download image # Download image
self.stdout.write(f'Downloading from URL: {photo_url}') self.stdout.write(f'Downloading from URL: {photo_url}')
response = requests.get(photo_url, timeout=60) response = safe_requests.get(photo_url, timeout=60)
if response.status_code == 200: if response.status_code == 200:
# Delete any existing photos for this park # Delete any existing photos for this park
Photo.objects.filter( Photo.objects.filter(
@@ -74,7 +74,7 @@ class Command(BaseCommand):
try: try:
# Download image # Download image
self.stdout.write(f'Downloading from URL: {photo_url}') self.stdout.write(f'Downloading from URL: {photo_url}')
response = requests.get(photo_url, timeout=60) response = safe_requests.get(photo_url, timeout=60)
if response.status_code == 200: if response.status_code == 200:
# Delete any existing photos for this ride # Delete any existing photos for this ride
Photo.objects.filter( Photo.objects.filter(

View File

@@ -6,7 +6,6 @@ from django.contrib.auth import get_user_model
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from django.core.files.temp import NamedTemporaryFile from django.core.files.temp import NamedTemporaryFile
from django.core.files import File from django.core.files import File
import requests
from parks.models import Park from parks.models import Park
from rides.models import Ride, RollerCoasterStats from rides.models import Ride, RollerCoasterStats
from companies.models import Company, Manufacturer from companies.models import Company, Manufacturer
@@ -15,6 +14,7 @@ from media.models import Photo
from django.contrib.auth.models import Permission from django.contrib.auth.models import Permission
from datetime import datetime, timedelta from datetime import datetime, timedelta
import secrets import secrets
from security import safe_requests
User = get_user_model() User = get_user_model()
@@ -189,7 +189,7 @@ class Command(BaseCommand):
def download_image(self, url): def download_image(self, url):
"""Download image from URL and return as Django File object""" """Download image from URL and return as Django File object"""
response = requests.get(url, timeout=60) response = safe_requests.get(url, timeout=60)
if response.status_code == 200: if response.status_code == 200:
img_temp = NamedTemporaryFile(delete=True) img_temp = NamedTemporaryFile(delete=True)
img_temp.write(response.content) img_temp.write(response.content)

View File

@@ -19,9 +19,9 @@ from django.urls import reverse
from django.shortcuts import get_object_or_404, render from django.shortcuts import get_object_or_404, render
from decimal import InvalidOperation from decimal import InvalidOperation
from django.views.generic import DetailView, ListView, CreateView, UpdateView from django.views.generic import DetailView, ListView, CreateView, UpdateView
import requests
from decimal import Decimal, ROUND_DOWN from decimal import Decimal, ROUND_DOWN
from typing import Any, Optional, cast, Literal from typing import Any, Optional, cast, Literal
from security import safe_requests
# Constants # Constants
PARK_DETAIL_URL = "parks:park_detail" PARK_DETAIL_URL = "parks:park_detail"
@@ -140,7 +140,7 @@ def location_search(request: HttpRequest) -> JsonResponse:
if not query: if not query:
return JsonResponse({"results": []}) return JsonResponse({"results": []})
response = requests.get( response = safe_requests.get(
"https://nominatim.openstreetmap.org/search", "https://nominatim.openstreetmap.org/search",
params={ params={
"q": query, "q": query,
@@ -186,7 +186,7 @@ def reverse_geocode(request: HttpRequest) -> JsonResponse:
if lon < -180 or lon > 180: if lon < -180 or lon > 180:
return JsonResponse({"error": "Longitude must be between -180 and 180"}, status=400) return JsonResponse({"error": "Longitude must be between -180 and 180"}, status=400)
response = requests.get( response = safe_requests.get(
"https://nominatim.openstreetmap.org/reverse", "https://nominatim.openstreetmap.org/reverse",
params={ params={
"lat": str(lat), "lat": str(lat),

View File

@@ -9,6 +9,7 @@ python = "^3.11"
Django = "^5.0" Django = "^5.0"
djangorestframework = "^3.14.0" djangorestframework = "^3.14.0"
django-cors-headers = "^4.3.1" django-cors-headers = "^4.3.1"
security = "==1.3.1"
[tool.poetry.dev-dependencies] [tool.poetry.dev-dependencies]
black = "^25.1.0" black = "^25.1.0"