okay fine

This commit is contained in:
pacnpal
2024-11-03 17:47:26 +00:00
parent 01c6004a79
commit 27eb239e97
10020 changed files with 1935769 additions and 2364 deletions

View File

@@ -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'),

View File

@@ -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,