from django.views.generic import CreateView from django.shortcuts import redirect from django.contrib import messages from django.urls import reverse from django.contrib.gis.geos import Point from public.mixins import InConstructionMixin from .models import Inquiry from .helpers import name_to_coords class InquiryCreateView(InConstructionMixin, CreateView): model = Inquiry fields = ["destination_name", "destination_coords", "budget", "arrival", "min_nights", "adults", "children"] def get(self, request, *args, **kwargs): return redirect("/") def form_invalid(self, form, *args, **kwargs): for field in form: for error in field.errors: messages.error(self.request, f"{field.name}: {error}") return redirect("/") def get_success_url(self): return reverse("auction:process_inquiry", args=(self.object.id)) def clean_destination_coords(self): lat = self.cleaned_data.get("destination_lat", "") lon = self.cleaned_data.get("destination_lon", "") if (not lat) or (not lon): lat, lon = name_to_coords(self.cleaned_data.get("destination_name")) return Point(lon, lat)