More files.

This commit is contained in:
Kumi 2020-01-26 11:53:25 +01:00
parent 94ecafab4e
commit 52d9030c39
50 changed files with 1575 additions and 793 deletions

2
.gitignore vendored
View file

@ -1,4 +1,4 @@
db.sqlite3
urlaubsauktion/database.py
*.swp
*.pyc
__pycache__/

8
auction/forms.py Normal file
View 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"]

View 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),
),
]

View 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'),
),
]

View 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'),
),
]

View 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,
),
]

View file

@ -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
View 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")
]

View file

@ -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()

View file

@ -1,3 +1,7 @@
from django.contrib import admin
from frontend.models import Testimonial
# Register your models here.
admin.site.register(Testimonial)

View 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),
),
]

View 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,
),
]

View file

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

View 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)

View file

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

View file

@ -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))]

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -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
View 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")
]

View file

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

View 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=''),
),
]

View 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),
),
]

View 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,
),
]

View 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,
),
]

View 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',
),
]

View 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,
),
]

View file

@ -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()

View file

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

View file

@ -10,3 +10,5 @@ mysqlclient
django-cookie-law
django-bootstrap-form
django-multiselectfield
geopy
stripe

View file

@ -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);
}

View 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));
});
};
});

View file

@ -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);

View file

@ -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">&times;</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 %}

View file

@ -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&nbsp;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">&times;</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&nbsp;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>

View 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>

View file

@ -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&nbsp;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>

View file

@ -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&nbsp;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">&times;</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 -->

View file

@ -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 %}

View 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>

View 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);
});

View 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 %}

View 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 %}

View file

@ -0,0 +1,5 @@
DATABASE_HOST = "localhost"
DATABASE_PORT = 3306
DATABASE_USER = "urlaubsauktion"
DATABASE_PASS = "secret"
DATABASE_NAME = "urlaubsauktion"

View file

@ -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'
}

View file

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