Getting step two of the inquiry process to display
This commit is contained in:
parent
a07d49c49e
commit
dc74a4fc3e
5 changed files with 72 additions and 29 deletions
|
@ -3,7 +3,10 @@ from django.contrib.gis.db import models
|
|||
from clients.models import ClientProfile
|
||||
from partners.models import Establishment
|
||||
|
||||
import uuid
|
||||
|
||||
class Inquiry(models.Model):
|
||||
uuid = models.UUIDField(default=uuid.uuid4, unique=True)
|
||||
client = models.ForeignKey(ClientProfile, models.PROTECT, null=True, blank=True)
|
||||
destination_name = models.CharField(max_length=128)
|
||||
destination_coords = models.PointField()
|
||||
|
|
|
@ -2,11 +2,12 @@ from django.urls import path
|
|||
|
||||
from public.views import HomeView
|
||||
|
||||
from .views import InquiryCreateView
|
||||
from .views import InquiryCreateView, InquiryUpdateView
|
||||
|
||||
app_name = "auction"
|
||||
|
||||
urlpatterns = [
|
||||
path('create_inquiry/', InquiryCreateView.as_view(), name="create_inquiry"),
|
||||
path('process_inquiry/<slug:uuid>/', HomeView.as_view(), name="process_inquiry"),
|
||||
path('process_inquiry/<slug:uuid>/', InquiryUpdateView.as_view(), name="process_inquiry"),
|
||||
path('create_payment/<slug:uuid>/', HomeView.as_view(), name="inquiry_payment"),
|
||||
]
|
|
@ -1,4 +1,4 @@
|
|||
from django.views.generic import CreateView
|
||||
from django.views.generic import CreateView, UpdateView, View
|
||||
from django.shortcuts import redirect
|
||||
from django.contrib import messages
|
||||
from django.urls import reverse
|
||||
|
@ -11,11 +11,16 @@ from .helpers import name_to_coords
|
|||
|
||||
class InquiryCreateView(InConstructionMixin, CreateView):
|
||||
model = Inquiry
|
||||
fields = ["destination_name", "destination_coords", "budget", "arrival", "min_nights", "adults", "children"]
|
||||
fields = ["destination_name", "budget", "arrival", "min_nights", "adults", "children"]
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
return redirect("/")
|
||||
|
||||
def form_valid(self, form):
|
||||
form.instance.destination_coords = self.clean_destination_coords()
|
||||
form.instance.destination_radius = 0
|
||||
return super().form_valid(form)
|
||||
|
||||
def form_invalid(self, form, *args, **kwargs):
|
||||
for field in form:
|
||||
for error in field.errors:
|
||||
|
@ -24,13 +29,24 @@ class InquiryCreateView(InConstructionMixin, CreateView):
|
|||
return redirect("/")
|
||||
|
||||
def get_success_url(self):
|
||||
return reverse("auction:process_inquiry", args=(self.object.id))
|
||||
return reverse("auction:process_inquiry", args=(self.object.uuid,))
|
||||
|
||||
def clean_destination_coords(self):
|
||||
lat = self.data.get("destination_lat", "")
|
||||
lon = self.data.get("destination_lon", "")
|
||||
lat = self.request.POST.get("destination_lat", "")
|
||||
lon = self.request.POST.get("destination_lon", "")
|
||||
|
||||
if (not lat) or (not lon):
|
||||
lat, lon = name_to_coords(self.cleaned_data.get("destination_name"))
|
||||
lat, lon = name_to_coords(self.request.POST.get("destination_name"))
|
||||
|
||||
return Point(lon, lat)
|
||||
return Point(lon, lat)
|
||||
|
||||
class InquiryUpdateView(InConstructionMixin, UpdateView):
|
||||
model = Inquiry
|
||||
fields = ["destination_radius", "arrival", "min_nights", "budget", "adults", "children", "comment"]
|
||||
template_name = "auction/process.html"
|
||||
|
||||
def get_object(self):
|
||||
return Inquiry.objects.get(uuid=self.kwargs["uuid"])
|
||||
|
||||
class InquiryPaymentView(InConstructionMixin, View):
|
||||
pass
|
24
public/templatetags/mapimage.py
Normal file
24
public/templatetags/mapimage.py
Normal file
|
@ -0,0 +1,24 @@
|
|||
from django import template
|
||||
|
||||
import requests
|
||||
import base64
|
||||
|
||||
from dbsettings.models import Setting
|
||||
|
||||
register = template.Library()
|
||||
|
||||
@register.simple_tag
|
||||
def mapimage(location, zoom=8, width=348, height=250):
|
||||
payload = {
|
||||
'center': f"{location.y},{location.x}",
|
||||
'zoom': str(zoom),
|
||||
"size": "%ix%i" % (width, height),
|
||||
'sensor': "false",
|
||||
'key': Setting.objects.get(key="google.api.key").value # pylint: disable=no-member
|
||||
}
|
||||
|
||||
r = requests.get('https://maps.googleapis.com/maps/api/staticmap', params=payload)
|
||||
image = r.content
|
||||
data_uri = 'data:image/jpg;base64,'
|
||||
data_uri += base64.b64encode(image).decode().replace('\n', '')
|
||||
return data_uri
|
|
@ -39,25 +39,21 @@
|
|||
<div class="col-12 col-md-6 col-lg-12">
|
||||
<div class="side-bar-block detail-block style2 text-center">
|
||||
<div class="detail-img text-center">
|
||||
<img src="{% mapimage_coords object.destination_geo.y object.destination_geo.x %}" class="img-fluid" alt="detail-img"/>
|
||||
<img src="{% mapimage object.destination_coords %}" class="img-fluid" alt="detail-img"/>
|
||||
<div class="detail-title">
|
||||
<h4><a href="#">{{ object.destination_name }}</a></h4>
|
||||
<p></p>
|
||||
</div><!-- end detail-title -->
|
||||
|
||||
<span class="detail-price"><h4>€ {{ object.amount }} <span></h4></span>
|
||||
<span class="detail-price"><h4>€ {{ object.budget }} <span></h4></span>
|
||||
</div><!-- end detail-img -->
|
||||
|
||||
<div class="table-responsive">
|
||||
<table class="table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>{% trans "Ankunft ab" %}</td>
|
||||
<td>{{ object.first_date|date:"SHORT_DATE_FORMAT" }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{% trans "Abreise bis" %}</td>
|
||||
<td>{{ object.last_date|date:"SHORT_DATE_FORMAT" }}</td>
|
||||
<td>{% trans "Anreisedatum" %}</td>
|
||||
<td>{{ object.arrival|date:"SHORT_DATE_FORMAT" }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{% trans "Erwachsene" %}</td>
|
||||
|
@ -69,7 +65,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td>{% trans "Gebotener Betrag" %}</td>
|
||||
<td>€ {{ object.amount }}</td>
|
||||
<td>€ {{ object.budget }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -94,7 +90,7 @@
|
|||
|
||||
|
||||
<div class="col-12 col-md-12 col-lg-7 col-xl-8 content-side">
|
||||
<form class="lg-booking-form" id="frm_booking" name="frm_booking" method="post" action="{% url "auction:post_payment" object.uuid %}">
|
||||
<form class="lg-booking-form" id="frm_booking" name="frm_booking" method="post" action="{% url "auction:inquiry_payment" object.uuid %}">
|
||||
{% csrf_token %}
|
||||
{% if not request.user.is_authenticated %}
|
||||
<div class="lg-booking-form-heading">
|
||||
|
@ -122,7 +118,7 @@
|
|||
<input type="password" name="password" class=" form-control" id="id_password">
|
||||
</div>
|
||||
</div>
|
||||
<button id="btn_login" class="btn btn-orange btn-block" formaction="{% url "profiles:login" %}?next={{ request.path }}">{% trans "Login" %}</button>
|
||||
<button id="btn_login" class="btn btn-orange btn-block" formaction="{% url "localauth:login" %}?next={{ request.path }}">{% trans "Login" %}</button>
|
||||
|
||||
<div class="clearfix" style="height: 50px;"></div>
|
||||
</div><!-- end tab-login -->
|
||||
|
@ -146,7 +142,7 @@
|
|||
<input type="password" name="password2" class=" form-control" id="id_password2">
|
||||
</div>
|
||||
</div>
|
||||
<button id="btn_login" class="btn btn-orange btn-block" formaction="{% url "profiles:register" %}?next={{ request.path }}">{% trans "Registrieren" %}</button>
|
||||
<button id="btn_login" class="btn btn-orange btn-block" formaction="{% url "localauth:register" %}?next={{ request.path }}">{% trans "Registrieren" %}</button>
|
||||
|
||||
|
||||
<div class="clearfix"></div>
|
||||
|
@ -179,19 +175,12 @@
|
|||
</div><!-- end row -->
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="col-md-12">
|
||||
<div class="form-group">
|
||||
<label>{% trans "Straße" %}</label>
|
||||
<input type="text" class="form-control" id="id_address" name="address" {% if request.user.is_authenticated %}required{% else %}disabled{% endif %} value="{{ request.user.clientprofile.address }}"/>
|
||||
</div>
|
||||
</div><!-- end columns -->
|
||||
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label>{% trans "Straße (Zusatz)" %}</label>
|
||||
<input type="text" class="form-control" id="id_address2" name="address2" {% if request.user.is_authenticated %}{% else %}disabled{% endif %} {% if request.user.clientprofile.address2 %}value="{{ request.user.clientprofile.address2 }}"{% endif %}/>
|
||||
</div>
|
||||
</div><!-- end columns -->
|
||||
</div><!-- end row -->
|
||||
|
||||
<div class="row">
|
||||
|
@ -246,6 +235,7 @@
|
|||
<ul class="nav nav-tabs">
|
||||
<li class="nav-item active"><a class="nav-link" href="#tab-credit-card" data-toggle="tab">{% trans "Kreditkarte" %}</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="#tab-paypal" data-toggle="tab">{% trans "PayPal" %}</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="#tab-sepa" data-toggle="tab">{% trans "Überweisung" %}</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="tab-content">
|
||||
|
@ -266,6 +256,15 @@
|
|||
|
||||
<div class="clearfix"></div>
|
||||
</div><!-- end tab-paypal -->
|
||||
|
||||
<div id="tab-sepa" class="tab-pane">
|
||||
<img src="{% static "frontend/images/paypal.png" %}" class="img-fluid" alt="sepa" />
|
||||
<div class="paypal-text">
|
||||
<p>{% trans "Die Daten für die Überweisung werden im nächsten Schritt angezeigt." %}</p>
|
||||
</div><!-- end paypal-text -->
|
||||
|
||||
<div class="clearfix"></div>
|
||||
</div><!-- end tab-paypal -->
|
||||
|
||||
</div><!-- end tab-content -->
|
||||
</div><!-- end payment-tabs -->
|
Loading…
Reference in a new issue