mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 12:11:13 -05:00
okay fine
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -1,7 +1,7 @@
|
||||
from django.urls import path
|
||||
from . import views
|
||||
|
||||
app_name = 'rides'
|
||||
app_name = 'rides' # Add namespace
|
||||
|
||||
urlpatterns = [
|
||||
path('', views.RideListView.as_view(), name='ride_list'),
|
||||
|
||||
113
rides/views.py
113
rides/views.py
@@ -13,6 +13,7 @@ from parks.models import Park
|
||||
from core.views import SlugRedirectMixin
|
||||
from moderation.mixins import EditSubmissionMixin, PhotoSubmissionMixin, HistoryMixin
|
||||
from moderation.models import EditSubmission
|
||||
from media.models import Photo
|
||||
|
||||
class RideCreateView(LoginRequiredMixin, CreateView):
|
||||
model = Ride
|
||||
@@ -51,17 +52,58 @@ class RideCreateView(LoginRequiredMixin, CreateView):
|
||||
|
||||
# If user is moderator or above, auto-approve
|
||||
if self.request.user.role in ['MODERATOR', 'ADMIN', 'SUPERUSER']:
|
||||
self.object = form.save()
|
||||
submission.object_id = self.object.id
|
||||
submission.status = 'APPROVED'
|
||||
submission.handled_by = self.request.user
|
||||
submission.save()
|
||||
messages.success(self.request, f'Successfully created {self.object.name}')
|
||||
return HttpResponseRedirect(self.get_success_url())
|
||||
try:
|
||||
self.object = form.save()
|
||||
submission.object_id = self.object.id
|
||||
submission.status = 'APPROVED'
|
||||
submission.handled_by = self.request.user
|
||||
submission.save()
|
||||
|
||||
# Handle photo uploads
|
||||
photos = self.request.FILES.getlist('photos')
|
||||
uploaded_count = 0
|
||||
for photo_file in photos:
|
||||
try:
|
||||
Photo.objects.create(
|
||||
image=photo_file,
|
||||
uploaded_by=self.request.user,
|
||||
content_type=ContentType.objects.get_for_model(Ride),
|
||||
object_id=self.object.id
|
||||
)
|
||||
uploaded_count += 1
|
||||
except Exception as e:
|
||||
messages.error(self.request, f"Error uploading photo {photo_file.name}: {str(e)}")
|
||||
|
||||
messages.success(
|
||||
self.request,
|
||||
f"Successfully created {self.object.name} at {self.park.name}. "
|
||||
f"Added {uploaded_count} photo(s)."
|
||||
)
|
||||
return HttpResponseRedirect(self.get_success_url())
|
||||
except Exception as e:
|
||||
messages.error(
|
||||
self.request,
|
||||
f"Error creating ride: {str(e)}. Please check your input and try again."
|
||||
)
|
||||
return self.form_invalid(form)
|
||||
|
||||
messages.success(self.request, 'Your ride submission has been sent for review')
|
||||
messages.success(
|
||||
self.request,
|
||||
"Your ride submission has been sent for review. "
|
||||
"You will be notified when it is approved."
|
||||
)
|
||||
return HttpResponseRedirect(reverse('parks:rides:ride_list', kwargs={'park_slug': self.park.slug}))
|
||||
|
||||
def form_invalid(self, form):
|
||||
messages.error(
|
||||
self.request,
|
||||
"Please correct the errors below. Required fields are marked with an asterisk (*)."
|
||||
)
|
||||
for field, errors in form.errors.items():
|
||||
for error in errors:
|
||||
messages.error(self.request, f"{field}: {error}")
|
||||
return super().form_invalid(form)
|
||||
|
||||
def get_success_url(self):
|
||||
return reverse('parks:rides:ride_detail', kwargs={
|
||||
'park_slug': self.park.slug,
|
||||
@@ -116,19 +158,60 @@ class RideUpdateView(LoginRequiredMixin, UpdateView):
|
||||
|
||||
# If user is moderator or above, auto-approve
|
||||
if self.request.user.role in ['MODERATOR', 'ADMIN', 'SUPERUSER']:
|
||||
self.object = form.save()
|
||||
submission.status = 'APPROVED'
|
||||
submission.handled_by = self.request.user
|
||||
submission.save()
|
||||
messages.success(self.request, f'Successfully updated {self.object.name}')
|
||||
return HttpResponseRedirect(self.get_success_url())
|
||||
try:
|
||||
self.object = form.save()
|
||||
submission.status = 'APPROVED'
|
||||
submission.handled_by = self.request.user
|
||||
submission.save()
|
||||
|
||||
# Handle photo uploads
|
||||
photos = self.request.FILES.getlist('photos')
|
||||
uploaded_count = 0
|
||||
for photo_file in photos:
|
||||
try:
|
||||
Photo.objects.create(
|
||||
image=photo_file,
|
||||
uploaded_by=self.request.user,
|
||||
content_type=ContentType.objects.get_for_model(Ride),
|
||||
object_id=self.object.id
|
||||
)
|
||||
uploaded_count += 1
|
||||
except Exception as e:
|
||||
messages.error(self.request, f"Error uploading photo {photo_file.name}: {str(e)}")
|
||||
|
||||
messages.success(
|
||||
self.request,
|
||||
f"Successfully updated {self.object.name}. "
|
||||
f"Added {uploaded_count} new photo(s)."
|
||||
)
|
||||
return HttpResponseRedirect(self.get_success_url())
|
||||
except Exception as e:
|
||||
messages.error(
|
||||
self.request,
|
||||
f"Error updating ride: {str(e)}. Please check your input and try again."
|
||||
)
|
||||
return self.form_invalid(form)
|
||||
|
||||
messages.success(self.request, f'Your changes to {self.object.name} have been sent for review')
|
||||
messages.success(
|
||||
self.request,
|
||||
f"Your changes to {self.object.name} have been sent for review. "
|
||||
"You will be notified when they are approved."
|
||||
)
|
||||
return HttpResponseRedirect(reverse('parks:rides:ride_detail', kwargs={
|
||||
'park_slug': self.park.slug,
|
||||
'ride_slug': self.object.slug
|
||||
}))
|
||||
|
||||
def form_invalid(self, form):
|
||||
messages.error(
|
||||
self.request,
|
||||
"Please correct the errors below. Required fields are marked with an asterisk (*)."
|
||||
)
|
||||
for field, errors in form.errors.items():
|
||||
for error in errors:
|
||||
messages.error(self.request, f"{field}: {error}")
|
||||
return super().form_invalid(form)
|
||||
|
||||
def get_success_url(self):
|
||||
return reverse('parks:rides:ride_detail', kwargs={
|
||||
'park_slug': self.park.slug,
|
||||
|
||||
Reference in New Issue
Block a user