mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 17:31:09 -05:00
Compare commits
1 Commits
main
...
pixeebot/d
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c063c082ae |
@@ -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)
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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(
|
||||||
|
|||||||
@@ -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 operators.models import Operator
|
from operators.models import Operator
|
||||||
@@ -16,6 +15,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()
|
||||||
|
|
||||||
@@ -190,7 +190,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)
|
||||||
|
|||||||
@@ -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),
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
Reference in New Issue
Block a user