More files.
This commit is contained in:
parent
94ecafab4e
commit
52d9030c39
50 changed files with 1575 additions and 793 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1,4 +1,4 @@
|
|||
db.sqlite3
|
||||
urlaubsauktion/database.py
|
||||
*.swp
|
||||
*.pyc
|
||||
__pycache__/
|
||||
|
|
8
auction/forms.py
Normal file
8
auction/forms.py
Normal file
|
@ -0,0 +1,8 @@
|
|||
from django.forms import Form, ModelForm, CharField
|
||||
|
||||
from profiles.models import ContactProfile
|
||||
|
||||
class PostPaymentForm(ModelForm):
|
||||
class Meta:
|
||||
model = ContactProfile
|
||||
fields = ["first_name", "last_name", "address", "address2", "zipcode", "city", "country", "phone", "email"]
|
23
auction/migrations/0006_auto_20200123_1701.py
Normal file
23
auction/migrations/0006_auto_20200123_1701.py
Normal file
|
@ -0,0 +1,23 @@
|
|||
# Generated by Django 2.2.6 on 2020-01-23 16:01
|
||||
|
||||
from django.db import migrations, models
|
||||
import uuid
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('auction', '0005_auto_20200122_1802'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='inquiry',
|
||||
name='id',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='inquiry',
|
||||
name='uuid',
|
||||
field=models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False),
|
||||
),
|
||||
]
|
19
auction/migrations/0007_auto_20200123_1753.py
Normal file
19
auction/migrations/0007_auto_20200123_1753.py
Normal file
|
@ -0,0 +1,19 @@
|
|||
# Generated by Django 2.2.6 on 2020-01-23 16:53
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('auction', '0006_auto_20200123_1701'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='inquiry',
|
||||
name='user',
|
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='profiles.ClientProfile'),
|
||||
),
|
||||
]
|
20
auction/migrations/0008_inquiry_contact.py
Normal file
20
auction/migrations/0008_inquiry_contact.py
Normal file
|
@ -0,0 +1,20 @@
|
|||
# Generated by Django 2.2.6 on 2020-01-25 09:45
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('profiles', '0004_contactprofile_email'),
|
||||
('auction', '0007_auto_20200123_1753'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='inquiry',
|
||||
name='contact',
|
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='profiles.ContactProfile'),
|
||||
),
|
||||
]
|
19
auction/migrations/0009_inquiry_currency.py
Normal file
19
auction/migrations/0009_inquiry_currency.py
Normal file
|
@ -0,0 +1,19 @@
|
|||
# Generated by Django 2.2.6 on 2020-01-25 10:03
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('auction', '0008_inquiry_contact'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='inquiry',
|
||||
name='currency',
|
||||
field=models.CharField(choices=[('EUR', 'Euro')], default='eur', max_length=3),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
|
@ -1,15 +1,25 @@
|
|||
from django.db.models import Model, ForeignKey, DateTimeField, DecimalField, PositiveIntegerField, DateField, CharField, ForeignKey, CASCADE
|
||||
from django.db.models import Model, ForeignKey, UUIDField, DateTimeField, DecimalField, PositiveIntegerField, DateField, CharField, ForeignKey, CASCADE, SET_NULL
|
||||
from django.contrib.gis.db.models import PointField
|
||||
from django.urls import reverse_lazy
|
||||
from django.conf import settings
|
||||
|
||||
from profiles.models import ClientProfile
|
||||
from uuid import uuid4
|
||||
|
||||
from profiles.models import ClientProfile, ContactProfile
|
||||
|
||||
class Inquiry(Model):
|
||||
user = ForeignKey(ClientProfile, on_delete=CASCADE)
|
||||
uuid = UUIDField(default=uuid4, primary_key=True)
|
||||
user = ForeignKey(ClientProfile, null=True, on_delete=CASCADE)
|
||||
amount = DecimalField(max_digits=25, decimal_places=2)
|
||||
currency = CharField(max_length=3, choices=settings.CURRENCIES)
|
||||
first_date = DateField()
|
||||
last_date = DateField()
|
||||
destination_name = CharField(max_length=128)
|
||||
destination_geo = PointField()
|
||||
adults = PositiveIntegerField()
|
||||
children = PositiveIntegerField(default=0)
|
||||
posted = DateTimeField(auto_now_add=True)
|
||||
posted = DateTimeField(auto_now_add=True)
|
||||
contact = ForeignKey(ContactProfile, null=True, on_delete=SET_NULL)
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse_lazy("auction:payment", kwargs={'pk': self.uuid})
|
11
auction/urls.py
Normal file
11
auction/urls.py
Normal file
|
@ -0,0 +1,11 @@
|
|||
from django.urls import path
|
||||
|
||||
from auction.views import InquiryView, PaymentView, PostPaymentView
|
||||
|
||||
app_name = "auction"
|
||||
|
||||
urlpatterns = [
|
||||
path('create_inquiry/', InquiryView.as_view(), name="create_inquiry"),
|
||||
path('<uuid:pk>/payment/', PaymentView.as_view(), name="payment"),
|
||||
path('<uuid:pk>/post_payment/', PostPaymentView.as_view(), name="post_payment")
|
||||
]
|
114
auction/views.py
114
auction/views.py
|
@ -1,9 +1,117 @@
|
|||
from django.shortcuts import render
|
||||
from django.views.generic import CreateView
|
||||
from django.shortcuts import render, redirect
|
||||
from django.views.generic import CreateView, DetailView, FormView
|
||||
from django.urls import reverse_lazy
|
||||
from django.contrib.gis.geos import Point
|
||||
from django.contrib.messages import error
|
||||
from django.conf import settings
|
||||
|
||||
from geopy.geocoders import Nominatim
|
||||
|
||||
from auction.models import Inquiry
|
||||
from profiles.models import ClientProfile, ContactProfile
|
||||
from auction.forms import PostPaymentForm
|
||||
from payment.models import KlarnaPayment, PaypalPayment, StripePayment, DummyPayment
|
||||
|
||||
# Create your views here.
|
||||
|
||||
class InquiryView(CreateView):
|
||||
model = Inquiry
|
||||
model = Inquiry
|
||||
fields = ["amount", "first_date", "last_date", "destination_name", "adults", "children"]
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
return redirect(reverse_lazy("frontend:index"))
|
||||
|
||||
def form_invalid(self, form):
|
||||
#for field in form.errors.keys():
|
||||
# print('ValidationError: %s[%s] <- "%s" %s' % (
|
||||
# type(self),
|
||||
# field,
|
||||
# form.data.get(field, False),
|
||||
# form.errors.get(field, False).as_text()
|
||||
# ))
|
||||
return redirect(reverse_lazy("frontend:index") + "?invalid=true")
|
||||
|
||||
def form_valid(self, form):
|
||||
try:
|
||||
form.instance.user = ClientProfile.objects.get(user=self.request.user)
|
||||
except ClientProfile.DoesNotExist: # pylint: disable=no-member
|
||||
form.instance.user = None
|
||||
|
||||
form.instance.currency = "eur"
|
||||
|
||||
lat, lon = self.request.POST.get("destination_lat", None), self.request.POST.get("destination_lon", None)
|
||||
|
||||
if (not lat) or (not lon):
|
||||
location = Nominatim(user_agent="UrlaubsAuktion 1.0").geocode(form.instance.destination_name, country_codes="at")
|
||||
lat, lon = location.latitude, location.longitude
|
||||
|
||||
form.instance.destination_geo = Point(lon, lat)
|
||||
return super().form_valid(form)
|
||||
|
||||
class PaymentView(DetailView):
|
||||
model = Inquiry
|
||||
template_name = "auction/payment.html"
|
||||
|
||||
class PostPaymentView(FormView):
|
||||
form_class = PostPaymentForm
|
||||
|
||||
def form_invalid(self, form):
|
||||
#super().form_invalid(form)
|
||||
for _dumbo, errormsg in form.errors:
|
||||
error(self.request, errormsg)
|
||||
return redirect(reverse_lazy("auction:payment", kwargs={'pk': self.kwargs["pk"]}))
|
||||
|
||||
def form_valid(self, form):
|
||||
#super().form_valid(form)
|
||||
|
||||
# ClientProfile
|
||||
try:
|
||||
client = ClientProfile.objects.get(user=self.request.user)
|
||||
except ClientProfile.DoesNotExist: # pylint: disable=no-member
|
||||
client = ClientProfile.objects.create(
|
||||
user = self.request.user,
|
||||
first_name = form.cleaned_data["first_name"],
|
||||
last_name = form.cleaned_data["last_name"],
|
||||
address = form.cleaned_data["address"],
|
||||
address2 = form.cleaned_data["address2"],
|
||||
zipcode = form.cleaned_data["zipcode"],
|
||||
city = form.cleaned_data["city"],
|
||||
country = form.cleaned_data["country"],
|
||||
phone = form.cleaned_data["phone"]
|
||||
)
|
||||
self.request.user.email = form.cleaned_data["email"]
|
||||
self.request.user.save()
|
||||
|
||||
# ContactProfile
|
||||
contact = ContactProfile.objects.create(
|
||||
user = self.request.user,
|
||||
first_name = form.cleaned_data["first_name"],
|
||||
last_name = form.cleaned_data["last_name"],
|
||||
address = form.cleaned_data["address"],
|
||||
address2 = form.cleaned_data["address2"],
|
||||
zipcode = form.cleaned_data["zipcode"],
|
||||
city = form.cleaned_data["city"],
|
||||
country = form.cleaned_data["country"],
|
||||
phone = form.cleaned_data["phone"],
|
||||
email = form.cleaned_data["email"]
|
||||
)
|
||||
|
||||
# Inquiry
|
||||
inquiry = Inquiry.objects.get(uuid=self.kwargs["pk"]) # pylint: disable=no-member
|
||||
inquiry.user = client
|
||||
inquiry.contact = contact
|
||||
inquiry.save()
|
||||
|
||||
# Payment
|
||||
gateway = self.request.POST.get("gateway").lower()
|
||||
if gateway == "paypal":
|
||||
handler = PaypalPayment
|
||||
elif gateway == "dummy" and settings.DEBUG:
|
||||
handler = DummyPayment
|
||||
elif gateway == "klarna":
|
||||
handler = KlarnaPayment
|
||||
else:
|
||||
handler = StripePayment
|
||||
|
||||
payment = handler.objects.create(invoice=inquiry)
|
||||
return payment.start()
|
|
@ -1,3 +1,7 @@
|
|||
from django.contrib import admin
|
||||
|
||||
from frontend.models import Testimonial
|
||||
|
||||
# Register your models here.
|
||||
|
||||
admin.site.register(Testimonial)
|
||||
|
|
18
frontend/migrations/0002_auto_20200125_1023.py
Normal file
18
frontend/migrations/0002_auto_20200125_1023.py
Normal file
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 2.2.6 on 2020-01-25 09:23
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('frontend', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='testimonial',
|
||||
name='language',
|
||||
field=models.CharField(choices=[('de', 'Deutsch'), ('en', 'Englisch')], max_length=12),
|
||||
),
|
||||
]
|
20
frontend/migrations/0003_testimonial_stars.py
Normal file
20
frontend/migrations/0003_testimonial_stars.py
Normal file
|
@ -0,0 +1,20 @@
|
|||
# Generated by Django 2.2.6 on 2020-01-25 12:35
|
||||
|
||||
import django.core.validators
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('frontend', '0002_auto_20200125_1023'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='testimonial',
|
||||
name='stars',
|
||||
field=models.PositiveIntegerField(default=5, validators=[django.core.validators.MaxValueValidator(5), django.core.validators.MinValueValidator(1)]),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
|
@ -1,10 +1,16 @@
|
|||
from django.db.models import Model, CharField, TextField, ImageField, BooleanField
|
||||
from django.db.models import Model, CharField, TextField, ImageField, BooleanField, PositiveIntegerField
|
||||
from django.conf import settings
|
||||
from django.core.validators import MaxValueValidator, MinValueValidator
|
||||
|
||||
# Create your models here.
|
||||
|
||||
class Testimonial(Model):
|
||||
name = CharField(max_length=128)
|
||||
text = TextField()
|
||||
stars = PositiveIntegerField(
|
||||
validators=[
|
||||
MaxValueValidator(5),
|
||||
MinValueValidator(1)
|
||||
])
|
||||
language = CharField(max_length=12, choices=settings.LANGUAGES)
|
||||
public = BooleanField(default=False)
|
27
frontend/templatetags/mapimage.py
Normal file
27
frontend/templatetags/mapimage.py
Normal file
|
@ -0,0 +1,27 @@
|
|||
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': location,
|
||||
'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
|
||||
|
||||
@register.simple_tag
|
||||
def mapimage_coords(lat, lon, zoom=8, width=348, height=250):
|
||||
return mapimage("%s,%s" % (str(lat), str(lon)), zoom, width, height)
|
|
@ -12,7 +12,7 @@ def stars(number):
|
|||
output = '<div class="rating">'
|
||||
|
||||
for i in range(5):
|
||||
output += '<span><i class="fa fa-star%s></i></span>' % ("" if i < number else "-o")
|
||||
output += '<span><i class="fa%s fa-star"></i></span>' % ("" if i < number else "r")
|
||||
|
||||
output += "</div><!-- end rating -->"
|
||||
|
|
@ -5,7 +5,7 @@ from random import SystemRandom
|
|||
register = template.Library()
|
||||
|
||||
@register.simple_tag
|
||||
def testimonials(count=5):
|
||||
objects = list(Testimonial.objects.all()) # pylint: disable=no-member
|
||||
def testimonials(count=5, language="de"):
|
||||
objects = list(Testimonial.objects.filter(language=language)) # pylint: disable=no-member
|
||||
SystemRandom().shuffle(objects)
|
||||
return objects[:min(count, len(objects))]
|
|
@ -1,4 +1,4 @@
|
|||
from django.shortcuts import redirect
|
||||
from django.shortcuts import redirect, render_to_response
|
||||
from django.utils.translation import LANGUAGE_SESSION_KEY
|
||||
|
||||
from django.views.generic import TemplateView
|
||||
|
@ -15,3 +15,14 @@ def change_language(request):
|
|||
raise ValueError("This is not a de-referer.")
|
||||
request.session[LANGUAGE_SESSION_KEY] = language
|
||||
return redirect(url)
|
||||
|
||||
def errorhandler(request, exception, status):
|
||||
response = render_to_response("frontend/error.html", {"status_code": status})
|
||||
response.status_code = status
|
||||
return response
|
||||
|
||||
def handler404(request, exception):
|
||||
return errorhandler(request, exception, 404)
|
||||
|
||||
def handler500(request):
|
||||
return errorhandler(request, None, 500)
|
|
@ -1,7 +1,8 @@
|
|||
# Generated by Django 2.2.6 on 2020-01-21 18:19
|
||||
# Generated by Django 2.2.6 on 2020-01-25 14:41
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import uuid
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
@ -9,7 +10,6 @@ class Migration(migrations.Migration):
|
|||
initial = True
|
||||
|
||||
dependencies = [
|
||||
('auction', '0001_initial'),
|
||||
('contenttypes', '0002_remove_content_type_name'),
|
||||
]
|
||||
|
||||
|
@ -17,8 +17,9 @@ class Migration(migrations.Migration):
|
|||
migrations.CreateModel(
|
||||
name='Payment',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('inquiry', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='auction.Inquiry')),
|
||||
('uuid', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)),
|
||||
('object_id', models.CharField(max_length=255)),
|
||||
('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType')),
|
||||
('polymorphic_ctype', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_payment.payment_set+', to='contenttypes.ContentType')),
|
||||
],
|
||||
options={
|
||||
|
@ -26,6 +27,17 @@ class Migration(migrations.Migration):
|
|||
'base_manager_name': 'objects',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='DummyPayment',
|
||||
fields=[
|
||||
('payment_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='payment.Payment')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
'base_manager_name': 'objects',
|
||||
},
|
||||
bases=('payment.payment',),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='KlarnaPayment',
|
||||
fields=[
|
||||
|
@ -52,6 +64,7 @@ class Migration(migrations.Migration):
|
|||
name='StripePayment',
|
||||
fields=[
|
||||
('payment_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='payment.Payment')),
|
||||
('session', models.CharField(blank=True, max_length=255, null=True)),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
|
|
|
@ -1,25 +0,0 @@
|
|||
# Generated by Django 2.2.6 on 2020-01-22 10:26
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('payment', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='DummyPayment',
|
||||
fields=[
|
||||
('payment_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='payment.Payment')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
'base_manager_name': 'objects',
|
||||
},
|
||||
bases=('payment.payment',),
|
||||
),
|
||||
]
|
|
@ -1,27 +0,0 @@
|
|||
# Generated by Django 2.2.6 on 2020-01-22 12:08
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('contenttypes', '0002_remove_content_type_name'),
|
||||
('payment', '0002_dummypayment'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='payment',
|
||||
name='content_type',
|
||||
field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType'),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='payment',
|
||||
name='object_id',
|
||||
field=models.UUIDField(default=None),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
|
@ -1,17 +0,0 @@
|
|||
# Generated by Django 2.2.6 on 2020-01-22 12:09
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('payment', '0003_auto_20200122_1308'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='payment',
|
||||
name='inquiry',
|
||||
),
|
||||
]
|
|
@ -1,18 +0,0 @@
|
|||
# Generated by Django 2.2.6 on 2020-01-22 12:10
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('payment', '0004_remove_payment_inquiry'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='payment',
|
||||
name='object_id',
|
||||
field=models.CharField(max_length=255),
|
||||
),
|
||||
]
|
|
@ -1,8 +1,15 @@
|
|||
from django.db.models import Model, ForeignKey, DecimalField, CharField, CASCADE
|
||||
from django.db.models import Model, ForeignKey, DecimalField, CharField, DecimalField, UUIDField, CASCADE
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.contrib.contenttypes.fields import GenericForeignKey
|
||||
from django.conf import settings
|
||||
from django.shortcuts import redirect
|
||||
from django.urls import reverse_lazy
|
||||
|
||||
from polymorphic.models import PolymorphicModel
|
||||
from dbsettings.models import Setting
|
||||
|
||||
import stripe
|
||||
import uuid
|
||||
|
||||
from auction.models import Inquiry
|
||||
|
||||
|
@ -12,23 +19,75 @@ PAYMENT_STATUS_PENDING = 1
|
|||
PAYMENT_STATUS_FAILURE = 2
|
||||
PAYMENT_STATUS_REFUND = 3
|
||||
|
||||
stripe.api_key = Setting.objects.get(key="stripe.key.secret").value # pylint: disable=no-member
|
||||
|
||||
class Payment(PolymorphicModel):
|
||||
uuid = UUIDField(default=uuid.uuid4, primary_key=True)
|
||||
content_type = ForeignKey(ContentType, on_delete=CASCADE)
|
||||
object_id = CharField(max_length=255)
|
||||
invoice = GenericForeignKey()
|
||||
|
||||
def start(self):
|
||||
raise NotImplementedError("start() not implemented in %s!" % type(self).__name__)
|
||||
|
||||
def status(self):
|
||||
raise NotImplementedError("status() not implemented in %s!" % type(self).__name__)
|
||||
|
||||
def capture(self):
|
||||
return self.status()
|
||||
|
||||
def cancel(self):
|
||||
invoice = self.invoice
|
||||
self.delete()
|
||||
return redirect(invoice.get_absolute_url() + "?status=cancelled")
|
||||
|
||||
class PaypalPayment(Payment):
|
||||
pass
|
||||
|
||||
class StripePayment(Payment):
|
||||
pass
|
||||
session = CharField(max_length=255, blank=True, null=True)
|
||||
session_status = CharField(max_length=255, blank=True, null=True)
|
||||
|
||||
def start(self):
|
||||
self.session = stripe.checkout.Session.create(
|
||||
customer_email=self.invoice.user.user.email,
|
||||
payment_method_types=['card'],
|
||||
line_items=[{
|
||||
'name': 'Urlaubsauktion',
|
||||
'description': 'Einzahlung',
|
||||
'amount': int(self.invoice.amount * 100),
|
||||
'currency': self.invoice.currency,
|
||||
'quantity': 1,
|
||||
}],
|
||||
success_url='http://localhost:8000/payment/success?gateway=stripe&session_id={CHECKOUT_SESSION_ID}',
|
||||
cancel_url='https://localhost:8000/payment/failure?gateway=stripe&session_id={CHECKOUT_SESSION_ID}',
|
||||
payment_intent_data= {"capture_method": "manual", },
|
||||
).id
|
||||
self.save()
|
||||
return redirect(reverse_lazy("payment:redirect_stripe", args=[self.uuid]))
|
||||
|
||||
def capture(self):
|
||||
session = stripe.checkout.Session.retrieve(self.session)
|
||||
payment_intent = session.payment_intent
|
||||
capture = stripe.PaymentIntent.capture(payment_intent)
|
||||
return PAYMENT_STATUS_SUCCESS if capture.status == "succeeded" else PAYMENT_STATUS_FAILURE
|
||||
|
||||
def status(self):
|
||||
session = stripe.checkout.Session.retrieve(self.session)
|
||||
payment_intent = stripe.PaymentIntent.retrieve(session.payment_intent)
|
||||
if payment_intent.status == "processing":
|
||||
return PAYMENT_STATUS_PENDING
|
||||
elif payment_intent.status == "succeeded":
|
||||
return PAYMENT_STATUS_SUCCESS
|
||||
return PAYMENT_STATUS_FAILURE
|
||||
|
||||
|
||||
class KlarnaPayment(Payment):
|
||||
pass
|
||||
|
||||
class DummyPayment(Payment):
|
||||
def start(self):
|
||||
return redirect(reverse_lazy("payment:status"))
|
||||
|
||||
def status(self):
|
||||
return PAYMENT_STATUS_SUCCESS
|
||||
|
|
11
payment/urls.py
Normal file
11
payment/urls.py
Normal file
|
@ -0,0 +1,11 @@
|
|||
from django.urls import path
|
||||
|
||||
from payment.views import StatusView, StripeRedirectView, StripeRedirectJSView
|
||||
|
||||
app_name = "payment"
|
||||
|
||||
urlpatterns = [
|
||||
path('<uuid:pk>/status/', StatusView.as_view(), name="status"),
|
||||
path('<uuid:pk>/redirect_stripe/', StripeRedirectView.as_view(), name="redirect_stripe"),
|
||||
path('<uuid:pk>/redirect_stripe/redirect.js', StripeRedirectJSView.as_view(), name="redirect_stripe_js")
|
||||
]
|
|
@ -1,3 +1,53 @@
|
|||
from django.shortcuts import render
|
||||
from django.views.generic import DetailView, TemplateView
|
||||
from django.http import HttpResponse
|
||||
from django.views.decorators.csrf import csrf_exempt
|
||||
|
||||
from payment.models import Payment
|
||||
from dbsettings.models import Setting
|
||||
|
||||
import stripe
|
||||
|
||||
# Create your views here.
|
||||
|
||||
|
||||
class StatusView(DetailView):
|
||||
model = Payment
|
||||
template_name = "payment/status.html"
|
||||
|
||||
|
||||
class StripeRedirectView(TemplateView):
|
||||
template_name = "payment/redirect.html"
|
||||
|
||||
|
||||
class StripeRedirectJSView(DetailView):
|
||||
model = Payment
|
||||
template_name = "payment/redirect_stripe.js"
|
||||
|
||||
|
||||
@csrf_exempt
|
||||
def stripe_webhook(request):
|
||||
endpoint_secret = Setting.objects.get(key="stripe.webhook.secret").value # pylint: disable=no-member
|
||||
payload = request.body
|
||||
sig_header = request.META['HTTP_STRIPE_SIGNATURE']
|
||||
event = None
|
||||
|
||||
try:
|
||||
event = stripe.Webhook.construct_event(
|
||||
payload, sig_header, endpoint_secret
|
||||
)
|
||||
except ValueError:
|
||||
# Invalid payload
|
||||
return HttpResponse(status=400)
|
||||
except stripe.error.SignatureVerificationError:
|
||||
# Invalid signature
|
||||
return HttpResponse(status=400)
|
||||
|
||||
# Handle the checkout.session.completed event
|
||||
if event['type'] == 'checkout.session.completed':
|
||||
session = event['data']['object']
|
||||
payment = Payment.objects.get(session=session["id"])
|
||||
payment.session_status = event["type"]
|
||||
|
||||
|
||||
return HttpResponse(status=200)
|
||||
|
|
23
profiles/migrations/0002_auto_20200124_1150.py
Normal file
23
profiles/migrations/0002_auto_20200124_1150.py
Normal file
|
@ -0,0 +1,23 @@
|
|||
# Generated by Django 2.2.6 on 2020-01-24 10:50
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('profiles', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='clientprofile',
|
||||
name='picture',
|
||||
field=models.ImageField(blank=True, null=True, upload_to=''),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='partnerprofile',
|
||||
name='logo',
|
||||
field=models.ImageField(blank=True, null=True, upload_to=''),
|
||||
),
|
||||
]
|
30
profiles/migrations/0003_auto_20200125_1023.py
Normal file
30
profiles/migrations/0003_auto_20200125_1023.py
Normal file
|
@ -0,0 +1,30 @@
|
|||
# Generated by Django 2.2.6 on 2020-01-25 09:23
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('profiles', '0002_auto_20200124_1150'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='ContactProfile',
|
||||
fields=[
|
||||
('profile_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='profiles.Profile')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
'base_manager_name': 'objects',
|
||||
},
|
||||
bases=('profiles.profile',),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='profile',
|
||||
name='country',
|
||||
field=models.CharField(max_length=128),
|
||||
),
|
||||
]
|
19
profiles/migrations/0004_contactprofile_email.py
Normal file
19
profiles/migrations/0004_contactprofile_email.py
Normal file
|
@ -0,0 +1,19 @@
|
|||
# Generated by Django 2.2.6 on 2020-01-25 09:29
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('profiles', '0003_auto_20200125_1023'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='contactprofile',
|
||||
name='email',
|
||||
field=models.EmailField(default=None, max_length=254),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
33
profiles/migrations/0005_auto_20200125_1134.py
Normal file
33
profiles/migrations/0005_auto_20200125_1134.py
Normal file
|
@ -0,0 +1,33 @@
|
|||
# Generated by Django 2.2.6 on 2020-01-25 10:34
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
from django.contrib.auth.models import User
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('profiles', '0004_contactprofile_email'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='profile',
|
||||
name='user',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='clientprofile',
|
||||
name='creator',
|
||||
field=models.OneToOneField(default=User.objects.all()[0].id, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='partnerprofile',
|
||||
name='creator',
|
||||
field=models.OneToOneField(default=User.objects.all()[0].id, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
23
profiles/migrations/0006_auto_20200125_1216.py
Normal file
23
profiles/migrations/0006_auto_20200125_1216.py
Normal file
|
@ -0,0 +1,23 @@
|
|||
# Generated by Django 2.2.6 on 2020-01-25 11:16
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('profiles', '0005_auto_20200125_1134'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RenameField(
|
||||
model_name='clientprofile',
|
||||
old_name='creator',
|
||||
new_name='user',
|
||||
),
|
||||
migrations.RenameField(
|
||||
model_name='partnerprofile',
|
||||
old_name='creator',
|
||||
new_name='user',
|
||||
),
|
||||
]
|
22
profiles/migrations/0007_contactprofile_user.py
Normal file
22
profiles/migrations/0007_contactprofile_user.py
Normal file
|
@ -0,0 +1,22 @@
|
|||
# Generated by Django 2.2.6 on 2020-01-25 13:17
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('profiles', '0006_auto_20200125_1216'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='contactprofile',
|
||||
name='user',
|
||||
field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
|
@ -1,4 +1,4 @@
|
|||
from django.db.models import Model, CharField, ForeignKey, DecimalField, OneToOneField, BooleanField, CASCADE
|
||||
from django.db.models import Model, EmailField, CharField, ForeignKey, DecimalField, OneToOneField, BooleanField, ImageField, CASCADE
|
||||
from django.contrib.auth.models import User
|
||||
from django.db.models.signals import post_save
|
||||
from django.dispatch import receiver
|
||||
|
@ -9,26 +9,25 @@ from phonenumber_field.modelfields import PhoneNumberField
|
|||
from vies.models import VATINField
|
||||
|
||||
class Profile(PolymorphicModel):
|
||||
user = OneToOneField(User, on_delete=CASCADE)
|
||||
first_name = CharField(max_length=128)
|
||||
last_name = CharField(max_length=128)
|
||||
address = CharField(max_length=128)
|
||||
address2 = CharField(max_length=128, blank=True, null=True)
|
||||
zipcode = CharField(max_length=15)
|
||||
city = CharField(max_length=128)
|
||||
country = CountryField()
|
||||
country = CharField(max_length=128)
|
||||
phone = PhoneNumberField()
|
||||
|
||||
class ClientProfile(Profile):
|
||||
pass
|
||||
user = OneToOneField(User, on_delete=CASCADE)
|
||||
picture = ImageField(null=True, blank=True)
|
||||
|
||||
class PartnerProfile(Profile):
|
||||
user = OneToOneField(User, on_delete=CASCADE)
|
||||
company = CharField(max_length=128, blank=True, null=True)
|
||||
vatid = VATINField(blank=True, null=True)
|
||||
logo = ImageField(null=True, blank=True)
|
||||
|
||||
def create_client_profile(user):
|
||||
ClientProfile.objects.create(user=user)
|
||||
|
||||
def create_partner_profile(user):
|
||||
PartnerProfile.objects.create(user=user)
|
||||
|
||||
class ContactProfile(Profile):
|
||||
user = ForeignKey(User, on_delete=CASCADE)
|
||||
email = EmailField()
|
|
@ -6,15 +6,16 @@ from django.shortcuts import redirect
|
|||
class RegistrationView(FormView):
|
||||
template_name = 'profiles/register.html'
|
||||
form_class = UserCreationForm
|
||||
success_url = '/?registered=true'
|
||||
success_url = "/"
|
||||
|
||||
def form_valid(self, form):
|
||||
res = super().form_valid(form)
|
||||
super().form_valid(form)
|
||||
username = form.cleaned_data.get('username')
|
||||
password = form.cleaned_data.get('password1')
|
||||
user = authenticate(username=username, password=password)
|
||||
login(self.request, user)
|
||||
return res
|
||||
|
||||
return redirect(self.request.GET.get("next", "/") + "?registered=true")
|
||||
|
||||
class LoginView(FormView):
|
||||
template_name = 'profiles/register.html'
|
||||
|
@ -22,12 +23,13 @@ class LoginView(FormView):
|
|||
success_url = "/"
|
||||
|
||||
def form_valid(self, form):
|
||||
res = super().form_valid(form)
|
||||
super().form_valid(form)
|
||||
username = form.cleaned_data.get('username')
|
||||
password = form.cleaned_data.get('password')
|
||||
user = authenticate(username=username, password=password)
|
||||
login(self.request, user)
|
||||
return res
|
||||
|
||||
return redirect(self.request.GET.get("next", "/"))
|
||||
|
||||
def user_logout(request):
|
||||
logout(request)
|
||||
|
|
|
@ -10,3 +10,5 @@ mysqlclient
|
|||
django-cookie-law
|
||||
django-bootstrap-form
|
||||
django-multiselectfield
|
||||
geopy
|
||||
stripe
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
var input = document.getElementById('destination');
|
||||
var input = document.getElementById('id_destination_name');
|
||||
var options = {
|
||||
types: ['(cities)'],
|
||||
componentRestrictions: {country: 'at'},
|
||||
|
@ -12,7 +12,7 @@ autocomplete.addListener('place_changed', fillInAddress);
|
|||
function fillInAddress() {
|
||||
// Get the place details from the autocomplete object.
|
||||
var place = autocomplete.getPlace();
|
||||
|
||||
alert(place.geometry.location.lat());
|
||||
$("#id_destination_lat").val(place.geometry.location.lat);
|
||||
$("#id_destination_lon").val(place.geometry.location.lon);
|
||||
}
|
||||
|
11
static/frontend/js/custom-checkout.js
Normal file
11
static/frontend/js/custom-checkout.js
Normal file
|
@ -0,0 +1,11 @@
|
|||
$(document).ready(function(){
|
||||
if($('#login-tabs').length){
|
||||
$("#frm_booking :input").prop("disabled", true);
|
||||
$('#login-tabs :input').prop("disabled", false);
|
||||
} else {
|
||||
$("#id_gateway").val("credit-card");
|
||||
$("#payment-tabs ul.nav.nav-tabs li.nav-item").click(function(event) {
|
||||
$("#id_gateway").val(event.target.href.slice(event.target.href.indexOf("#tab-") + "#-tab".length));
|
||||
});
|
||||
};
|
||||
});
|
|
@ -13,6 +13,7 @@
|
|||
var now = new Date(nowTemp.getFullYear(), nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0);
|
||||
|
||||
var checkin = date1.datepicker({
|
||||
format: 'dd.mm.yyyy',
|
||||
onRender: function(date) {
|
||||
return date.valueOf() < now.valueOf() ? 'disabled' : '';
|
||||
}
|
||||
|
@ -29,6 +30,7 @@
|
|||
}).data('datepicker');
|
||||
|
||||
var checkout = date2.datepicker({
|
||||
format: 'dd.mm.yyyy',
|
||||
onRender: function(date) {
|
||||
return date.valueOf() <= checkin.date.valueOf() ? 'disabled' : '';
|
||||
}
|
||||
|
@ -38,7 +40,7 @@
|
|||
}).data('datepicker');
|
||||
|
||||
date3.datepicker({
|
||||
format: 'mm-dd-yyyy'
|
||||
format: 'dd.mm.yyyy'
|
||||
});
|
||||
|
||||
})(jQuery);
|
|
@ -1,6 +1,8 @@
|
|||
{% extends "frontend/base.html" %}
|
||||
{% load i18n %}
|
||||
{% load static %}
|
||||
{% load mapimage %}
|
||||
{% load dbsetting %}
|
||||
{% block "content" %}
|
||||
<!--================== PAGE-COVER ================-->
|
||||
<section class="page-cover" id="cover-hotel-booking">
|
||||
|
@ -22,6 +24,14 @@
|
|||
<section class="innerpage-wrapper">
|
||||
<div id="flight-booking" class="innerpage-section-padding">
|
||||
<div class="container">
|
||||
{% if messages %}
|
||||
{% for message in messages %}
|
||||
<div class="alert alert-{{ message.tags }} alert-dismissible text-center" role="alert">
|
||||
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||
{{ message }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-12 col-lg-5 col-xl-4 side-bar left-side-bar">
|
||||
<div class="row">
|
||||
|
@ -29,13 +39,13 @@
|
|||
<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">
|
||||
<a href="#"><img src="{% static "frontend/images/hotel-grid-1.jpg" %}" class="img-fluid" alt="detail-img"/></a>
|
||||
<img src="{% mapimage_coords object.destination_geo.y object.destination_geo.x %}" class="img-fluid" alt="detail-img"/>
|
||||
<div class="detail-title">
|
||||
<h4><a href="#">{{ obj.destination.name }}</a></h4>
|
||||
<h4><a href="#">{{ object.destination_name }}</a></h4>
|
||||
<p></p>
|
||||
</div><!-- end detail-title -->
|
||||
|
||||
<span class="detail-price"><h4>€ {{ obj.amount }} <span></h4></span>
|
||||
<span class="detail-price"><h4>€ {{ object.amount }} <span></h4></span>
|
||||
</div><!-- end detail-img -->
|
||||
|
||||
<div class="table-responsive">
|
||||
|
@ -43,23 +53,23 @@
|
|||
<tbody>
|
||||
<tr>
|
||||
<td>{% trans "Ankunft ab" %}</td>
|
||||
<td>{{ obj.first_date|date:"SHORT_DATE_FORMAT" }}</td>
|
||||
<td>{{ object.first_date|date:"SHORT_DATE_FORMAT" }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{% trans "Abreise bis" %}</td>
|
||||
<td>{{ obj.last_date|date:"SHORT_DATE_FORMAT" }}</td>
|
||||
<td>{{ object.last_date|date:"SHORT_DATE_FORMAT" }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{% trans "Erwachsene" %}</td>
|
||||
<td>{{ obj.adults }}</td>
|
||||
<td>{{ object.adults }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{% trans "Kinder" %}</td>
|
||||
<td>{{ obj.children }}</td>
|
||||
<td>{{ object.children }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{% trans "Gebotener Betrag" %}</td>
|
||||
<td>€ {{ obj.amount }}</td>
|
||||
<td>€ {{ object.amount }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -84,95 +94,40 @@
|
|||
|
||||
|
||||
<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">
|
||||
<form class="lg-booking-form" id="frm_booking" name="frm_booking" method="post" action="{% url "auction:post_payment" object.uuid %}">
|
||||
{% csrf_token %}
|
||||
{% if not request.user.is_authenticated %}
|
||||
<div class="lg-booking-form-heading">
|
||||
<span>1</span>
|
||||
<h3>Personal Information</h3>
|
||||
<span>0</span>
|
||||
<h3>{% trans "Login" %}</h3>
|
||||
</div><!-- end lg-bform-heading -->
|
||||
|
||||
<div class="personal-info">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-6 col-md-6">
|
||||
<div class="form-group">
|
||||
<label>First Name</label>
|
||||
<input type="text" class="form-control" id="txt_name" name="txt_name"/>
|
||||
</div>
|
||||
</div><!-- end columns -->
|
||||
|
||||
<div class="col-6 col-md-6">
|
||||
<div class="form-group">
|
||||
<label>Last Name</label>
|
||||
<input type="text" class="form-control" id="txt_last_name" name="txt_last_name"/>
|
||||
</div>
|
||||
</div><!-- end columns -->
|
||||
</div><!-- end row -->
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label>Date of Birth</label>
|
||||
<input type="text" class="form-control dpd3" id="txt_dob" name="txt_dob"/>
|
||||
</div>
|
||||
</div><!-- end columns -->
|
||||
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label>Country</label>
|
||||
<input type="text" class="form-control" id="txt_country" name="txt_country"/>
|
||||
</div>
|
||||
</div><!-- end columns -->
|
||||
</div><!-- end row -->
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label>Email Address</label>
|
||||
<input type="email" class="form-control" id="txt_email" name="txt_email"/>
|
||||
</div>
|
||||
</div><!-- end columns -->
|
||||
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label>Phone Number</label>
|
||||
<input type="text" class="form-control" id="txt_phone" name="txt_phone"/>
|
||||
</div>
|
||||
</div><!-- end columns -->
|
||||
</div><!-- end row -->
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label>Permanent Address</label>
|
||||
<textarea type="text" class="form-control" rows="2" id="txt_address" name="txt_address"/></textarea>
|
||||
</div>
|
||||
</div><!-- end columns -->
|
||||
</div>
|
||||
</div><!-- end personal-info -->
|
||||
|
||||
<div class="lg-booking-form-heading">
|
||||
<span>2</span>
|
||||
<h3>Payment Information</h3>
|
||||
</div><!-- end lg-bform-heading -->
|
||||
|
||||
<div class="payment-tabs">
|
||||
<p>{% trans "Um fortzufahren, loggen Sie sich bitte in Ihren Account ein." %}</p>
|
||||
<div id="login-tabs" class="payment-tabs">
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="nav-item active"><a class="nav-link" href="#tab-credit-card" data-toggle="tab"> Via Credit Card</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="#tab-paypal" data-toggle="tab">Via Paypal</a></li>
|
||||
<li class="nav-item active"><a class="nav-link" href="#tab-login" data-toggle="tab">{% trans "Login" %}</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="#tab-register" data-toggle="tab">{% trans "Registrieren" %}</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="tab-content">
|
||||
<div id="tab-credit-card" class="tab-pane in active">
|
||||
<img src="{% static "frontend/images/stripe.png" %}" class="img-fluid" alt="stripe" />
|
||||
<div class="paypal-text">
|
||||
<p>{% trans "Die Zahlung per Kreditkarte wird durch unseren Zahlungsdienstleister Stripe abgewickelt." %}</p>
|
||||
<a href="#" class="btn btn-default btn-lightgrey">{% trans "Per Kreditkarte bezahlen" %}<span><i class="fa fa-angle-double-right"></i></span></a>
|
||||
</div><!-- end paypal-text -->
|
||||
|
||||
<div class="clearfix"></div>
|
||||
</div><!-- end tab-credit-card -->
|
||||
<div id="tab-login" class="tab-pane in active">
|
||||
<div class="form-group">
|
||||
<label class="control-label " for="id_username">{% trans "Benutzername" %}</label>
|
||||
<div class=" ">
|
||||
<input type="text" name="username" autofocus class=" form-control" required id="id_username">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label " for="id_password">{% trans "Passwort" %}</label>
|
||||
<div class=" ">
|
||||
<input type="password" name="password" class=" form-control" required 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>
|
||||
|
||||
<div id="tab-paypal" class="tab-pane">
|
||||
<div class="clearfix" style="height: 50px;"></div>
|
||||
</div><!-- end tab-login -->
|
||||
|
||||
<div id="tab-register" class="tab-pane">
|
||||
<img src="{% static "frontend/images/paypal.png" %}" class="img-fluid" alt="paypal" />
|
||||
<div class="paypal-text">
|
||||
<p>{% trans "Zur Zahlung per PayPal erfolgt eine Weiterleitung auf deren Server." %}</p>
|
||||
|
@ -182,11 +137,126 @@
|
|||
<div class="clearfix"></div>
|
||||
</div><!-- end tab-paypal -->
|
||||
|
||||
</div><!-- end tab-content -->
|
||||
</div><!-- end auth-tabs -->
|
||||
{% endif %}
|
||||
<div class="lg-booking-form-heading">
|
||||
<span>1</span>
|
||||
<h3>{% trans "Kundendaten" %}</h3>
|
||||
</div><!-- end lg-bform-heading -->
|
||||
|
||||
<div class="personal-info">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-6 col-md-6">
|
||||
<div class="form-group">
|
||||
<label>{% trans "Vorname" %}</label>
|
||||
<input type="text" class="form-control" id="id_first_name" name="first_name" required value="{{ request.user.clientprofile.first_name }}"/>
|
||||
</div>
|
||||
</div><!-- end columns -->
|
||||
|
||||
<div class="col-6 col-md-6">
|
||||
<div class="form-group">
|
||||
<label>{% trans "Nachname" %}</label>
|
||||
<input type="text" class="form-control" id="id_last_name" name="last_name" required value="{{ request.user.clientprofile.last_name }}"/>
|
||||
</div>
|
||||
</div><!-- end columns -->
|
||||
</div><!-- end row -->
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label>{% trans "Straße" %}</label>
|
||||
<input type="text" class="form-control" id="id_address" name="address" required 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.clientprofile.address2 %}value="{{ request.user.clientprofile.address2 }}"{% endif %}/>
|
||||
</div>
|
||||
</div><!-- end columns -->
|
||||
</div><!-- end row -->
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label>{% trans "PLZ" %}</label>
|
||||
<input type="text" class="form-control" id="id_zipcode" name="zipcode" required value="{{ request.user.clientprofile.zipcode }}"/>
|
||||
</div>
|
||||
</div><!-- end columns -->
|
||||
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label>{% trans "Ort" %}</label>
|
||||
<input type="text" class="form-control" id="id_city" name="city" required value="{{ request.user.clientprofile.city }}"/>
|
||||
</div>
|
||||
</div><!-- end columns -->
|
||||
</div><!-- end row -->
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label>{% trans "Staat" %}</label>
|
||||
<input type="text" class="form-control" id="id_country" name="country" required value="{{ request.user.clientprofile.country }}"/>
|
||||
</div>
|
||||
</div><!-- end columns -->
|
||||
</div><!-- end row -->
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label>{% trans "E-Mail-Adresse" %}</label>
|
||||
<input type="email" class="form-control" id="id_email" name="email" required value="{{ request.user.email }}"/>
|
||||
</div>
|
||||
</div><!-- end columns -->
|
||||
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label>{% trans "Telefonnummer" %}</label>
|
||||
<input type="text" class="form-control" id="id_phone" name="phone" required value="{{ request.user.clientprofile.phone }}" />
|
||||
</div>
|
||||
</div><!-- end columns -->
|
||||
</div><!-- end row -->
|
||||
|
||||
</div><!-- end personal-info -->
|
||||
|
||||
<div class="lg-booking-form-heading">
|
||||
<span>2</span>
|
||||
<h3>{% trans "Zahlungsdaten" %}</h3>
|
||||
</div><!-- end lg-bform-heading -->
|
||||
<input type="hidden" name="gateway" id="id_gateway" required />
|
||||
<div id="payment-tabs" class="payment-tabs">
|
||||
<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>
|
||||
</ul>
|
||||
|
||||
<div class="tab-content">
|
||||
<div id="tab-credit-card" class="tab-pane in active">
|
||||
<img src="{% static "frontend/images/paypal.png" %}" class="img-fluid" alt="stripe" />
|
||||
<div class="paypal-text">
|
||||
<p>{% trans "Die Zahlung per Kreditkarte wird durch unseren Zahlungsdienstleister Stripe abgewickelt." %}</p>
|
||||
</div><!-- end paypal-text -->
|
||||
|
||||
<div class="clearfix"></div>
|
||||
</div><!-- end tab-credit-card -->
|
||||
|
||||
<div id="tab-paypal" class="tab-pane">
|
||||
<img src="{% static "frontend/images/paypal.png" %}" class="img-fluid" alt="paypal" />
|
||||
<div class="paypal-text">
|
||||
<p>{% trans "Zur Zahlung per PayPal erfolgt eine Weiterleitung auf deren Server." %}</p>
|
||||
</div><!-- end paypal-text -->
|
||||
|
||||
<div class="clearfix"></div>
|
||||
</div><!-- end tab-paypal -->
|
||||
|
||||
</div><!-- end tab-content -->
|
||||
</div><!-- end payment-tabs -->
|
||||
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" id="chk_agree" name="chk_agree"> {% trans "Ich erkläre mich einverstanden mit den" %} <a href="#">{% trans "Allgemeinen Geschäftsbedingungen" %}</a>.</label>
|
||||
<label><input type="checkbox" required id="chk_agree" name="chk_agree"> {% trans "Ich erkläre mich einverstanden mit den" %} <a href="#">{% trans "Allgemeinen Geschäftsbedingungen" %}</a>.</label>
|
||||
</div><!-- end checkbox -->
|
||||
<div class="col-md-12 text-center" id="result_msg"></div>
|
||||
<button type="submit" class="btn btn-orange" name="submit" id="submit">{% trans "Zahlung durchführen" %}</button>
|
||||
|
@ -198,4 +268,7 @@
|
|||
</div><!-- end container -->
|
||||
</div><!-- end flight-booking -->
|
||||
</section><!-- end innerpage-wrapper -->
|
||||
{% endblock %}
|
||||
{% block "scripts" %}
|
||||
<script src="{% static "frontend/js/custom-checkout.js" %}"></script>
|
||||
{% endblock %}
|
|
@ -1,4 +1,535 @@
|
|||
{% include "frontend/header.html" %}
|
||||
{% load static %}
|
||||
{% load i18n %}
|
||||
{% load dbsetting %}
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Urlaubsauktion - {{ title }}</title>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<link rel="icon" href="{% static "frontend/images/favicon.png" %}" type="image/x-icon">
|
||||
|
||||
<!-- Google Fonts -->
|
||||
<link href="https://fonts.googleapis.com/css?family=Lato:300,300i,400,400i,700,700i,900,900i%7CMerriweather:300,300i,400,400i,700,700i,900,900i" rel="stylesheet">
|
||||
|
||||
<!-- Bootstrap Stylesheet -->
|
||||
<link rel="stylesheet" href="{% static "frontend/css/bootstrap.min4.2.1.css" %}">
|
||||
<link rel="stylesheet" type="text/css" href="{% static "frontend/css/bootstrap-reboot4.2.1.css" %}">
|
||||
|
||||
<!-- Sidebar Stylesheet -->
|
||||
<link rel="stylesheet" type="text/css" href="{% static "frontend/css/jquery.mCustomScrollbar.min.css" %}">
|
||||
|
||||
<!-- Font Awesome Stylesheet -->
|
||||
<link rel="stylesheet" href="{% static "frontend/fontawesome/css/all.css" %}">
|
||||
|
||||
<!-- Custom Stylesheets -->
|
||||
<link rel="stylesheet" href="{% static "frontend/css/style.css" %}">
|
||||
<link rel="stylesheet" id="cpswitch" href="{% static "frontend/css/orange.css" %}">
|
||||
<link rel="stylesheet" href="{% static "frontend/css/responsive.css" %}">
|
||||
|
||||
<!-- Owl Carousel Stylesheet -->
|
||||
<link rel="stylesheet" href="{% static "frontend/css/owl.carousel.css" %}">
|
||||
<link rel="stylesheet" href="{% static "frontend/css/owl.theme.css" %}">
|
||||
|
||||
<!-- Flex Slider Stylesheet -->
|
||||
<link rel="stylesheet" href="{% static "frontend/css/flexslider.css" %}" type="text/css" />
|
||||
|
||||
<!--Date-Picker Stylesheet-->
|
||||
<link rel="stylesheet" href="{% static "frontend/css/datepicker.css" %}">
|
||||
|
||||
<!-- Magnific Gallery -->
|
||||
<link rel="stylesheet" href="{% static "frontend/css/magnific-popup.css" %}">
|
||||
|
||||
</head>
|
||||
|
||||
|
||||
<body id="main-homepage">
|
||||
|
||||
<div class="wrapper">
|
||||
<!--====== LOADER =====-->
|
||||
<div class="loader"></div>
|
||||
|
||||
|
||||
<!--======== SEARCH-OVERLAY =========-->
|
||||
<div id="myOverlay" class="overlay">
|
||||
<span class="closebtn" onClick="closeSearch()" title="Close Overlay">×</span>
|
||||
<div class="overlay-content">
|
||||
|
||||
<form>
|
||||
<div class="form-group">
|
||||
<div class="input-group">
|
||||
<input class="float-left" type="text" placeholder="Search.." name="search">
|
||||
<button class="float-left" type="submit"><i class="fa fa-search"></i></button>
|
||||
</div><!-- end input-group -->
|
||||
</div><!-- end form-group -->
|
||||
</form>
|
||||
|
||||
</div><!-- end overlay-content -->
|
||||
</div><!-- end overlay -->
|
||||
|
||||
|
||||
<!--============= TOP-BAR ===========-->
|
||||
<div id="top-bar" class="tb-text-white">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6">
|
||||
<div id="info">
|
||||
<ul class="list-unstyled list-inline">
|
||||
<li class="list-inline-item"><span><i class="fa fa-map-marker"></i></span>Kumi Systems e.U., Sternäckerweg 51a/2, 8041 Graz</li>
|
||||
<li class="list-inline-item"><span><i class="fa fa-phone"></i></span>+43 800 093004</li>
|
||||
</ul>
|
||||
</div><!-- end info -->
|
||||
</div><!-- end columns -->
|
||||
<div class="col-12 col-md-6">
|
||||
<div id="links">
|
||||
<ul class="list-unstyled list-inline">
|
||||
{% if request.user.is_authenticated %}
|
||||
<li class="list-inline-item">{% trans "Eingeloggt als:" %} {{ request.user.username }}</li>
|
||||
<li class="list-inline-item"><a href="{% url "profiles:logout" %}"><span><i class="fa fa-lock"></i></span>{% trans "Logout" %}</a></li>
|
||||
{% else %}
|
||||
<li class="list-inline-item"><a href="{% url "profiles:login" %}?next={{ request.path }}"><span><i class="fa fa-lock"></i></span>{% trans "Login" %}</a></li>
|
||||
<li class="list-inline-item"><a href="{% url "profiles:register" %}?next={{ request.path }}"><span><i class="fa fa-plus"></i></span>{% trans "Registrieren" %}</a></li>
|
||||
{% endif %}
|
||||
<li class="list-inline-item">
|
||||
<form>
|
||||
<ul class="list-inline">
|
||||
<!--
|
||||
<li class="list-inline-item">
|
||||
<div class="form-group currency">
|
||||
<span><i class="fa fa-angle-down"></i></span>
|
||||
<select class="form-control">
|
||||
<option value="">$</option>
|
||||
<option value="">£</option>
|
||||
</select>
|
||||
</div>-->
|
||||
<!-- end form-group -->
|
||||
</li>
|
||||
<li class="list-inline-item">
|
||||
<div class="form-group language">
|
||||
<span><i class="fa fa-angle-down"></i></span>
|
||||
<select class="form-control">
|
||||
<option>{% if request.LANGUAGE_CODE == "de" %}DE{% else %}EN{% endif %}</option>
|
||||
<option>{% if request.LANGUAGE_CODE == "de" %}EN{% else %}DE{% endif %}</option>
|
||||
</select>
|
||||
</div><!-- end form-group -->
|
||||
</li>
|
||||
</ul>
|
||||
</form>
|
||||
</li>
|
||||
</ul>
|
||||
</div><!-- end links -->
|
||||
</div><!-- end columns -->
|
||||
</div><!-- end row -->
|
||||
</div><!-- end container -->
|
||||
</div><!-- end top-bar -->
|
||||
|
||||
<nav class="navbar navbar-expand-xl sticky-top navbar-custom main-navbar p-1" id="mynavbar-1">
|
||||
<div class="container">
|
||||
|
||||
<a href="{% url "frontend:index" %}" class="navbar-brand py-1 m-0"><span><i class="fa fa-plane"></i>URLAUBS</span>AUKTION</a>
|
||||
<div class="header-search d-xl-none my-auto ml-auto py-1">
|
||||
<a href="#" class="search-button" onClick="openSearch()"><span><i class="fa fa-search"></i></span></a>
|
||||
</div>
|
||||
<button class="navbar-toggler ml-2" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation" id="sidebarCollapse">
|
||||
<i class="fa fa-navicon py-1"></i>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="myNavbar1">
|
||||
<ul class="navbar-nav ml-auto navbar-search-link">
|
||||
<li class="nav-item active">
|
||||
<a href="/" class="nav-link" id="navbarDropdown" role="button">{% trans "Home" %}</a>
|
||||
</li>
|
||||
{% if request.user.clientprofile or not request.user.partnerprofile %}
|
||||
<li class="nav-item dropdown">
|
||||
<a href="#" class="nav-link" data-toggle="dropdown">{% trans "Kundenprofil" %}<span><i class="fa fa-angle-down"></i></span></a>
|
||||
<ul class="dropdown-menu">
|
||||
{% if request.user.is_authenticated %}
|
||||
<li><a class="dropdown-item" href="/">{% trans "Gestellte Anfragen" %}</a></li>
|
||||
<li><a class="dropdown-item" href="/">{% trans "Gebuchte Reisen" %}</a></li>
|
||||
{% else %}
|
||||
<li><a class="dropdown-item" href="{% url "profiles:login" %}?next={{ request.path }}">{% trans "Login" %}</a></li>
|
||||
<li><a class="dropdown-item" href="{% url "profiles:register" %}?next={{ request.path }}">{% trans "Registrieren" %}</a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% if request.user.partnerprofile %}
|
||||
<li class="nav-item dropdown">
|
||||
<a href="#" class="nav-link" data-toggle="dropdown">Partnerprofil<span><i class="fa fa-angle-down"></i></span></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a class="dropdown-item" href="/">{% trans "Bieten" %}</a></li>
|
||||
<li><a class="dropdown-item" href="/">{% trans "Buchungen verwalten" %}</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
{% endif %}
|
||||
<li class="nav-item dropdown">
|
||||
<a href="#" class="nav-link" data-toggle="dropdown">{% trans "Über uns" %}<span><i class="fa fa-angle-down"></i></span></a>
|
||||
<ul class="dropdown-menu">
|
||||
{% if not request.user.partnerprofile %}
|
||||
<li><a class="dropdown-item" href="/">{% trans "Als Anbieter anmelden" %}</a></li>
|
||||
{% endif %}
|
||||
<li><a class="dropdown-item" href="/">{% trans "Kontakt" %}</a></li>
|
||||
<li><a class="dropdown-item" href="/">{% trans "Datenschutz" %}</a></li>
|
||||
<li><a class="dropdown-item" href="/">{% trans "Impressum" %}</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="dropdown-item search-btn">
|
||||
<a href="#" class="search-button" onClick="openSearch()"><span><i class="fa fa-search"></i></span></a>
|
||||
</li>
|
||||
</ul>
|
||||
</div><!-- end navbar collapse -->
|
||||
</div><!-- End container -->
|
||||
</nav>
|
||||
<div style="display:none;" class="sidenav-content">
|
||||
<!-- Sidebar -->
|
||||
<nav id="sidebar" class="sidenav">
|
||||
<h2 id="web-name"><span><i class="fa fa-plane"></i></span>Star Travel</h2>
|
||||
|
||||
<div id="main-menu">
|
||||
<div id="dismiss">
|
||||
<button class="btn" id="closebtn">×</button>
|
||||
</div>
|
||||
<div class="list-group panel">
|
||||
<a href="#home-links" class="items-list active" data-toggle="collapse" aria-expanded="false">
|
||||
<span><i class="fa fa-home link-icon"></i></span>Home<span><i class="fa fa-chevron-down arrow"></i></span></a>
|
||||
<div class="collapse sub-menu text-danger" id="home-links">
|
||||
<a class="items-list active" href="index.html">Main Homepage</a>
|
||||
<a class="items-list" href="flight-homepage.html">Flight Homepage</a>
|
||||
<a class="items-list" href="hotel-homepage.html">Hotel Homepage</a>
|
||||
<a class="items-list" href="tour-homepage.html">Tour Homepage</a>
|
||||
<a class="items-list" href="cruise-homepage.html">Cruise Homepage</a>
|
||||
<a class="items-list" href="car-homepage.html">Car Homepage</a>
|
||||
<a class="items-list" href="landing-page.html">Landing Page</a>
|
||||
<a class="items-list" href="travel-agency-homepage.html">Travel Agency Page</a>
|
||||
</div><!-- end sub-menu -->
|
||||
|
||||
<a class="items-list" href="#flights-links" data-toggle="collapse"><span><i class="fa fa-plane link-icon"></i></span>Flights<span><i class="fa fa-chevron-down arrow"></i></span></a>
|
||||
<div class="collapse sub-menu" id="flights-links">
|
||||
<a class="items-list" href="flight-homepage.html">Flight Homepage</a>
|
||||
<a class="items-list" href="flight-listing-left-sidebar.html">List View Left Sidebar</a>
|
||||
<a class="items-list" href="flight-listing-right-sidebar.html">List View Right Sidebar</a>
|
||||
<a class="items-list" href="flight-grid-left-sidebar.html">Grid View Left Sidebar</a>
|
||||
<a class="items-list" href="flight-grid-right-sidebar.html">Grid View Right Sidebar</a>
|
||||
<a class="items-list" href="flight-detail-left-sidebar.html">Detail Left Sidebar</a>
|
||||
<a class="items-list" href="flight-detail-right-sidebar.html">Detail Right Sidebar</a>
|
||||
<a class="items-list" href="flight-booking-left-sidebar.html">Booking Left Sidebar</a>
|
||||
<a class="items-list" href="flight-booking-right-sidebar.html">Booking Right Sidebar</a>
|
||||
<a class="items-list" href="flight-search-result.html">Search Result</a>
|
||||
<a class="items-list" href="flight-offers.html">Hot Offers</a>
|
||||
</div><!-- end sub-menu -->
|
||||
|
||||
<a class="items-list" href="#hotels-links" data-toggle="collapse"><span><i class="fa fa-building link-icon"></i></span>Hotels<span><i class="fa fa-chevron-down arrow"></i></span></a>
|
||||
<div class="collapse sub-menu" id="hotels-links">
|
||||
<a class="items-list" href="hotel-homepage.html">Hotel Homepage</a>
|
||||
<a class="items-list" href="hotel-listing-left-sidebar.html">List View Left Sidebar</a>
|
||||
<a class="items-list" href="hotel-listing-right-sidebar.html">List View Right Sidebar</a>
|
||||
<a class="items-list" href="hotel-grid-left-sidebar.html">Grid View Left Sidebar</a>
|
||||
<a class="items-list" href="hotel-grid-right-sidebar.html">Grid View Right Sidebar</a>
|
||||
<a class="items-list" href="hotel-detail-left-sidebar.html">Detail Left Sidebar</a>
|
||||
<a class="items-list" href="hotel-detail-right-sidebar.html">Detail Right Sidebar</a>
|
||||
<a class="items-list" href="hotel-booking-left-sidebar.html">Booking Left Sidebar</a>
|
||||
<a class="items-list" href="hotel-booking-right-sidebar.html">Booking Right Sidebar</a>
|
||||
<a class="items-list" href="hotel-search-result.html">Search Result</a>
|
||||
<a class="items-list" href="hotel-offers.html">Hot Offers</a>
|
||||
</div><!-- end sub-menu -->
|
||||
|
||||
<a class="items-list" href="#tours-links" data-toggle="collapse"><span><i class="fa fa-globe link-icon"></i></span>Tours<span><i class="fa fa-chevron-down arrow"></i></span></a>
|
||||
<div class="collapse sub-menu" id="tours-links">
|
||||
<a class="items-list" href="tour-homepage.html">Tour Homepage</a>
|
||||
<a class="items-list" href="tour-listing-left-sidebar.html">List View Left Sidebar</a>
|
||||
<a class="items-list" href="tour-listing-right-sidebar.html">List View Right Sidebar</a>
|
||||
<a class="items-list" href="tour-grid-left-sidebar.html">Grid View Left Sidebar</a>
|
||||
<a class="items-list" href="tour-grid-right-sidebar.html">Grid View Right Sidebar</a>
|
||||
<a class="items-list" href="tour-detail-left-sidebar.html">Detail Left Sidebar</a>
|
||||
<a class="items-list" href="tour-detail-right-sidebar.html">Detail Right Sidebar</a>
|
||||
<a class="items-list" href="tour-booking-left-sidebar.html">Booking Left Sidebar</a>
|
||||
<a class="items-list" href="tour-booking-right-sidebar.html">Booking Right Sidebar</a>
|
||||
<a class="items-list" href="tour-search-result.html">Search Result</a>
|
||||
<a class="items-list" href="tour-offers.html">Hot Offers</a>
|
||||
</div><!-- end sub-menu -->
|
||||
|
||||
<a class="items-list" href="#cruise-links" data-toggle="collapse"><span><i class="fa fa-ship link-icon"></i></span>Cruise<span><i class="fa fa-chevron-down arrow"></i></span></a>
|
||||
<div class="collapse sub-menu" id="cruise-links">
|
||||
<a class="items-list" href="cruise-homepage.html">Cruise Homepage</a>
|
||||
<a class="items-list" href="cruise-listing-left-sidebar.html">List View Left Sidebar</a>
|
||||
<a class="items-list" href="cruise-listing-right-sidebar.html">List View Right Sidebar</a>
|
||||
<a class="items-list" href="cruise-grid-left-sidebar.html">Grid View Left Sidebar</a>
|
||||
<a class="items-list" href="cruise-grid-right-sidebar.html">Grid View Right Sidebar</a>
|
||||
<a class="items-list" href="cruise-detail-left-sidebar.html">Detail Left Sidebar</a>
|
||||
<a class="items-list" href="cruise-detail-right-sidebar.html">Detail Right Sidebar</a>
|
||||
<a class="items-list" href="cruise-booking-left-sidebar.html">Booking Left Sidebar</a>
|
||||
<a class="items-list" href="cruise-booking-right-sidebar.html">Booking Right Sidebar</a>
|
||||
<a class="items-list" href="cruise-search-result.html">Search Result</a>
|
||||
<a class="items-list" href="cruise-offers.html">Hot Offers</a>
|
||||
</div><!-- end sub-menu -->
|
||||
|
||||
<a class="items-list" href="#cars-links" data-toggle="collapse"><span><i class="fa fa-car link-icon"></i></span>Cars<span><i class="fa fa-chevron-down arrow"></i></span></a>
|
||||
<div class="collapse sub-menu" id="cars-links">
|
||||
<a class="items-list" href="car-homepage.html">Car Homepage</a>
|
||||
<a class="items-list" href="car-listing-left-sidebar.html">List View Left Sidebar</a>
|
||||
<a class="items-list" href="car-listing-right-sidebar.html">List View Right Sidebar</a>
|
||||
<a class="items-list" href="car-grid-left-sidebar.html">Grid View Left Sidebar</a>
|
||||
<a class="items-list" href="car-grid-right-sidebar.html">Grid View Right Sidebar</a>
|
||||
<a class="items-list" href="car-detail-left-sidebar.html">Detail Left Sidebar</a>
|
||||
<a class="items-list" href="car-detail-right-sidebar.html">Detail Right Sidebar</a>
|
||||
<a class="items-list" href="car-booking-left-sidebar.html">Booking Left Sidebar</a>
|
||||
<a class="items-list" href="car-booking-right-sidebar.html">Booking Right Sidebar</a>
|
||||
<a class="items-list" href="car-search-result.html">Search Result</a>
|
||||
<a class="items-list" href="car-offers.html">Hot Offers</a>
|
||||
</div><!-- end sub-menu -->
|
||||
|
||||
<a class="items-list" href="#features-links" data-toggle="collapse"><span><i class="fa fa-puzzle-piece link-icon"></i></span>Features<span><i class="fa fa-chevron-down arrow"></i></span></a>
|
||||
<div class="collapse sub-menu mega-sub-menu" id="features-links">
|
||||
<a class="items-list" href="#header-style-links" data-toggle="collapse">Header<span><i class="fa fa-caret-down arrow"></i></span></a>
|
||||
<div class="collapse sub-menu mega-sub-menu-links" id="header-style-links">
|
||||
<a class="items-list" href="feature-header-style-1.html">Header Style 1</a>
|
||||
<a class="items-list" href="feature-header-style-2.html">Header Style 2</a>
|
||||
<a class="items-list" href="feature-header-style-3.html">Header Style 3</a>
|
||||
<a class="items-list" href="feature-header-style-4.html">Header Style 4</a>
|
||||
<a class="items-list" href="feature-header-style-5.html">Header Style 5</a>
|
||||
<a class="items-list" href="feature-header-style-6.html">Header Style 6</a>
|
||||
</div>
|
||||
<a class="items-list" href="#page-title-style-links" data-toggle="collapse">Page Title<span><i class="fa fa-caret-down arrow"></i></span></a>
|
||||
<div class="collapse sub-menu mega-sub-menu-links" id="page-title-style-links">
|
||||
<a class="items-list" href="feature-page-title-style-1.html">Page Title Style 1</a>
|
||||
<a class="items-list" href="feature-page-title-style-2.html">Page Title Style 2</a>
|
||||
<a class="items-list" href="feature-page-title-style-3.html">Page Title Style 3</a>
|
||||
<a class="items-list" href="feature-page-title-style-4.html">Page Title Style 4</a>
|
||||
<a class="items-list" href="feature-page-title-style-5.html">Page Title Style 5</a>
|
||||
<a class="items-list" href="feature-page-title-style-6.html">Page Title Style 6</a>
|
||||
</div>
|
||||
<a class="items-list" href="#footer-style-links" data-toggle="collapse">Footer<span><i class="fa fa-caret-down arrow"></i></span></a>
|
||||
<div class="collapse sub-menu mega-sub-menu-links" id="footer-style-links">
|
||||
<a class="items-list" href="feature-footer-style-1.html">Footer Style 1</a>
|
||||
<a class="items-list" href="feature-footer-style-2.html">Footer Style 2</a>
|
||||
<a class="items-list" href="feature-footer-style-3.html">Footer Style 3</a>
|
||||
<a class="items-list" href="feature-footer-style-4.html">Footer Style 4</a>
|
||||
<a class="items-list" href="feature-footer-style-5.html">Footer Style 5</a>
|
||||
</div>
|
||||
<a class="items-list" href="#f-blog-links" data-toggle="collapse">Blog<span><i class="fa fa-caret-down arrow"></i></span></a>
|
||||
<div class="collapse sub-menu mega-sub-menu-links" id="f-blog-links">
|
||||
<a class="items-list" href="blog-listing-left-sidebar.html">Blog Listing Left Sidebar</a>
|
||||
<a class="items-list" href="blog-listing-right-sidebar.html">Blog Listing Right Sidebar</a>
|
||||
<a class="items-list" href="blog-detail-left-sidebar.html">Blog Detail Left Sidebar</a>
|
||||
<a class="items-list" href="blog-detail-right-sidebar.html">Blog Detail Right Sidebar</a>
|
||||
</div>
|
||||
<a class="items-list" href="#f-gallery-links" data-toggle="collapse">Gallery<span><i class="fa fa-caret-down arrow"></i></span></a>
|
||||
<div class="collapse sub-menu mega-sub-menu-links" id="f-gallery-links">
|
||||
<a class="items-list" href="gallery-masonry.html">Gallery Masonry</a>
|
||||
<a class="items-list" href="gallery-2-columns.html">Gallery 2 Columns</a>
|
||||
<a class="items-list" href="gallery-3-columns.html">Gallery 3 Columns</a>
|
||||
<a class="items-list" href="gallery-4-columns.html">Gallery 4 Columns</a>
|
||||
</div>
|
||||
<a class="items-list" href="#f-forms-links" data-toggle="collapse">Forms<span><i class="fa fa-caret-down arrow"></i></span></a>
|
||||
<div class="collapse sub-menu mega-sub-menu-links" id="f-forms-links">
|
||||
<a class="items-list" href="login-1.html">Login 1</a>
|
||||
<a class="items-list" href="login-2.html">Login 2</a>
|
||||
<a class="items-list" href="registration-1.html">Registration 1</a>
|
||||
<a class="items-list" href="registration-2.html">Registration 2</a>
|
||||
<a class="items-list" href="forgot-password-1.html">Forgot Password 1</a>
|
||||
<a class="items-list" href="forgot-password-2.html">Forgot Password 2</a>
|
||||
</div>
|
||||
</div><!-- end sub-menu -->
|
||||
|
||||
<a class="items-list" href="#pages-links" data-toggle="collapse"><span><i class="fa fa-clone link-icon"></i></span>Pages<span><i class="fa fa-chevron-down arrow"></i></span></a>
|
||||
<div class="collapse sub-menu" id="pages-links">
|
||||
<div class="list-group-heading ">Standard <span>Pages</span></div>
|
||||
<a class="items-list" href="about-us-1.html">About Us 1</a>
|
||||
<a class="items-list" href="about-us-2.html">About Us 2</a>
|
||||
<a class="items-list" href="services-1.html">Services 1</a>
|
||||
<a class="items-list" href="services-2.html">Services 2</a>
|
||||
<a class="items-list" href="team-1.html">Our Team 1</a>
|
||||
<a class="items-list" href="team-2.html">Our Team 2</a>
|
||||
<a class="items-list" href="contact-us-1.html">Contact Us 1</a>
|
||||
<a class="items-list" href="contact-us-2.html">Contact Us 2</a>
|
||||
<div class="list-group-heading ">User <span>Dashboard</span></div>
|
||||
<a class="items-list" href="dashboard-1.html">Dashboard 1</a>
|
||||
<a class="items-list" href="dashboard-2.html">Dashboard 2</a>
|
||||
<a class="items-list" href="user-profile.html">User Profile</a>
|
||||
<a class="items-list" href="booking.html">Booking</a>
|
||||
<a class="items-list" href="wishlist.html">Wishlist</a>
|
||||
<a class="items-list" href="cards.html">Cards</a>
|
||||
<div class="list-group-heading ">Special <span>Pages</span></div>
|
||||
<a class="items-list" href="error-page-1.html">404 Page 1</a>
|
||||
<a class="items-list" href="error-page-2.html">404 Page 2</a>
|
||||
<a class="items-list" href="coming-soon-1.html">Coming Soon 1</a>
|
||||
<a class="items-list" href="coming-soon-2.html">Coming Soon 2</a>
|
||||
<a class="items-list" href="faq-left-sidebar.html">FAQ Left Sidebar</a>
|
||||
<a class="items-list" href="faq-right-sidebar.html">FAQ Right Sidebar</a>
|
||||
<a class="items-list" href="testimonials-1.html">Testimonials 1</a>
|
||||
<a class="items-list" href="testimonials-2.html">Testimonials 2</a>
|
||||
<div class="list-group-heading ">Extra <span>Pages</span></div>
|
||||
<a class="items-list" href="before-you-fly.html">Before Fly</a>
|
||||
<a class="items-list" href="travel-insurance.html">Travel Insurance</a>
|
||||
<a class="items-list" href="travel-guide.html">Travel Guide</a>
|
||||
<a class="items-list" href="holidays.html">Holidays</a>
|
||||
<a class="items-list" href="thank-you.html">Thank You</a>
|
||||
<a class="items-list" href="payment-success.html">Payment Success</a>
|
||||
<a class="items-list" href="pricing-table-1.html">Pricing Table 1</a>
|
||||
<a class="items-list" href="pricing-table-2.html">Pricing Table 2</a>
|
||||
<a class="items-list" href="popup-ad.html">Popup Ad</a>
|
||||
</div><!-- end sub-menu -->
|
||||
|
||||
</div><!-- End list-group panel -->
|
||||
</div><!-- End main-menu -->
|
||||
</nav>
|
||||
</div><!-- End sidenav-content -->
|
||||
|
||||
{% block "content" %}
|
||||
{% endblock %}
|
||||
{% include "frontend/footer.html" %}
|
||||
{% if not request.user.is_authenticated %}
|
||||
<!--========================= NEWSLETTER-1 ==========================-->
|
||||
<section id="newsletter-1" class="section-padding back-size newsletter">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-12 col-lg-12 col-xl-12 text-center">
|
||||
<h2>Subscribe Our Newsletter</h2>
|
||||
<p>Subscibe to receive our interesting updates</p>
|
||||
<form>
|
||||
<div class="form-group">
|
||||
<div class="input-group">
|
||||
<input type="email" class="form-control input-lg" placeholder="Enter your email address" required/>
|
||||
<span class="input-group-btn"><button class="btn btn-lg"><i class="fa fa-envelope"></i></button></span>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div><!-- end columns -->
|
||||
</div><!-- end row -->
|
||||
</div><!-- end container -->
|
||||
</section><!-- end newsletter-1 -->
|
||||
{% endif %}
|
||||
|
||||
<!--======================= BEST FEATURES =====================-->
|
||||
<section id="best-features" class="banner-padding black-features">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-6 col-lg-3">
|
||||
<div class="b-feature-block">
|
||||
<span><i class="fa fa-coins"></i></span>
|
||||
<h3>{% trans "Bares Geld sparen" %}</h3>
|
||||
<p>Lorem ipsum dolor sit amet, ad duo fugit aeque fabulas, in lucilius prodesset pri. Veniam delectus ei vis.</p>
|
||||
</div><!-- end b-feature-block -->
|
||||
</div><!-- end columns -->
|
||||
|
||||
<div class="col-md-6 col-lg-3">
|
||||
<div class="b-feature-block">
|
||||
<span><i class="fa fa-lock"></i></span>
|
||||
<h3>{% trans "Sicherheit" %}</h3>
|
||||
<p>Lorem ipsum dolor sit amet, ad duo fugit aeque fabulas, in lucilius prodesset pri. Veniam delectus ei vis.</p>
|
||||
</div><!-- end b-feature-block -->
|
||||
</div><!-- end columns -->
|
||||
|
||||
<div class="col-md-6 col-lg-3">
|
||||
<div class="b-feature-block">
|
||||
<span><i class="fa fa-thumbs-up"></i></span>
|
||||
<h3>{% trans "Zufriedenheit" %}</h3>
|
||||
<p>Lorem ipsum dolor sit amet, ad duo fugit aeque fabulas, in lucilius prodesset pri. Veniam delectus ei vis.</p>
|
||||
</div><!-- end b-feature-block -->
|
||||
</div><!-- end columns -->
|
||||
|
||||
<div class="col-md-6 col-lg-3">
|
||||
<div class="b-feature-block">
|
||||
<span><i class="fa fa-bars"></i></span>
|
||||
<h3>{% trans "Klarheit" %}</h3>
|
||||
<p>Lorem ipsum dolor sit amet, ad duo fugit aeque fabulas, in lucilius prodesset pri. Veniam delectus ei vis.</p>
|
||||
</div><!-- end b-feature-block -->
|
||||
</div><!-- end columns -->
|
||||
</div><!-- end row -->
|
||||
</div><!-- end container -->
|
||||
</section><!-- end best-features -->
|
||||
|
||||
<!--======================= FOOTER =======================-->
|
||||
<section id="footer" class="ftr-heading-o ftr-heading-mgn-1">
|
||||
|
||||
<div id="footer-top" class="banner-padding ftr-top-grey ftr-text-white">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
|
||||
<div class="col-12 col-md-6 col-lg-3 col-xl-3 footer-widget ftr-contact">
|
||||
<h3 class="footer-heading">Kontakt</h3>
|
||||
<ul class="list-unstyled">
|
||||
<li><span><i class="fa fa-map-marker"></i></span>Kumi Systems e.U., Sternäckerweg 51a/2, 8041 Graz</li>
|
||||
<li><span><i class="fa fa-phone"></i></span>+43 800 093004</li>
|
||||
<li><span><i class="fa fa-envelope"></i></span>office@kumi.systems</li>
|
||||
</ul>
|
||||
</div><!-- end columns -->
|
||||
|
||||
<div class="col-12 col-md-6 col-lg-2 col-xl-2 footer-widget ftr-links">
|
||||
<h3 class="footer-heading">Kumi Systems</h3>
|
||||
<ul class="list-unstyled">
|
||||
<li><a href="https://kumi.systems/">Website</a></li>
|
||||
<li><a href="https://kumi.host/">Webhosting</a></li>
|
||||
</ul>
|
||||
</div><!-- end columns -->
|
||||
|
||||
<div class="col-12 col-md-6 col-lg-3 col-xl-3 footer-widget ftr-links ftr-pad-left">
|
||||
<h3 class="footer-heading">Urlaubsauktion</h3>
|
||||
<ul class="list-unstyled">
|
||||
<li><a href="#">Impressum</a></li>
|
||||
<li><a href="#">Kontakt</a></li>
|
||||
<li><a href="#">Login</a></li>
|
||||
<li><a href="#">Registrieren</a></li>
|
||||
</ul>
|
||||
</div><!-- end columns -->
|
||||
|
||||
<div class="col-12 col-md-6 col-lg-4 col-xl-4 footer-widget ftr-about">
|
||||
<h3 class="footer-heading">Über uns</h3>
|
||||
<p>Die Urlaubsauktion ist ur leiwand. Oida.</p>
|
||||
<ul class="social-links list-inline list-unstyled">
|
||||
<li class="list-inline-item"><a href="#"><span><i class="fab fa-facebook"></i></span></a></li>
|
||||
<li class="list-inline-item"><a href="#"><span><i class="fab fa-twitter"></i></span></a></li>
|
||||
<li class="list-inline-item"><a href="#"><span><i class="fab fa-google-plus"></i></span></a></li>
|
||||
<li class="list-inline-item"><a href="#"><span><i class="fab fa-pinterest-p"></i></span></a></li>
|
||||
<li class="list-inline-item"><a href="#"><span><i class="fab fa-instagram"></i></span></a></li>
|
||||
<li class="list-inline-item"><a href="#"><span><i class="fab fa-linkedin"></i></span></a></li>
|
||||
<li class="list-inline-item"><a href="#"><span><i class="fab fa-youtube-play"></i></span></a></li>
|
||||
</ul>
|
||||
</div><!-- end columns -->
|
||||
|
||||
</div><!-- end row -->
|
||||
</div><!-- end container -->
|
||||
</div><!-- end footer-top -->
|
||||
|
||||
<div id="footer-bottom" class="ftr-bot-black">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6 col-lg-6 col-xl-6" id="copyright">
|
||||
<p>© 2020 <a href="https://kumi.systems/">Kumi Systems e.U.</a> Alle Rechte vorbehalten.</p>
|
||||
</div><!-- end columns -->
|
||||
|
||||
<div class="col-12 col-md-6 col-lg-6 col-xl-6" id="terms">
|
||||
<ul class="list-unstyled list-inline">
|
||||
<li class="list-inline-item"><a href="#">Allgemeine Geschäftsbedingungen</a></li>
|
||||
<li class="list-inline-item"><a href="#">Datenschutzerklärung</a></li>
|
||||
</ul>
|
||||
</div><!-- end columns -->
|
||||
</div><!-- end row -->
|
||||
</div><!-- end container -->
|
||||
</div><!-- end footer-bottom -->
|
||||
|
||||
</section><!-- end footer -->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Page Scripts Starts -->
|
||||
<script>var language="{{ request.LANGUAGE_CODE }}";</script>
|
||||
<script src="{% static "frontend/js/jquery-3.3.1.min.js" %}"></script>
|
||||
<script src="{% static "frontend/js/jquery.magnific-popup.min.js" %}"></script>
|
||||
<script src="{% static "frontend/js/jquery.mCustomScrollbar.concat.min.js" %}"></script>
|
||||
<script src="{% static "frontend/js/bootstrap.min4.2.1.js" %}"></script>
|
||||
<script src="{% static "frontend/js/jquery.flexslider.js" %}"></script>
|
||||
<script src="{% static "frontend/js/bootstrap-datepicker.js" %}"></script>
|
||||
<script src="{% static "frontend/js/owl.carousel.min.js" %}"></script>
|
||||
<script src="{% static "frontend/js/custom-navigation.js" %}"></script>
|
||||
<script src="{% static "frontend/js/custom-flex.js" %}"></script>
|
||||
<script src="{% static "frontend/js/custom-owl.js" %}"></script>
|
||||
<script src="{% static "frontend/js/custom-date-picker.js" %}"></script>
|
||||
<script src="{% static "frontend/js/custom-video.js" %}"></script>
|
||||
<script src="{% static "frontend/js/popup-ad.js" %}"></script>
|
||||
<script src="{% static "frontend/js/autocomplete.js" %}"></script>
|
||||
{% block "scripts" %}
|
||||
{% endblock %}
|
||||
<!-- Page Scripts Ends -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
80
templates/frontend/error.html
Normal file
80
templates/frontend/error.html
Normal file
|
@ -0,0 +1,80 @@
|
|||
{% load i18n %}
|
||||
{% load static %}
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>UrlaubsAuktion - {% trans "Seite nicht gefunden" %}</title>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<link rel="icon" href="{% static "frontend/images/favicon.png" %}" type="image/x-icon">
|
||||
|
||||
<!-- Google Fonts -->
|
||||
<link href="https://fonts.googleapis.com/css?family=Lato:300,300i,400,400i,700,700i,900,900i%7CMerriweather:300,300i,400,400i,700,700i,900,900i" rel="stylesheet">
|
||||
|
||||
<!-- Bootstrap Stylesheet -->
|
||||
<link rel="stylesheet" href="{% static "frontend/css/bootstrap.min4.2.1.css" %}">
|
||||
<link rel="stylesheet" type="text/css" href="{% static "frontend/css/bootstrap-reboot4.2.1.css" %}">
|
||||
|
||||
<!-- Sidebar Stylesheet -->
|
||||
<link rel="stylesheet" type="text/css" href="{% static "frontend/css/jquery.mCustomScrollbar.min.css" %}">
|
||||
|
||||
<!-- Font Awesome Stylesheet -->
|
||||
<link rel="stylesheet" href="{% static "frontend/css/font-awesome.min.css" %}">
|
||||
|
||||
<!-- Custom Stylesheets -->
|
||||
<link rel="stylesheet" href="{% static "frontend/css/style.css" %}">
|
||||
<link rel="stylesheet" id="cpswitch" href="{% static "frontend/css/orange.css" %}">
|
||||
<link rel="stylesheet" href="{% static "frontend/css/responsive.css" %}">
|
||||
</head>
|
||||
|
||||
|
||||
<body>
|
||||
|
||||
<!--====== LOADER =====-->
|
||||
<div class="loader"></div>
|
||||
|
||||
|
||||
<!--======================== ERROR-PAGE-2 =====================-->
|
||||
<section id="error-page-2" class="full-page-body full-page-back">
|
||||
<div class="full-page-wrapper">
|
||||
<div class="full-page-content">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="full-page-title d-lg-none">
|
||||
<h3 class="company-name"><span><i class="fa fa-plane"></i>Urlaubs</span>Auktion</h3>
|
||||
</div><!-- end full-page-title -->
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-12 col-md-12 col-lg-4 col-xl-4 error-page-2-circle text-center">
|
||||
<h2>{{ error_code }}</h2>
|
||||
</div>
|
||||
|
||||
<div class="col-12 col-md-12 col-lg-8 col-xl-8 error-page-2-text">
|
||||
<div class="full-page-title d-none d-lg-block">
|
||||
<h3 class="company-name text-left"><span><i class="fa fa-plane"></i>Urlaubs</span>Auktion</h3>
|
||||
</div><!-- end full-page-title -->
|
||||
|
||||
<h2>{% trans "Ein Fehler ist aufgetreten!" %}</h2>
|
||||
<p>{% trans "Es tut uns leid," %}{% if error_code == 404 %}{% trans "diese Seite konnte nicht gefunden werden." %}{% else %}{% trans "es ist ein interner Fehler aufgetreten." %}{% endif %}</p>
|
||||
<p>{% trans "Wir werden diesen Fehler schnellstmöglich beheben. Bitte versuchen Sie es später nochmals." %}</p>
|
||||
<a href="{% url "frontend:index" %}" class="btn btn-orange">{% trans "Zurück zur Startseite" %}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- end columns -->
|
||||
</div><!-- end row -->
|
||||
</div><!-- end container -->
|
||||
</div><!-- end full-page-content -->
|
||||
</div><!-- end full-page-wrapper -->
|
||||
</section><!-- end error-page-2 -->
|
||||
|
||||
|
||||
<!-- Page Scripts Starts -->
|
||||
<script src="{% static "frontend/js/jquery-3.3.1.min.js" %}"></script>
|
||||
<script src="{% static "frontend/js/jquery.mCustomScrollbar.concat.min.js" %}"></script>
|
||||
<script src="{% static "frontend/js/bootstrap.min4.2.1.js" %}"></script>
|
||||
<script src="{% static "frontend/js/custom-navigation.js" %}"></script>
|
||||
<!-- Page Scripts Ends -->
|
||||
</body>
|
||||
</html>
|
|
@ -1,163 +0,0 @@
|
|||
{% load static %}
|
||||
{% load i18n %}
|
||||
{% load dbsetting %}
|
||||
{% load cookielaw_tags %}
|
||||
{% if not request.user.is_authenticated %}
|
||||
<!--========================= NEWSLETTER-1 ==========================-->
|
||||
<section id="newsletter-1" class="section-padding back-size newsletter">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-12 col-lg-12 col-xl-12 text-center">
|
||||
<h2>Subscribe Our Newsletter</h2>
|
||||
<p>Subscibe to receive our interesting updates</p>
|
||||
<form>
|
||||
<div class="form-group">
|
||||
<div class="input-group">
|
||||
<input type="email" class="form-control input-lg" placeholder="Enter your email address" required/>
|
||||
<span class="input-group-btn"><button class="btn btn-lg"><i class="fa fa-envelope"></i></button></span>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div><!-- end columns -->
|
||||
</div><!-- end row -->
|
||||
</div><!-- end container -->
|
||||
</section><!-- end newsletter-1 -->
|
||||
{% endif %}
|
||||
|
||||
<!--======================= BEST FEATURES =====================-->
|
||||
<section id="best-features" class="banner-padding black-features">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-6 col-lg-3">
|
||||
<div class="b-feature-block">
|
||||
<span><i class="fa fa-coins"></i></span>
|
||||
<h3>Best Price Guarantee</h3>
|
||||
<p>Lorem ipsum dolor sit amet, ad duo fugit aeque fabulas, in lucilius prodesset pri. Veniam delectus ei vis.</p>
|
||||
</div><!-- end b-feature-block -->
|
||||
</div><!-- end columns -->
|
||||
|
||||
<div class="col-md-6 col-lg-3">
|
||||
<div class="b-feature-block">
|
||||
<span><i class="fa fa-lock"></i></span>
|
||||
<h3>Safe and Secure</h3>
|
||||
<p>Lorem ipsum dolor sit amet, ad duo fugit aeque fabulas, in lucilius prodesset pri. Veniam delectus ei vis.</p>
|
||||
</div><!-- end b-feature-block -->
|
||||
</div><!-- end columns -->
|
||||
|
||||
<div class="col-md-6 col-lg-3">
|
||||
<div class="b-feature-block">
|
||||
<span><i class="fa fa-thumbs-up"></i></span>
|
||||
<h3>Best Travel Agents</h3>
|
||||
<p>Lorem ipsum dolor sit amet, ad duo fugit aeque fabulas, in lucilius prodesset pri. Veniam delectus ei vis.</p>
|
||||
</div><!-- end b-feature-block -->
|
||||
</div><!-- end columns -->
|
||||
|
||||
<div class="col-md-6 col-lg-3">
|
||||
<div class="b-feature-block">
|
||||
<span><i class="fa fa-bars"></i></span>
|
||||
<h3>Travel Guidelines</h3>
|
||||
<p>Lorem ipsum dolor sit amet, ad duo fugit aeque fabulas, in lucilius prodesset pri. Veniam delectus ei vis.</p>
|
||||
</div><!-- end b-feature-block -->
|
||||
</div><!-- end columns -->
|
||||
</div><!-- end row -->
|
||||
</div><!-- end container -->
|
||||
</section><!-- end best-features -->
|
||||
|
||||
<!--======================= FOOTER =======================-->
|
||||
<section id="footer" class="ftr-heading-o ftr-heading-mgn-1">
|
||||
|
||||
<div id="footer-top" class="banner-padding ftr-top-grey ftr-text-white">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
|
||||
<div class="col-12 col-md-6 col-lg-3 col-xl-3 footer-widget ftr-contact">
|
||||
<h3 class="footer-heading">Kontakt</h3>
|
||||
<ul class="list-unstyled">
|
||||
<li><span><i class="fa fa-map-marker"></i></span>Kumi Systems e.U., Sternäckerweg 51a/2, 8041 Graz</li>
|
||||
<li><span><i class="fa fa-phone"></i></span>+43 800 093004</li>
|
||||
<li><span><i class="fa fa-envelope"></i></span>office@kumi.systems</li>
|
||||
</ul>
|
||||
</div><!-- end columns -->
|
||||
|
||||
<div class="col-12 col-md-6 col-lg-2 col-xl-2 footer-widget ftr-links">
|
||||
<h3 class="footer-heading">Kumi Systems</h3>
|
||||
<ul class="list-unstyled">
|
||||
<li><a href="https://kumi.systems/">Website</a></li>
|
||||
<li><a href="https://kumi.host/">Webhosting</a></li>
|
||||
</ul>
|
||||
</div><!-- end columns -->
|
||||
|
||||
<div class="col-12 col-md-6 col-lg-3 col-xl-3 footer-widget ftr-links ftr-pad-left">
|
||||
<h3 class="footer-heading">Urlaubsauktion</h3>
|
||||
<ul class="list-unstyled">
|
||||
<li><a href="#">Impressum</a></li>
|
||||
<li><a href="#">Kontakt</a></li>
|
||||
<li><a href="#">Login</a></li>
|
||||
<li><a href="#">Registrieren</a></li>
|
||||
</ul>
|
||||
</div><!-- end columns -->
|
||||
|
||||
<div class="col-12 col-md-6 col-lg-4 col-xl-4 footer-widget ftr-about">
|
||||
<h3 class="footer-heading">Über uns</h3>
|
||||
<p>Die Urlaubsauktion ist ur leiwand. Oida.</p>
|
||||
<ul class="social-links list-inline list-unstyled">
|
||||
<li class="list-inline-item"><a href="#"><span><i class="fab fa-facebook"></i></span></a></li>
|
||||
<li class="list-inline-item"><a href="#"><span><i class="fab fa-twitter"></i></span></a></li>
|
||||
<li class="list-inline-item"><a href="#"><span><i class="fab fa-google-plus"></i></span></a></li>
|
||||
<li class="list-inline-item"><a href="#"><span><i class="fab fa-pinterest-p"></i></span></a></li>
|
||||
<li class="list-inline-item"><a href="#"><span><i class="fab fa-instagram"></i></span></a></li>
|
||||
<li class="list-inline-item"><a href="#"><span><i class="fab fa-linkedin"></i></span></a></li>
|
||||
<li class="list-inline-item"><a href="#"><span><i class="fab fa-youtube-play"></i></span></a></li>
|
||||
</ul>
|
||||
</div><!-- end columns -->
|
||||
|
||||
</div><!-- end row -->
|
||||
</div><!-- end container -->
|
||||
</div><!-- end footer-top -->
|
||||
|
||||
<div id="footer-bottom" class="ftr-bot-black">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6 col-lg-6 col-xl-6" id="copyright">
|
||||
<p>© 2020 <a href="https://kumi.systems/">Kumi Systems e.U.</a> Alle Rechte vorbehalten.</p>
|
||||
</div><!-- end columns -->
|
||||
|
||||
<div class="col-12 col-md-6 col-lg-6 col-xl-6" id="terms">
|
||||
<ul class="list-unstyled list-inline">
|
||||
<li class="list-inline-item"><a href="#">Allgemeine Geschäftsbedingungen</a></li>
|
||||
<li class="list-inline-item"><a href="#">Datenschutzerklärung</a></li>
|
||||
</ul>
|
||||
</div><!-- end columns -->
|
||||
</div><!-- end row -->
|
||||
</div><!-- end container -->
|
||||
</div><!-- end footer-bottom -->
|
||||
|
||||
</section><!-- end footer -->
|
||||
|
||||
</div>
|
||||
|
||||
{% cookielaw_banner %}
|
||||
|
||||
<!-- Page Scripts Starts -->
|
||||
<script>var language="{{ request.LANGUAGE_CODE }}";</script>
|
||||
<script src="{% static "frontend/js/jquery-3.3.1.min.js" %}"></script>
|
||||
<script src="{% static "frontend/js/jquery.magnific-popup.min.js" %}"></script>
|
||||
<script src="{% static "frontend/js/jquery.mCustomScrollbar.concat.min.js" %}"></script>
|
||||
<script src="{% static "frontend/js/bootstrap.min4.2.1.js" %}"></script>
|
||||
<script src="{% static "frontend/js/jquery.flexslider.js" %}"></script>
|
||||
<script src="{% static "frontend/js/bootstrap-datepicker.js" %}"></script>
|
||||
<script src="{% static "frontend/js/owl.carousel.min.js" %}"></script>
|
||||
<script src="{% static "frontend/js/custom-navigation.js" %}"></script>
|
||||
<script src="{% static "frontend/js/custom-flex.js" %}"></script>
|
||||
<script src="{% static "frontend/js/custom-owl.js" %}"></script>
|
||||
<script src="{% static "frontend/js/custom-date-picker.js" %}"></script>
|
||||
<script src="{% static "frontend/js/custom-video.js" %}"></script>
|
||||
<script src="{% static "frontend/js/popup-ad.js" %}"></script>
|
||||
<script src="{% static "frontend/js/autocomplete.js" %}"></script>
|
||||
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key={% dbsetting "google.api.key" %}&libraries=places"></script>
|
||||
<script src="{% static "frontend/js/custom-autocomplete.js" %}"></script>
|
||||
<script src="{% static "cookielaw/js/cookielaw.js" %}"></script>
|
||||
<!-- Page Scripts Ends -->
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -1,370 +0,0 @@
|
|||
{% load static %}
|
||||
{% load i18n %}
|
||||
{% load dbsetting %}
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Urlaubsauktion - {{ title }}</title>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<link rel="icon" href="{% static "frontend/images/favicon.png" %}" type="image/x-icon">
|
||||
|
||||
<!-- Google Fonts -->
|
||||
<link href="https://fonts.googleapis.com/css?family=Lato:300,300i,400,400i,700,700i,900,900i%7CMerriweather:300,300i,400,400i,700,700i,900,900i" rel="stylesheet">
|
||||
|
||||
<!-- Bootstrap Stylesheet -->
|
||||
<link rel="stylesheet" href="{% static "frontend/css/bootstrap.min4.2.1.css" %}">
|
||||
<link rel="stylesheet" type="text/css" href="{% static "frontend/css/bootstrap-reboot4.2.1.css" %}">
|
||||
|
||||
<!-- Sidebar Stylesheet -->
|
||||
<link rel="stylesheet" type="text/css" href="{% static "frontend/css/jquery.mCustomScrollbar.min.css" %}">
|
||||
|
||||
<!-- Font Awesome Stylesheet -->
|
||||
<link rel="stylesheet" href="{% static "frontend/fontawesome/css/all.css" %}">
|
||||
|
||||
<!-- Custom Stylesheets -->
|
||||
<link rel="stylesheet" href="{% static "frontend/css/style.css" %}">
|
||||
<link rel="stylesheet" id="cpswitch" href="{% static "frontend/css/orange.css" %}">
|
||||
<link rel="stylesheet" href="{% static "frontend/css/responsive.css" %}">
|
||||
|
||||
<!-- Owl Carousel Stylesheet -->
|
||||
<link rel="stylesheet" href="{% static "frontend/css/owl.carousel.css" %}">
|
||||
<link rel="stylesheet" href="{% static "frontend/css/owl.theme.css" %}">
|
||||
|
||||
<!-- Flex Slider Stylesheet -->
|
||||
<link rel="stylesheet" href="{% static "frontend/css/flexslider.css" %}" type="text/css" />
|
||||
|
||||
<!--Date-Picker Stylesheet-->
|
||||
<link rel="stylesheet" href="{% static "frontend/css/datepicker.css" %}">
|
||||
|
||||
<!-- Magnific Gallery -->
|
||||
<link rel="stylesheet" href="{% static "frontend/css/magnific-popup.css" %}">
|
||||
|
||||
<!-- Cookie Banner -->
|
||||
<link rel="stylesheet" href="{% static "cookielaw/css/cookielaw.css" %}">
|
||||
|
||||
</head>
|
||||
|
||||
|
||||
<body id="main-homepage">
|
||||
|
||||
<div class="wrapper">
|
||||
<!--====== LOADER =====-->
|
||||
<div class="loader"></div>
|
||||
|
||||
|
||||
<!--======== SEARCH-OVERLAY =========-->
|
||||
<div id="myOverlay" class="overlay">
|
||||
<span class="closebtn" onClick="closeSearch()" title="Close Overlay">×</span>
|
||||
<div class="overlay-content">
|
||||
|
||||
<form>
|
||||
<div class="form-group">
|
||||
<div class="input-group">
|
||||
<input class="float-left" type="text" placeholder="Search.." name="search">
|
||||
<button class="float-left" type="submit"><i class="fa fa-search"></i></button>
|
||||
</div><!-- end input-group -->
|
||||
</div><!-- end form-group -->
|
||||
</form>
|
||||
|
||||
</div><!-- end overlay-content -->
|
||||
</div><!-- end overlay -->
|
||||
|
||||
|
||||
<!--============= TOP-BAR ===========-->
|
||||
<div id="top-bar" class="tb-text-white">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6">
|
||||
<div id="info">
|
||||
<ul class="list-unstyled list-inline">
|
||||
<li class="list-inline-item"><span><i class="fa fa-map-marker"></i></span>Kumi Systems e.U., Sternäckerweg 51a/2, 8041 Graz</li>
|
||||
<li class="list-inline-item"><span><i class="fa fa-phone"></i></span>+43 800 093004</li>
|
||||
</ul>
|
||||
</div><!-- end info -->
|
||||
</div><!-- end columns -->
|
||||
<div class="col-12 col-md-6">
|
||||
<div id="links">
|
||||
<ul class="list-unstyled list-inline">
|
||||
{% if request.user.is_authenticated %}
|
||||
<li class="list-inline-item">{% trans "Eingeloggt als:" %} {{ request.user.username }}</li>
|
||||
<li class="list-inline-item"><a href="{% url "profiles:logout" %}"><span><i class="fa fa-lock"></i></span>{% trans "Logout" %}</a></li>
|
||||
{% else %}
|
||||
<li class="list-inline-item"><a href="{% url "profiles:login" %}"><span><i class="fa fa-lock"></i></span>{% trans "Login" %}</a></li>
|
||||
<li class="list-inline-item"><a href="{% url "profiles:register" %}"><span><i class="fa fa-plus"></i></span>{% trans "Registrieren" %}</a></li>
|
||||
{% endif %}
|
||||
<li class="list-inline-item">
|
||||
<form>
|
||||
<ul class="list-inline">
|
||||
<!--
|
||||
<li class="list-inline-item">
|
||||
<div class="form-group currency">
|
||||
<span><i class="fa fa-angle-down"></i></span>
|
||||
<select class="form-control">
|
||||
<option value="">$</option>
|
||||
<option value="">£</option>
|
||||
</select>
|
||||
</div>-->
|
||||
<!-- end form-group -->
|
||||
</li>
|
||||
<li class="list-inline-item">
|
||||
<div class="form-group language">
|
||||
<span><i class="fa fa-angle-down"></i></span>
|
||||
<select class="form-control">
|
||||
<option>{% if request.LANGUAGE_CODE == "de" %}DE{% else %}EN{% endif %}</option>
|
||||
<option>{% if request.LANGUAGE_CODE == "de" %}EN{% else %}DE{% endif %}</option>
|
||||
</select>
|
||||
</div><!-- end form-group -->
|
||||
</li>
|
||||
</ul>
|
||||
</form>
|
||||
</li>
|
||||
</ul>
|
||||
</div><!-- end links -->
|
||||
</div><!-- end columns -->
|
||||
</div><!-- end row -->
|
||||
</div><!-- end container -->
|
||||
</div><!-- end top-bar -->
|
||||
|
||||
<nav class="navbar navbar-expand-xl sticky-top navbar-custom main-navbar p-1" id="mynavbar-1">
|
||||
<div class="container">
|
||||
|
||||
<a href="#" class="navbar-brand py-1 m-0"><span><i class="fa fa-plane"></i>URLAUBS</span>AUKTION</a>
|
||||
<div class="header-search d-xl-none my-auto ml-auto py-1">
|
||||
<a href="#" class="search-button" onClick="openSearch()"><span><i class="fa fa-search"></i></span></a>
|
||||
</div>
|
||||
<button class="navbar-toggler ml-2" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation" id="sidebarCollapse">
|
||||
<i class="fa fa-navicon py-1"></i>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="myNavbar1">
|
||||
<ul class="navbar-nav ml-auto navbar-search-link">
|
||||
<li class="nav-item active">
|
||||
<a href="/" class="nav-link" id="navbarDropdown" role="button">{% trans "Home" %}</a>
|
||||
</li>
|
||||
<li class="nav-item dropdown">
|
||||
<a href="#" class="nav-link" data-toggle="dropdown">{% trans "Kundenprofil" %}<span><i class="fa fa-angle-down"></i></span></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a class="dropdown-item" href="{% url "profiles:login" %}">{% trans "Login" %}</a></li>
|
||||
<li><a class="dropdown-item" href="{% url "profiles:register" %}">{% trans "Registrieren" %}</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
{% if request.user.partnerprofile %}
|
||||
<li class="nav-item dropdown">
|
||||
<a href="#" class="nav-link" data-toggle="dropdown">Partnerprofil<span><i class="fa fa-angle-down"></i></span></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a class="dropdown-item" href="flight-homepage.html">{% trans "Bieten" %}</a></li>
|
||||
<li><a class="dropdown-item" href="flight-listing-left-sidebar.html">{% trans "Buchungen verwalten" %}</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
{% endif %}
|
||||
<li class="nav-item dropdown">
|
||||
<a href="#" class="nav-link" data-toggle="dropdown">{% trans "Über uns" %}<span><i class="fa fa-angle-down"></i></span></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a class="dropdown-item" href="hotel-homepage.html">{% trans "Als Hotel anmelden" %}</a></li>
|
||||
<li><a class="dropdown-item" href="hotel-listing-left-sidebar.html">{% trans "Kontakt" %}</a></li>
|
||||
<li><a class="dropdown-item" href="hotel-listing-right-sidebar.html">{% trans "Datenschutz" %}</a></li>
|
||||
<li><a class="dropdown-item" href="hotel-grid-left-sidebar.html">{% trans "Impressum" %}</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="dropdown-item search-btn">
|
||||
<a href="#" class="search-button" onClick="openSearch()"><span><i class="fa fa-search"></i></span></a>
|
||||
</li>
|
||||
</ul>
|
||||
</div><!-- end navbar collapse -->
|
||||
</div><!-- End container -->
|
||||
</nav>
|
||||
<div style="display:none;" class="sidenav-content">
|
||||
<!-- Sidebar -->
|
||||
<nav id="sidebar" class="sidenav">
|
||||
<h2 id="web-name"><span><i class="fa fa-plane"></i></span>Star Travel</h2>
|
||||
|
||||
<div id="main-menu">
|
||||
<div id="dismiss">
|
||||
<button class="btn" id="closebtn">×</button>
|
||||
</div>
|
||||
<div class="list-group panel">
|
||||
<a href="#home-links" class="items-list active" data-toggle="collapse" aria-expanded="false">
|
||||
<span><i class="fa fa-home link-icon"></i></span>Home<span><i class="fa fa-chevron-down arrow"></i></span></a>
|
||||
<div class="collapse sub-menu text-danger" id="home-links">
|
||||
<a class="items-list active" href="index.html">Main Homepage</a>
|
||||
<a class="items-list" href="flight-homepage.html">Flight Homepage</a>
|
||||
<a class="items-list" href="hotel-homepage.html">Hotel Homepage</a>
|
||||
<a class="items-list" href="tour-homepage.html">Tour Homepage</a>
|
||||
<a class="items-list" href="cruise-homepage.html">Cruise Homepage</a>
|
||||
<a class="items-list" href="car-homepage.html">Car Homepage</a>
|
||||
<a class="items-list" href="landing-page.html">Landing Page</a>
|
||||
<a class="items-list" href="travel-agency-homepage.html">Travel Agency Page</a>
|
||||
</div><!-- end sub-menu -->
|
||||
|
||||
<a class="items-list" href="#flights-links" data-toggle="collapse"><span><i class="fa fa-plane link-icon"></i></span>Flights<span><i class="fa fa-chevron-down arrow"></i></span></a>
|
||||
<div class="collapse sub-menu" id="flights-links">
|
||||
<a class="items-list" href="flight-homepage.html">Flight Homepage</a>
|
||||
<a class="items-list" href="flight-listing-left-sidebar.html">List View Left Sidebar</a>
|
||||
<a class="items-list" href="flight-listing-right-sidebar.html">List View Right Sidebar</a>
|
||||
<a class="items-list" href="flight-grid-left-sidebar.html">Grid View Left Sidebar</a>
|
||||
<a class="items-list" href="flight-grid-right-sidebar.html">Grid View Right Sidebar</a>
|
||||
<a class="items-list" href="flight-detail-left-sidebar.html">Detail Left Sidebar</a>
|
||||
<a class="items-list" href="flight-detail-right-sidebar.html">Detail Right Sidebar</a>
|
||||
<a class="items-list" href="flight-booking-left-sidebar.html">Booking Left Sidebar</a>
|
||||
<a class="items-list" href="flight-booking-right-sidebar.html">Booking Right Sidebar</a>
|
||||
<a class="items-list" href="flight-search-result.html">Search Result</a>
|
||||
<a class="items-list" href="flight-offers.html">Hot Offers</a>
|
||||
</div><!-- end sub-menu -->
|
||||
|
||||
<a class="items-list" href="#hotels-links" data-toggle="collapse"><span><i class="fa fa-building link-icon"></i></span>Hotels<span><i class="fa fa-chevron-down arrow"></i></span></a>
|
||||
<div class="collapse sub-menu" id="hotels-links">
|
||||
<a class="items-list" href="hotel-homepage.html">Hotel Homepage</a>
|
||||
<a class="items-list" href="hotel-listing-left-sidebar.html">List View Left Sidebar</a>
|
||||
<a class="items-list" href="hotel-listing-right-sidebar.html">List View Right Sidebar</a>
|
||||
<a class="items-list" href="hotel-grid-left-sidebar.html">Grid View Left Sidebar</a>
|
||||
<a class="items-list" href="hotel-grid-right-sidebar.html">Grid View Right Sidebar</a>
|
||||
<a class="items-list" href="hotel-detail-left-sidebar.html">Detail Left Sidebar</a>
|
||||
<a class="items-list" href="hotel-detail-right-sidebar.html">Detail Right Sidebar</a>
|
||||
<a class="items-list" href="hotel-booking-left-sidebar.html">Booking Left Sidebar</a>
|
||||
<a class="items-list" href="hotel-booking-right-sidebar.html">Booking Right Sidebar</a>
|
||||
<a class="items-list" href="hotel-search-result.html">Search Result</a>
|
||||
<a class="items-list" href="hotel-offers.html">Hot Offers</a>
|
||||
</div><!-- end sub-menu -->
|
||||
|
||||
<a class="items-list" href="#tours-links" data-toggle="collapse"><span><i class="fa fa-globe link-icon"></i></span>Tours<span><i class="fa fa-chevron-down arrow"></i></span></a>
|
||||
<div class="collapse sub-menu" id="tours-links">
|
||||
<a class="items-list" href="tour-homepage.html">Tour Homepage</a>
|
||||
<a class="items-list" href="tour-listing-left-sidebar.html">List View Left Sidebar</a>
|
||||
<a class="items-list" href="tour-listing-right-sidebar.html">List View Right Sidebar</a>
|
||||
<a class="items-list" href="tour-grid-left-sidebar.html">Grid View Left Sidebar</a>
|
||||
<a class="items-list" href="tour-grid-right-sidebar.html">Grid View Right Sidebar</a>
|
||||
<a class="items-list" href="tour-detail-left-sidebar.html">Detail Left Sidebar</a>
|
||||
<a class="items-list" href="tour-detail-right-sidebar.html">Detail Right Sidebar</a>
|
||||
<a class="items-list" href="tour-booking-left-sidebar.html">Booking Left Sidebar</a>
|
||||
<a class="items-list" href="tour-booking-right-sidebar.html">Booking Right Sidebar</a>
|
||||
<a class="items-list" href="tour-search-result.html">Search Result</a>
|
||||
<a class="items-list" href="tour-offers.html">Hot Offers</a>
|
||||
</div><!-- end sub-menu -->
|
||||
|
||||
<a class="items-list" href="#cruise-links" data-toggle="collapse"><span><i class="fa fa-ship link-icon"></i></span>Cruise<span><i class="fa fa-chevron-down arrow"></i></span></a>
|
||||
<div class="collapse sub-menu" id="cruise-links">
|
||||
<a class="items-list" href="cruise-homepage.html">Cruise Homepage</a>
|
||||
<a class="items-list" href="cruise-listing-left-sidebar.html">List View Left Sidebar</a>
|
||||
<a class="items-list" href="cruise-listing-right-sidebar.html">List View Right Sidebar</a>
|
||||
<a class="items-list" href="cruise-grid-left-sidebar.html">Grid View Left Sidebar</a>
|
||||
<a class="items-list" href="cruise-grid-right-sidebar.html">Grid View Right Sidebar</a>
|
||||
<a class="items-list" href="cruise-detail-left-sidebar.html">Detail Left Sidebar</a>
|
||||
<a class="items-list" href="cruise-detail-right-sidebar.html">Detail Right Sidebar</a>
|
||||
<a class="items-list" href="cruise-booking-left-sidebar.html">Booking Left Sidebar</a>
|
||||
<a class="items-list" href="cruise-booking-right-sidebar.html">Booking Right Sidebar</a>
|
||||
<a class="items-list" href="cruise-search-result.html">Search Result</a>
|
||||
<a class="items-list" href="cruise-offers.html">Hot Offers</a>
|
||||
</div><!-- end sub-menu -->
|
||||
|
||||
<a class="items-list" href="#cars-links" data-toggle="collapse"><span><i class="fa fa-car link-icon"></i></span>Cars<span><i class="fa fa-chevron-down arrow"></i></span></a>
|
||||
<div class="collapse sub-menu" id="cars-links">
|
||||
<a class="items-list" href="car-homepage.html">Car Homepage</a>
|
||||
<a class="items-list" href="car-listing-left-sidebar.html">List View Left Sidebar</a>
|
||||
<a class="items-list" href="car-listing-right-sidebar.html">List View Right Sidebar</a>
|
||||
<a class="items-list" href="car-grid-left-sidebar.html">Grid View Left Sidebar</a>
|
||||
<a class="items-list" href="car-grid-right-sidebar.html">Grid View Right Sidebar</a>
|
||||
<a class="items-list" href="car-detail-left-sidebar.html">Detail Left Sidebar</a>
|
||||
<a class="items-list" href="car-detail-right-sidebar.html">Detail Right Sidebar</a>
|
||||
<a class="items-list" href="car-booking-left-sidebar.html">Booking Left Sidebar</a>
|
||||
<a class="items-list" href="car-booking-right-sidebar.html">Booking Right Sidebar</a>
|
||||
<a class="items-list" href="car-search-result.html">Search Result</a>
|
||||
<a class="items-list" href="car-offers.html">Hot Offers</a>
|
||||
</div><!-- end sub-menu -->
|
||||
|
||||
<a class="items-list" href="#features-links" data-toggle="collapse"><span><i class="fa fa-puzzle-piece link-icon"></i></span>Features<span><i class="fa fa-chevron-down arrow"></i></span></a>
|
||||
<div class="collapse sub-menu mega-sub-menu" id="features-links">
|
||||
<a class="items-list" href="#header-style-links" data-toggle="collapse">Header<span><i class="fa fa-caret-down arrow"></i></span></a>
|
||||
<div class="collapse sub-menu mega-sub-menu-links" id="header-style-links">
|
||||
<a class="items-list" href="feature-header-style-1.html">Header Style 1</a>
|
||||
<a class="items-list" href="feature-header-style-2.html">Header Style 2</a>
|
||||
<a class="items-list" href="feature-header-style-3.html">Header Style 3</a>
|
||||
<a class="items-list" href="feature-header-style-4.html">Header Style 4</a>
|
||||
<a class="items-list" href="feature-header-style-5.html">Header Style 5</a>
|
||||
<a class="items-list" href="feature-header-style-6.html">Header Style 6</a>
|
||||
</div>
|
||||
<a class="items-list" href="#page-title-style-links" data-toggle="collapse">Page Title<span><i class="fa fa-caret-down arrow"></i></span></a>
|
||||
<div class="collapse sub-menu mega-sub-menu-links" id="page-title-style-links">
|
||||
<a class="items-list" href="feature-page-title-style-1.html">Page Title Style 1</a>
|
||||
<a class="items-list" href="feature-page-title-style-2.html">Page Title Style 2</a>
|
||||
<a class="items-list" href="feature-page-title-style-3.html">Page Title Style 3</a>
|
||||
<a class="items-list" href="feature-page-title-style-4.html">Page Title Style 4</a>
|
||||
<a class="items-list" href="feature-page-title-style-5.html">Page Title Style 5</a>
|
||||
<a class="items-list" href="feature-page-title-style-6.html">Page Title Style 6</a>
|
||||
</div>
|
||||
<a class="items-list" href="#footer-style-links" data-toggle="collapse">Footer<span><i class="fa fa-caret-down arrow"></i></span></a>
|
||||
<div class="collapse sub-menu mega-sub-menu-links" id="footer-style-links">
|
||||
<a class="items-list" href="feature-footer-style-1.html">Footer Style 1</a>
|
||||
<a class="items-list" href="feature-footer-style-2.html">Footer Style 2</a>
|
||||
<a class="items-list" href="feature-footer-style-3.html">Footer Style 3</a>
|
||||
<a class="items-list" href="feature-footer-style-4.html">Footer Style 4</a>
|
||||
<a class="items-list" href="feature-footer-style-5.html">Footer Style 5</a>
|
||||
</div>
|
||||
<a class="items-list" href="#f-blog-links" data-toggle="collapse">Blog<span><i class="fa fa-caret-down arrow"></i></span></a>
|
||||
<div class="collapse sub-menu mega-sub-menu-links" id="f-blog-links">
|
||||
<a class="items-list" href="blog-listing-left-sidebar.html">Blog Listing Left Sidebar</a>
|
||||
<a class="items-list" href="blog-listing-right-sidebar.html">Blog Listing Right Sidebar</a>
|
||||
<a class="items-list" href="blog-detail-left-sidebar.html">Blog Detail Left Sidebar</a>
|
||||
<a class="items-list" href="blog-detail-right-sidebar.html">Blog Detail Right Sidebar</a>
|
||||
</div>
|
||||
<a class="items-list" href="#f-gallery-links" data-toggle="collapse">Gallery<span><i class="fa fa-caret-down arrow"></i></span></a>
|
||||
<div class="collapse sub-menu mega-sub-menu-links" id="f-gallery-links">
|
||||
<a class="items-list" href="gallery-masonry.html">Gallery Masonry</a>
|
||||
<a class="items-list" href="gallery-2-columns.html">Gallery 2 Columns</a>
|
||||
<a class="items-list" href="gallery-3-columns.html">Gallery 3 Columns</a>
|
||||
<a class="items-list" href="gallery-4-columns.html">Gallery 4 Columns</a>
|
||||
</div>
|
||||
<a class="items-list" href="#f-forms-links" data-toggle="collapse">Forms<span><i class="fa fa-caret-down arrow"></i></span></a>
|
||||
<div class="collapse sub-menu mega-sub-menu-links" id="f-forms-links">
|
||||
<a class="items-list" href="login-1.html">Login 1</a>
|
||||
<a class="items-list" href="login-2.html">Login 2</a>
|
||||
<a class="items-list" href="registration-1.html">Registration 1</a>
|
||||
<a class="items-list" href="registration-2.html">Registration 2</a>
|
||||
<a class="items-list" href="forgot-password-1.html">Forgot Password 1</a>
|
||||
<a class="items-list" href="forgot-password-2.html">Forgot Password 2</a>
|
||||
</div>
|
||||
</div><!-- end sub-menu -->
|
||||
|
||||
<a class="items-list" href="#pages-links" data-toggle="collapse"><span><i class="fa fa-clone link-icon"></i></span>Pages<span><i class="fa fa-chevron-down arrow"></i></span></a>
|
||||
<div class="collapse sub-menu" id="pages-links">
|
||||
<div class="list-group-heading ">Standard <span>Pages</span></div>
|
||||
<a class="items-list" href="about-us-1.html">About Us 1</a>
|
||||
<a class="items-list" href="about-us-2.html">About Us 2</a>
|
||||
<a class="items-list" href="services-1.html">Services 1</a>
|
||||
<a class="items-list" href="services-2.html">Services 2</a>
|
||||
<a class="items-list" href="team-1.html">Our Team 1</a>
|
||||
<a class="items-list" href="team-2.html">Our Team 2</a>
|
||||
<a class="items-list" href="contact-us-1.html">Contact Us 1</a>
|
||||
<a class="items-list" href="contact-us-2.html">Contact Us 2</a>
|
||||
<div class="list-group-heading ">User <span>Dashboard</span></div>
|
||||
<a class="items-list" href="dashboard-1.html">Dashboard 1</a>
|
||||
<a class="items-list" href="dashboard-2.html">Dashboard 2</a>
|
||||
<a class="items-list" href="user-profile.html">User Profile</a>
|
||||
<a class="items-list" href="booking.html">Booking</a>
|
||||
<a class="items-list" href="wishlist.html">Wishlist</a>
|
||||
<a class="items-list" href="cards.html">Cards</a>
|
||||
<div class="list-group-heading ">Special <span>Pages</span></div>
|
||||
<a class="items-list" href="error-page-1.html">404 Page 1</a>
|
||||
<a class="items-list" href="error-page-2.html">404 Page 2</a>
|
||||
<a class="items-list" href="coming-soon-1.html">Coming Soon 1</a>
|
||||
<a class="items-list" href="coming-soon-2.html">Coming Soon 2</a>
|
||||
<a class="items-list" href="faq-left-sidebar.html">FAQ Left Sidebar</a>
|
||||
<a class="items-list" href="faq-right-sidebar.html">FAQ Right Sidebar</a>
|
||||
<a class="items-list" href="testimonials-1.html">Testimonials 1</a>
|
||||
<a class="items-list" href="testimonials-2.html">Testimonials 2</a>
|
||||
<div class="list-group-heading ">Extra <span>Pages</span></div>
|
||||
<a class="items-list" href="before-you-fly.html">Before Fly</a>
|
||||
<a class="items-list" href="travel-insurance.html">Travel Insurance</a>
|
||||
<a class="items-list" href="travel-guide.html">Travel Guide</a>
|
||||
<a class="items-list" href="holidays.html">Holidays</a>
|
||||
<a class="items-list" href="thank-you.html">Thank You</a>
|
||||
<a class="items-list" href="payment-success.html">Payment Success</a>
|
||||
<a class="items-list" href="pricing-table-1.html">Pricing Table 1</a>
|
||||
<a class="items-list" href="pricing-table-2.html">Pricing Table 2</a>
|
||||
<a class="items-list" href="popup-ad.html">Popup Ad</a>
|
||||
</div><!-- end sub-menu -->
|
||||
|
||||
</div><!-- End list-group panel -->
|
||||
</div><!-- End main-menu -->
|
||||
</nav>
|
||||
</div><!-- End sidenav-content -->
|
|
@ -2,6 +2,8 @@
|
|||
{% load static %}
|
||||
{% load i18n %}
|
||||
{% load testimonials %}
|
||||
{% load dbsetting %}
|
||||
{% load offeroptions %}
|
||||
{% block "content" %}
|
||||
<!--========================= FLEX SLIDER =====================-->
|
||||
<section class="flexslider-container" id="flexslider-container-1">
|
||||
|
@ -48,7 +50,7 @@
|
|||
<div class="tab-content">
|
||||
|
||||
<div id="flights" class="tab-pane in active">
|
||||
<form method="POST">
|
||||
<form method="POST" action="{% url "auction:create_inquiry" %}">
|
||||
{% csrf_token %}
|
||||
<div class="row">
|
||||
|
||||
|
@ -57,14 +59,16 @@
|
|||
|
||||
<div class="col-12 col-md-6 col-lg-6">
|
||||
<div class="form-group left-icon">
|
||||
<input id="destination" type="text" class="form-control" placeholder="{% trans "Zielort" %}" >
|
||||
<input id="id_destination_name" name="destination_name" type="text" class="form-control" placeholder="{% trans "Zielort" %}" >
|
||||
<input id="id_destination_lat" name="destination_lat" type="text" style="display: none;">
|
||||
<input id="id_destination_lon" name="destination_lon" type="text" style="display: none;">
|
||||
<i class="fa fa-map-marker"></i>
|
||||
</div>
|
||||
</div><!-- end columns -->
|
||||
|
||||
<div class="col-12 col-md-6 col-lg-6">
|
||||
<div class="form-group left-icon">
|
||||
<input type="number" step="1" class="form-control" placeholder="{% trans "Budget" %}" >
|
||||
<input id="id_amount" name="amount" type="number" step="1" class="form-control" placeholder="{% trans "Budget" %}" >
|
||||
<i class="fa fa-euro-sign"></i>
|
||||
</div>
|
||||
</div><!-- end columns -->
|
||||
|
@ -77,14 +81,14 @@
|
|||
|
||||
<div class="col-6 col-md-6 col-lg-6">
|
||||
<div class="form-group left-icon">
|
||||
<input type="text" class="form-control dpd1" placeholder="{% trans "Erster Tag" %}" >
|
||||
<input id="id_first_date" name="first_date" type="text" class="form-control dpd1" placeholder="{% trans "Erster Tag" %}" >
|
||||
<i class="fa fa-calendar"></i>
|
||||
</div>
|
||||
</div><!-- end columns -->
|
||||
|
||||
<div class="col-6 col-md-6 col-lg-6">
|
||||
<div class="form-group left-icon">
|
||||
<input type="text" class="form-control dpd2" placeholder="{% trans "Letzter Tag" %}" >
|
||||
<input id="id_last_date" name="last_date" type="text" class="form-control dpd2" placeholder="{% trans "Letzter Tag" %}" >
|
||||
<i class="fa fa-calendar"></i>
|
||||
</div>
|
||||
</div><!-- end columns -->
|
||||
|
@ -96,27 +100,27 @@
|
|||
<div class="row">
|
||||
<div class="col-6 col-md-6 col-lg-6">
|
||||
<div class="form-group right-icon">
|
||||
<select class="form-control">
|
||||
<option selected>{% trans "Erwachsene" %}</option>
|
||||
<option>1</option>
|
||||
<option>2</option>
|
||||
<option>3</option>
|
||||
<option>4</option>
|
||||
<option>5</option>
|
||||
<select id="id_adults" name="adults" class="form-control">
|
||||
<option value="1" selected>{% trans "Erwachsene" %}</option>
|
||||
<option value="1">1</option>
|
||||
<option value="2">2</option>
|
||||
<option value="3">3</option>
|
||||
<option value="4">4</option>
|
||||
<option value="5">5</option>
|
||||
</select>
|
||||
<i class="fa fa-angle-down"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6 col-md-6 col-lg-6">
|
||||
<div class="form-group right-icon">
|
||||
<select class="form-control">
|
||||
<option selected>{% trans "Kinder" %}</option>
|
||||
<option>0</option>
|
||||
<option>1</option>
|
||||
<option>2</option>
|
||||
<option>3</option>
|
||||
<option>4</option>
|
||||
<option>5</option>
|
||||
<select id="id_children" name="children" class="form-control">
|
||||
<option value="0" selected>{% trans "Kinder" %}</option>
|
||||
<option value="0">0</option>
|
||||
<option value="1">1</option>
|
||||
<option value="2">2</option>
|
||||
<option value="3">3</option>
|
||||
<option value="4">4</option>
|
||||
<option value="5">5</option>
|
||||
</select>
|
||||
<i class="fa fa-angle-down"></i>
|
||||
</div>
|
||||
|
@ -285,14 +289,14 @@
|
|||
|
||||
<div class="col-12 col-md-6 col-lg-6">
|
||||
<div class="form-group left-icon">
|
||||
<input type="text" class="form-control" placeholder="Ziel" >
|
||||
<input id="id_destination_name" name="destination_name" type="text" class="form-control" placeholder="Ziel" >
|
||||
<i class="fa fa-map-marker"></i>
|
||||
</div>
|
||||
</div><!-- end columns -->
|
||||
|
||||
<div class="col-12 col-md-6 col-lg-6">
|
||||
<div class="form-group left-icon">
|
||||
<input type="text" class="form-control" placeholder="Budget" >
|
||||
<input id="id_amount" name="amount" type="text" class="form-control" placeholder="Budget" >
|
||||
<i class="fa fa-euro-sign"></i>
|
||||
</div>
|
||||
</div><!-- end columns -->
|
||||
|
@ -305,14 +309,14 @@
|
|||
|
||||
<div class="col-6 col-md-6 col-lg-6">
|
||||
<div class="form-group left-icon">
|
||||
<input type="text" class="form-control dpd1" placeholder="Beginn" >
|
||||
<input id="id_first_date" name="first_date" type="text" class="form-control dpd1" placeholder="Beginn" >
|
||||
<i class="fa fa-calendar"></i>
|
||||
</div>
|
||||
</div><!-- end columns -->
|
||||
|
||||
<div class="col-6 col-md-6 col-lg-6">
|
||||
<div class="form-group left-icon">
|
||||
<input type="text" class="form-control dpd2" placeholder="Ende" >
|
||||
<input id="id_last_date" name="last_date" type="text" class="form-control dpd2" placeholder="Ende" >
|
||||
<i class="fa fa-calendar"></i>
|
||||
</div>
|
||||
</div><!-- end columns -->
|
||||
|
@ -532,16 +536,10 @@
|
|||
{% for t in test %}
|
||||
|
||||
<div class="carousel-item {% if forloop.first %}active{% endif %}">
|
||||
<blockquote>Lorem ipsum dolor sit amet, ad duo fugit aeque fabulas, in lucilius prodesset pri. Veniam delectus ei vis. Est atqui timeam mnesarchum at, pro an eros perpetua ullamcorper Lorem ipsum dolor sit amet, ad duo fugit aeque fabulas, in lucilius prodesset pri. Veniam delectus ei vis. Est atqui timeam mnesarchum at, pro an eros perpetua ullamcorper.</blockquote>
|
||||
<div class="rating">
|
||||
<span><i class="fa fa-star orange"></i></span>
|
||||
<span><i class="fa fa-star orange"></i></span>
|
||||
<span><i class="fa fa-star orange"></i></span>
|
||||
<span><i class="fa fa-star orange"></i></span>
|
||||
<span><i class="fa fa-star lightgrey"></i></span>
|
||||
</div><!-- end rating -->
|
||||
<blockquote>{{ t.text }}</blockquote>
|
||||
{% autoescape off %}{% stars t.stars %}{% endautoescape %}
|
||||
|
||||
<small>Jon Snow</small>
|
||||
<small>{{ t.name }}</small>
|
||||
</div><!-- end item -->
|
||||
{% endfor %}
|
||||
|
||||
|
@ -560,3 +558,7 @@
|
|||
</section><!-- end testimonials -->
|
||||
|
||||
{% endblock %}
|
||||
{% block "scripts" %}
|
||||
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key={% dbsetting "google.api.key" %}&libraries=places"></script>
|
||||
<script src="{% static "frontend/js/custom-autocomplete.js" %}"></script>
|
||||
{% endblock %}
|
11
templates/payment/redirect.html
Normal file
11
templates/payment/redirect.html
Normal file
|
@ -0,0 +1,11 @@
|
|||
{% load i18n %}
|
||||
<html>
|
||||
<head>
|
||||
<title>Urlaubsauktion - {% trans "Weiterleitung" %}</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>{% trans "Sie werden zu unserem Zahlungsdienstleister weitergeleitet. Wir bitten um einen Augenblick Geduld." %}</p>
|
||||
<script src="https://js.stripe.com/v3/"></script>
|
||||
<script src="redirect.js"></script>
|
||||
</body>
|
||||
</html>
|
7
templates/payment/redirect_stripe.js
Normal file
7
templates/payment/redirect_stripe.js
Normal file
|
@ -0,0 +1,7 @@
|
|||
{% load dbsetting %}
|
||||
var stripe = Stripe('{% dbsetting "stripe.key.public" %}');
|
||||
stripe.redirectToCheckout({
|
||||
sessionId: '{{ object.session }}'
|
||||
}).then(function (result) {
|
||||
alert(result.error.message);
|
||||
});
|
39
templates/payment/status.html
Normal file
39
templates/payment/status.html
Normal file
|
@ -0,0 +1,39 @@
|
|||
{% extends "frontend/base.html" %}
|
||||
{% block "content" %}
|
||||
<!--===== INNERPAGE-WRAPPER ====-->
|
||||
<section class="innerpage-wrapper">
|
||||
<div id="payment-success" class="section-padding">
|
||||
<div class="container text-center">
|
||||
<div class="row d-flex justify-content-center">
|
||||
<div class="col-md-12 col-lg-8 col-lg-offset-2">
|
||||
<div class="payment-success-text">
|
||||
<h2>{% trans "Zahlung" %} {% if object.status == 0 %}{% trans "erfolgreich" %}{% elif object.status == -1 %}{% trans "autorisiert" %}{% endif %}</h2>
|
||||
<p>{% blocktrans with currency=object.invoice.currency|upper, amount=object.invoice.amount %}Die Zahlung über {{ currency }} {{ amount }} wurde{% endblocktrans %}{% if object.status == 0 %}{% trans "erfolgreich durchgeführt" %}{% elif object.status == -1 %}{% trans "autorisiert" %}{% endif %}</p>
|
||||
|
||||
<span><i class="fa fa-check-circle"></i></span>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<td><span><i class="fa fa-clone"></i></span>{% trans "Kategorie" %}</td>
|
||||
<td><span><i class="fa fa-diamond"></i></span>{% trans "Beschreibung" %}</td>
|
||||
<td><span><i class="fa fa-dollar"></i></span>{% trans "Preis" %}</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><span><i class="fa fa-building"></i></span>{% trans "Gebot" %}</td>
|
||||
<td>{{ object.invoice.destination_name }}<span class="t-date">{{ object.first_date|date:"SHORT_DATE_FORMAT" }} – {{ object.last_date|date:"SHORT_DATE_FORMAT" }}</span></td>
|
||||
<td>{{ object.invoice.currency|upper }} {{ object.invoice.amount }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<p>{% trans "Die Buchungsdaten wurden auch per E-Mail versendet." %}</p>
|
||||
</div>
|
||||
</div><!-- end columns -->
|
||||
</div><!-- end row -->
|
||||
</div><!-- end container -->
|
||||
</div><!-- end coming-soon-text -->
|
||||
</section><!-- end innerpage-wrapper -->
|
||||
{% endblock %}
|
35
templates/profiles/base.html
Normal file
35
templates/profiles/base.html
Normal file
|
@ -0,0 +1,35 @@
|
|||
{% extends "frontend/base.html" %}
|
||||
{% block "content" %}
|
||||
<!--===== INNERPAGE-WRAPPER ====-->
|
||||
<section class="innerpage-wrapper">
|
||||
<div id="dashboard" class="innerpage-section-padding">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-12 col-lg-12 col-xl-12">
|
||||
<div class="dashboard-heading">
|
||||
<h2>Urlaubs<span>Auktion</span></h2>
|
||||
<p>Hallo {{ object.first_name }}, willkommen bei der Urlaubsauktion!</p>
|
||||
<p></p>
|
||||
</div><!-- end dashboard-heading -->
|
||||
|
||||
<div class="dashboard-wrapper">
|
||||
<div class="row">
|
||||
|
||||
<div class="col-12 col-md-2 col-lg-2 dashboard-nav">
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="nav-item active"><a class="nav-link" href="#"><span><i class="fa fa-cogs"></i></span>Dashboard</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="/"><span><i class="fa fa-user"></i></span>Profile</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="/"><span><i class="fa fa-briefcase"></i></span>Booking</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="/"><span><i class="fa fa-heart"></i></span>Wishlist</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="/"><span><i class="fa fa-credit-card"></i></span>My Cards</a></li>
|
||||
</ul>
|
||||
</div><!-- end columns -->
|
||||
{% block "profilepage" %}
|
||||
{% endblock %}
|
||||
</div><!-- end dashboard-wrapper -->
|
||||
</div><!-- end columns -->
|
||||
</div><!-- end row -->
|
||||
</div><!-- end container -->
|
||||
</div><!-- end dashboard -->
|
||||
</section><!-- end innerpage-wrapper -->
|
||||
{% endblock %}
|
5
urlaubsauktion/database.dist.py
Normal file
5
urlaubsauktion/database.dist.py
Normal file
|
@ -0,0 +1,5 @@
|
|||
DATABASE_HOST = "localhost"
|
||||
DATABASE_PORT = 3306
|
||||
DATABASE_USER = "urlaubsauktion"
|
||||
DATABASE_PASS = "secret"
|
||||
DATABASE_NAME = "urlaubsauktion"
|
|
@ -1,6 +1,9 @@
|
|||
import os
|
||||
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django.contrib.messages import constants as messages
|
||||
|
||||
from urlaubsauktion.database import *
|
||||
|
||||
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
|
||||
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
|
@ -15,7 +18,7 @@ SECRET_KEY = 'g$_(44hzu#_utld_hn@yw$-x_1l-0pf2+f-3#$^5f2c(p=)nq3'
|
|||
# SECURITY WARNING: don't run with debug turned on in production!
|
||||
DEBUG = True
|
||||
|
||||
ALLOWED_HOSTS = []
|
||||
ALLOWED_HOSTS = ["*"]
|
||||
|
||||
|
||||
# Application definition
|
||||
|
@ -36,7 +39,6 @@ INSTALLED_APPS = [
|
|||
'django_countries',
|
||||
'phonenumber_field',
|
||||
'bootstrapform',
|
||||
'cookielaw',
|
||||
'multiselectfield',
|
||||
]
|
||||
|
||||
|
@ -78,10 +80,11 @@ WSGI_APPLICATION = 'urlaubsauktion.wsgi.application'
|
|||
DATABASES = {
|
||||
'default': {
|
||||
'ENGINE': 'django.contrib.gis.db.backends.mysql',
|
||||
'NAME': 'urlaubsauktion',
|
||||
'USER': 'urlaubsauktion',
|
||||
'PASSWORD': 'ooJ3ooPu',
|
||||
'HOST': 'localhost',
|
||||
'NAME': DATABASE_NAME,
|
||||
'USER': DATABASE_USER,
|
||||
'PASSWORD': DATABASE_PASS,
|
||||
'HOST': DATABASE_HOST,
|
||||
'PORT': DATABASE_PORT,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -111,8 +114,12 @@ AUTH_PASSWORD_VALIDATORS = [
|
|||
LANGUAGE_CODE = 'de'
|
||||
|
||||
LANGUAGES = [
|
||||
('de', _('German')),
|
||||
('en', _('English')),
|
||||
('de', _('Deutsch')),
|
||||
('en', _('Englisch')),
|
||||
]
|
||||
|
||||
CURRENCIES = [
|
||||
('EUR', _("Euro"))
|
||||
]
|
||||
|
||||
TIME_ZONE = 'Europe/Vienna'
|
||||
|
@ -132,3 +139,7 @@ STATIC_URL = '/static/'
|
|||
STATICFILES_DIRS = [
|
||||
os.path.join(BASE_DIR, "static"),
|
||||
]
|
||||
|
||||
MESSAGE_TAGS = {
|
||||
messages.ERROR: 'danger'
|
||||
}
|
||||
|
|
|
@ -16,8 +16,13 @@ Including another URLconf
|
|||
from django.contrib import admin
|
||||
from django.urls import path, include
|
||||
|
||||
handler404 = 'frontend.views.handler404'
|
||||
handler500 = 'frontend.views.handler500'
|
||||
|
||||
urlpatterns = [
|
||||
path('admin/', admin.site.urls),
|
||||
path('', include('frontend.urls')),
|
||||
path('profiles/', include('profiles.urls'))
|
||||
path('profiles/', include('profiles.urls')),
|
||||
path('auction/', include('auction.urls')),
|
||||
path('payment/', include('payment.urls')),
|
||||
]
|
||||
|
|
Loading…
Reference in a new issue