mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 07:51:09 -05:00
73 lines
2.8 KiB
Python
73 lines
2.8 KiB
Python
# Keep all imports and previous classes up to RideCreateView
|
|
|
|
class RideUpdateView(LoginRequiredMixin, ParkContextRequired, EditSubmissionMixin, UpdateView):
|
|
"""View for updating an existing ride"""
|
|
model = Ride
|
|
form_class = RideForm
|
|
template_name = 'rides/ride_form.html'
|
|
slug_url_kwarg = 'ride_slug'
|
|
|
|
def get_success_url(self):
|
|
"""Get URL to redirect to after successful update"""
|
|
return reverse('parks:rides:ride_detail', kwargs={
|
|
'park_slug': self.park.slug,
|
|
'ride_slug': self.object.slug
|
|
})
|
|
|
|
def get_queryset(self):
|
|
"""Get ride for the specific park"""
|
|
return Ride.objects.filter(park__slug=self.kwargs['park_slug'])
|
|
|
|
def get_form_kwargs(self):
|
|
"""Pass park to the form"""
|
|
kwargs = super().get_form_kwargs()
|
|
self.park = get_object_or_404(Park, slug=self.kwargs['park_slug'])
|
|
kwargs['park'] = self.park
|
|
return kwargs
|
|
|
|
def get_context_data(self, **kwargs):
|
|
"""Add park and park_slug to context"""
|
|
context = super().get_context_data(**kwargs)
|
|
context['park'] = self.park
|
|
context['park_slug'] = self.park.slug
|
|
context['is_edit'] = True
|
|
return context
|
|
|
|
def form_valid(self, form):
|
|
"""Handle form submission including new items"""
|
|
# Check for new manufacturer
|
|
manufacturer_name = form.cleaned_data.get('manufacturer_search')
|
|
if manufacturer_name and not form.cleaned_data.get('manufacturer'):
|
|
EditSubmission.objects.create(
|
|
user=self.request.user,
|
|
content_type=ContentType.objects.get_for_model(Manufacturer),
|
|
submission_type="CREATE",
|
|
changes={"name": manufacturer_name}
|
|
)
|
|
|
|
# Check for new designer
|
|
designer_name = form.cleaned_data.get('designer_search')
|
|
if designer_name and not form.cleaned_data.get('designer'):
|
|
EditSubmission.objects.create(
|
|
user=self.request.user,
|
|
content_type=ContentType.objects.get_for_model(Designer),
|
|
submission_type="CREATE",
|
|
changes={"name": designer_name}
|
|
)
|
|
|
|
# Check for new ride model
|
|
ride_model_name = form.cleaned_data.get('ride_model_search')
|
|
manufacturer = form.cleaned_data.get('manufacturer')
|
|
if ride_model_name and not form.cleaned_data.get('ride_model') and manufacturer:
|
|
EditSubmission.objects.create(
|
|
user=self.request.user,
|
|
content_type=ContentType.objects.get_for_model(RideModel),
|
|
submission_type="CREATE",
|
|
changes={
|
|
"name": ride_model_name,
|
|
"manufacturer": manufacturer.id
|
|
}
|
|
)
|
|
|
|
return super().form_valid(form)
|