Another bunch of undocumented changes.
This commit is contained in:
parent
4ca76378df
commit
f88ada15fe
18 changed files with 258 additions and 216 deletions
|
@ -1,3 +1,46 @@
|
||||||
from django.shortcuts import render
|
from django.views.generic import CreateView, UpdateView
|
||||||
|
from django.urls import reverse_lazy
|
||||||
|
|
||||||
# Create your views here.
|
from .models import ClientProfile
|
||||||
|
|
||||||
|
from localauth.mixins import LoginRequiredMixin
|
||||||
|
|
||||||
|
class ClientRegistrationView(LoginRequiredMixin, CreateView):
|
||||||
|
model = ClientProfile
|
||||||
|
exclude = ["user"]
|
||||||
|
template_name = "clients/signup.html"
|
||||||
|
fields = ["company", "vat_id", "first_name", "last_name", "street", "city", "zip", "state", "country"]
|
||||||
|
|
||||||
|
def form_valid(self, form):
|
||||||
|
form.instance.user = self.request.user
|
||||||
|
return super().form_valid(form)
|
||||||
|
|
||||||
|
def get_success_url(self):
|
||||||
|
return reverse_lazy("clients:profile")
|
||||||
|
|
||||||
|
def get_initial(self):
|
||||||
|
try:
|
||||||
|
partner = self.request.user.partnerprofile
|
||||||
|
return {
|
||||||
|
"company": partner.company,
|
||||||
|
"vat_id": partner.vat_id,
|
||||||
|
"first_name": partner.first_name,
|
||||||
|
"last_name": partner.last_name,
|
||||||
|
"street": partner.street,
|
||||||
|
"city": partner.city,
|
||||||
|
"zip": partner.zip,
|
||||||
|
"state": partner.state,
|
||||||
|
"country": partner.country
|
||||||
|
}
|
||||||
|
|
||||||
|
except:
|
||||||
|
return {}
|
||||||
|
|
||||||
|
class ClientProfileView(LoginRequiredMixin, UpdateView):
|
||||||
|
model = ClientProfile
|
||||||
|
exclude = ["user"]
|
||||||
|
template_name = "clients/profile.html"
|
||||||
|
fields = ["company", "vat_id", "first_name", "last_name", "street", "city", "zip", "state", "country"]
|
||||||
|
|
||||||
|
def get_success_url(self):
|
||||||
|
return reverse_lazy("clients:profile")
|
|
@ -1,7 +1,11 @@
|
||||||
from django.contrib.auth.forms import UserCreationForm
|
from django.contrib.auth.forms import UserCreationForm
|
||||||
|
from django import forms
|
||||||
|
|
||||||
from .models import User
|
from .models import User
|
||||||
|
|
||||||
|
from partners.models import PartnerProfile
|
||||||
|
from clients.models import ClientProfile
|
||||||
|
|
||||||
class RegistrationForm(UserCreationForm):
|
class RegistrationForm(UserCreationForm):
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
kwargs.pop("request")
|
kwargs.pop("request")
|
||||||
|
@ -10,3 +14,12 @@ class RegistrationForm(UserCreationForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = User
|
model = User
|
||||||
fields = ["email", "password1", "password2"]
|
fields = ["email", "password1", "password2"]
|
||||||
|
|
||||||
|
class VerificationForm(forms.Form):
|
||||||
|
def get_choices():
|
||||||
|
for client in ClientProfile.objects.filter(verified=False):
|
||||||
|
yield ("C%i" % client.id, "C%i – %s" % (client.id, client.full_name))
|
||||||
|
for partner in PartnerProfile.objects.filter(verified=False):
|
||||||
|
yield ("P%i" % partner.id, "P%i – %s" % (partner.id, partner.full_name))
|
||||||
|
|
||||||
|
profile = forms.ChoiceField(choices=get_choices)
|
|
@ -71,6 +71,15 @@ class Profile(models.Model):
|
||||||
zip = models.CharField(max_length=16)
|
zip = models.CharField(max_length=16)
|
||||||
state = models.CharField(max_length=64)
|
state = models.CharField(max_length=64)
|
||||||
country = CountryField()
|
country = CountryField()
|
||||||
|
verified = models.BooleanField(default=False)
|
||||||
|
enabled = models.BooleanField(default=True)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def full_name(self):
|
||||||
|
if self.company:
|
||||||
|
return self.company
|
||||||
|
else:
|
||||||
|
return " ".join([self.first_name, self.last_name])
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
abstract = True
|
abstract = True
|
|
@ -1,6 +1,6 @@
|
||||||
from django.urls import path
|
from django.urls import path
|
||||||
|
|
||||||
from .views import LoginView, LogoutView, RegistrationView
|
from .views import LoginView, LogoutView, RegistrationView, VerificationView
|
||||||
|
|
||||||
app_name = "localauth"
|
app_name = "localauth"
|
||||||
|
|
||||||
|
@ -8,4 +8,5 @@ urlpatterns = [
|
||||||
path('login/', LoginView.as_view(), name="login"),
|
path('login/', LoginView.as_view(), name="login"),
|
||||||
path('logout/', LogoutView.as_view(), name="logout"),
|
path('logout/', LogoutView.as_view(), name="logout"),
|
||||||
path('register/', RegistrationView.as_view(), name="register"),
|
path('register/', RegistrationView.as_view(), name="register"),
|
||||||
|
path('verify/', VerificationView.as_view(), name="verify"),
|
||||||
]
|
]
|
|
@ -3,9 +3,15 @@ from django.http.response import HttpResponseRedirect
|
||||||
from django.contrib.auth import login
|
from django.contrib.auth import login
|
||||||
from django.shortcuts import resolve_url
|
from django.shortcuts import resolve_url
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
from django.views.generic import FormView
|
||||||
|
from django.contrib import messages
|
||||||
|
|
||||||
from .forms import RegistrationForm
|
from .forms import RegistrationForm, VerificationForm
|
||||||
from .models import User
|
from .models import User
|
||||||
|
from .mixins import SuperUserRequiredMixin
|
||||||
|
|
||||||
|
from clients.models import ClientProfile
|
||||||
|
from partners.models import PartnerProfile
|
||||||
|
|
||||||
class LoginView(Login):
|
class LoginView(Login):
|
||||||
template_name = "localauth/register.html"
|
template_name = "localauth/register.html"
|
||||||
|
@ -18,9 +24,26 @@ class RegistrationView(Login):
|
||||||
template_name = "localauth/register.html"
|
template_name = "localauth/register.html"
|
||||||
|
|
||||||
def form_valid(self, form):
|
def form_valid(self, form):
|
||||||
user = User.objects.create_user(form.cleaned_data["email"], form.cleaned_data["password1"])
|
user = User.objects.create_user(form.cleaned_data["email"])
|
||||||
|
user.set_password(form.cleaned_data["password1"])
|
||||||
login(self.request, user)
|
login(self.request, user)
|
||||||
|
|
||||||
|
messages.success(self.request, "Erfolgreich registriert!")
|
||||||
return HttpResponseRedirect(self.get_success_url())
|
return HttpResponseRedirect(self.get_success_url())
|
||||||
|
|
||||||
def get_default_redirect_url(self):
|
def get_default_redirect_url(self):
|
||||||
return resolve_url(self.next_page or settings.REGISTER_REDIRECT_URL)
|
return resolve_url(self.next_page or settings.REGISTER_REDIRECT_URL)
|
||||||
|
|
||||||
|
class VerificationView(SuperUserRequiredMixin, FormView):
|
||||||
|
form_class = VerificationForm
|
||||||
|
template_name = "localauth/verify.html"
|
||||||
|
|
||||||
|
def form_valid(self, form):
|
||||||
|
pid = form.cleaned_data["profile"]
|
||||||
|
ptype = ClientProfile if profile.startswith("C") else PartnerProfile
|
||||||
|
pobj = ptype.objects.get(id=profile[1:])
|
||||||
|
pobj.update(verified=True)
|
||||||
|
|
||||||
|
messages.success(self.request, "Benutzer %s bestätigt!" % pobj.full_name)
|
||||||
|
|
||||||
|
return HttpResponseRedirect(resolve_url("localauth:verify"))
|
|
@ -0,0 +1,19 @@
|
||||||
|
# SECURITY WARNING: keep the secret key used in production secret!
|
||||||
|
SECRET_KEY = 'longsecretstring!'
|
||||||
|
|
||||||
|
# SECURITY WARNING: don't run with debug turned on in production!
|
||||||
|
DEBUG = True
|
||||||
|
|
||||||
|
ALLOWED_HOSTS = ["*"]
|
||||||
|
|
||||||
|
# PostgreSQL server settings
|
||||||
|
|
||||||
|
DB_HOST = "postgresql.server"
|
||||||
|
DB_PORT = 5432
|
||||||
|
DB_NAME = "postgresql_database"
|
||||||
|
DB_USER = "postgresql_username"
|
||||||
|
DB_PASS = "postgresql_password"
|
||||||
|
|
||||||
|
# Email address of system administrator
|
||||||
|
|
||||||
|
ADMIN_EMAIL = "recipient@example.com"
|
10
partners/urls.py
Normal file
10
partners/urls.py
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
from django.urls import path
|
||||||
|
|
||||||
|
from .views import PartnerRegistrationView, PartnerProfileView
|
||||||
|
|
||||||
|
app_name = "partners"
|
||||||
|
|
||||||
|
urlpatterns = [
|
||||||
|
path('register/', PartnerRegistrationView.as_view(), name="register"),
|
||||||
|
path('profile/', PartnerProfileView.as_view(), name="profile"),
|
||||||
|
]
|
|
@ -1,4 +1,5 @@
|
||||||
from django.views.generic import CreateView
|
from django.views.generic import CreateView, UpdateView
|
||||||
|
from django.urls import reverse_lazy
|
||||||
|
|
||||||
from .models import PartnerProfile
|
from .models import PartnerProfile
|
||||||
|
|
||||||
|
@ -7,3 +8,43 @@ from localauth.mixins import LoginRequiredMixin
|
||||||
class PartnerRegistrationView(LoginRequiredMixin, CreateView):
|
class PartnerRegistrationView(LoginRequiredMixin, CreateView):
|
||||||
model = PartnerProfile
|
model = PartnerProfile
|
||||||
exclude = ["user"]
|
exclude = ["user"]
|
||||||
|
template_name = "partners/signup.html"
|
||||||
|
fields = ["company", "vat_id", "first_name", "last_name", "street", "city", "zip", "state", "country"]
|
||||||
|
|
||||||
|
def form_valid(self, form):
|
||||||
|
form.instance.user = self.request.user
|
||||||
|
return super().form_valid(form)
|
||||||
|
|
||||||
|
def get_success_url(self):
|
||||||
|
return reverse_lazy("partners:profile")
|
||||||
|
|
||||||
|
def get_initial(self):
|
||||||
|
try:
|
||||||
|
client = self.request.user.clientprofile
|
||||||
|
|
||||||
|
return {
|
||||||
|
"company": client.company,
|
||||||
|
"vat_id": client.vat_id,
|
||||||
|
"first_name": client.first_name,
|
||||||
|
"last_name": client.last_name,
|
||||||
|
"street": client.street,
|
||||||
|
"city": client.city,
|
||||||
|
"zip": client.zip,
|
||||||
|
"state": client.state,
|
||||||
|
"country": client.country
|
||||||
|
}
|
||||||
|
|
||||||
|
except:
|
||||||
|
return {}
|
||||||
|
|
||||||
|
class PartnerProfileView(LoginRequiredMixin, UpdateView):
|
||||||
|
model = PartnerProfile
|
||||||
|
exclude = ["user"]
|
||||||
|
template_name = "partners/profile.html"
|
||||||
|
fields = ["company", "vat_id", "first_name", "last_name", "street", "city", "zip", "state", "country"]
|
||||||
|
|
||||||
|
def get_success_url(self):
|
||||||
|
return reverse_lazy("partners:profile")
|
||||||
|
|
||||||
|
def get_object(self, queryset=None):
|
||||||
|
return self.request.user.partnerprofile
|
|
@ -1,4 +1,6 @@
|
||||||
from django.urls import path
|
from django.urls import path
|
||||||
|
|
||||||
|
app_name = "paypal"
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
]
|
]
|
||||||
|
|
|
@ -2,6 +2,8 @@ from django.urls import path
|
||||||
|
|
||||||
from .views import SepaApplyPaymentView
|
from .views import SepaApplyPaymentView
|
||||||
|
|
||||||
|
app_name = "sepa"
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('apply/', SepaApplyPaymentView.as_view(), name="superuser_apply"),
|
path('apply/', SepaApplyPaymentView.as_view(), name="apply"),
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
from django.urls import path, include
|
from django.urls import path, include
|
||||||
|
|
||||||
|
app_name = "payment"
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('gateways/paypal/', include("payment.paypal.urls"), name="paypal"),
|
path('gateways/paypal/', include("payment.paypal.urls"), name="paypal"),
|
||||||
path('gateways/sepa/', include("payment.sepa.urls"), name="sepa"),
|
path('gateways/sepa/', include("payment.sepa.urls"), name="sepa"),
|
||||||
|
|
BIN
static/frontend/images/logo.png
Normal file
BIN
static/frontend/images/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
|
@ -13,7 +13,7 @@
|
||||||
<link href="https://fontproxy.kumi.systems/css?family=Lato:300,300i,400,400i,700,700i,900,900i%7CMerriweather:300,300i,400,400i,700,700i,900,900i" rel="stylesheet">
|
<link href="https://fontproxy.kumi.systems/css?family=Lato:300,300i,400,400i,700,700i,900,900i%7CMerriweather:300,300i,400,400i,700,700i,900,900i" rel="stylesheet">
|
||||||
|
|
||||||
<!-- Bootstrap Stylesheet -->
|
<!-- Bootstrap Stylesheet -->
|
||||||
<link rel="stylesheet" href="{% static "frontend/css/bootstrap.min4.2.1.css" %}">
|
<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" %}">
|
<link rel="stylesheet" type="text/css" href="{% static "frontend/css/bootstrap-reboot4.2.1.css" %}">
|
||||||
|
|
||||||
<!-- Sidebar Stylesheet -->
|
<!-- Sidebar Stylesheet -->
|
||||||
|
@ -24,7 +24,7 @@
|
||||||
|
|
||||||
<!-- Custom Stylesheets -->
|
<!-- Custom Stylesheets -->
|
||||||
<link rel="stylesheet" href="{% static "frontend/css/style.css" %}">
|
<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/orange.css" %}">
|
||||||
<link rel="stylesheet" href="{% static "frontend/css/responsive.css" %}">
|
<link rel="stylesheet" href="{% static "frontend/css/responsive.css" %}">
|
||||||
|
|
||||||
<!-- Owl Carousel Stylesheet -->
|
<!-- Owl Carousel Stylesheet -->
|
||||||
|
@ -87,7 +87,9 @@
|
||||||
<div id="links">
|
<div id="links">
|
||||||
<ul class="list-unstyled list-inline">
|
<ul class="list-unstyled list-inline">
|
||||||
{% if request.user.is_authenticated %}
|
{% if request.user.is_authenticated %}
|
||||||
|
{% if request.user.is_superuser %}
|
||||||
<li class="list-inline-item">{% trans "Eingeloggt als:" %} {{ request.user.email }} | </li>
|
<li class="list-inline-item">{% trans "Eingeloggt als:" %} {{ request.user.email }} | </li>
|
||||||
|
{% endif %}
|
||||||
<li class="list-inline-item"><a href="{% url "localauth:logout" %}"><span><i class="fa fa-lock"></i></span>{% trans "Logout" %}</a></li>
|
<li class="list-inline-item"><a href="{% url "localauth:logout" %}"><span><i class="fa fa-lock"></i></span>{% trans "Logout" %}</a></li>
|
||||||
{% else %}
|
{% else %}
|
||||||
<li class="list-inline-item"><a href="{% url "localauth:login" %}?next={{ request.path }}"><span><i class="fa fa-lock"></i></span>{% trans "Login" %}</a></li>
|
<li class="list-inline-item"><a href="{% url "localauth:login" %}?next={{ request.path }}"><span><i class="fa fa-lock"></i></span>{% trans "Login" %}</a></li>
|
||||||
|
@ -129,7 +131,7 @@
|
||||||
<nav class="navbar navbar-expand-xl sticky-top navbar-custom main-navbar p-1" id="mynavbar-1">
|
<nav class="navbar navbar-expand-xl sticky-top navbar-custom main-navbar p-1" id="mynavbar-1">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
|
|
||||||
<a href="{% url "frontend:home" %}" class="navbar-brand py-1 m-0"><span><i class="fa fa-plane"></i>JOURNEY</span>JOKER</a>
|
<a href="{% url "frontend:home" %}" class="navbar-brand py-1 m-0"><img style="max-height:50px;" src="{% static "frontend/images/logo.png" %}"></img></a>
|
||||||
<div class="header-search d-xl-none my-auto ml-auto py-1">
|
<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>
|
<a href="#" class="search-button" onClick="openSearch()"><span><i class="fa fa-search"></i></span></a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -171,7 +173,7 @@
|
||||||
<a href="#" class="nav-link" data-toggle="dropdown">{% trans "Über uns" %}<span><i class="fa fa-angle-down"></i></span></a>
|
<a href="#" class="nav-link" data-toggle="dropdown">{% trans "Über uns" %}<span><i class="fa fa-angle-down"></i></span></a>
|
||||||
<ul class="dropdown-menu">
|
<ul class="dropdown-menu">
|
||||||
{% if not request.user.partnerprofile %}
|
{% if not request.user.partnerprofile %}
|
||||||
<li><a class="dropdown-item" href="/">{% trans "Als Anbieter anmelden" %}</a></li>
|
<li><a class="dropdown-item" href="{% url "partners:register" %}">{% trans "Als Anbieter anmelden" %}</a></li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<li><a class="dropdown-item" href="/">{% trans "Kontakt" %}</a></li>
|
<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 "Datenschutz" %}</a></li>
|
||||||
|
@ -183,210 +185,16 @@
|
||||||
<a href="#" class="nav-link" data-toggle="dropdown">Admin<span><i class="fa fa-angle-down"></i></span></a>
|
<a href="#" class="nav-link" data-toggle="dropdown">Admin<span><i class="fa fa-angle-down"></i></span></a>
|
||||||
<ul class="dropdown-menu">
|
<ul class="dropdown-menu">
|
||||||
<li><a class="dropdown-item" href="{% url "payment:sepa:apply" %}">{% trans "SEPA-Zahlung anwenden" %}</a></li>
|
<li><a class="dropdown-item" href="{% url "payment:sepa:apply" %}">{% trans "SEPA-Zahlung anwenden" %}</a></li>
|
||||||
|
<li><a class="dropdown-item" href="{% url "localauth:verify" %}">{% trans "Account verifizieren" %}</a></li>
|
||||||
|
<li><a class="dropdown-item" href="{% url "admin:index" %}">{% trans "Admin-Panel" %}</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<li class="dropdown-item search-btn" style="display: none;">
|
<li class="nav-item dropdown" style="display: none;"></li>
|
||||||
<a href="#" class="search-button" onClick="openSearch()"><span><i class="fa fa-search"></i></span></a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</div><!-- end navbar collapse -->
|
</div><!-- end navbar collapse -->
|
||||||
</div><!-- End container -->
|
</div><!-- End container -->
|
||||||
</nav>
|
</nav>
|
||||||
<div style="display:none;" class="sidenav-content">
|
|
||||||
<!-- Sidebar -->
|
|
||||||
<nav id="sidebar" class="sidenav">
|
|
||||||
<h2 id="web-name"><span><i class="fa fa-plane"></i></span>Star Travel</h2>
|
|
||||||
|
|
||||||
<div id="main-menu">
|
|
||||||
<div id="dismiss">
|
|
||||||
<button class="btn" id="closebtn">×</button>
|
|
||||||
</div>
|
|
||||||
<div class="list-group panel">
|
|
||||||
<a href="#home-links" class="items-list active" data-toggle="collapse" aria-expanded="false">
|
|
||||||
<span><i class="fa fa-home link-icon"></i></span>Home<span><i class="fa fa-chevron-down arrow"></i></span></a>
|
|
||||||
<div class="collapse sub-menu text-danger" id="home-links">
|
|
||||||
<a class="items-list active" href="index.html">Main Homepage</a>
|
|
||||||
<a class="items-list" href="flight-homepage.html">Flight Homepage</a>
|
|
||||||
<a class="items-list" href="hotel-homepage.html">Hotel Homepage</a>
|
|
||||||
<a class="items-list" href="tour-homepage.html">Tour Homepage</a>
|
|
||||||
<a class="items-list" href="cruise-homepage.html">Cruise Homepage</a>
|
|
||||||
<a class="items-list" href="car-homepage.html">Car Homepage</a>
|
|
||||||
<a class="items-list" href="landing-page.html">Landing Page</a>
|
|
||||||
<a class="items-list" href="travel-agency-homepage.html">Travel Agency Page</a>
|
|
||||||
</div><!-- end sub-menu -->
|
|
||||||
|
|
||||||
<a class="items-list" href="#flights-links" data-toggle="collapse"><span><i class="fa fa-plane link-icon"></i></span>Flights<span><i class="fa fa-chevron-down arrow"></i></span></a>
|
|
||||||
<div class="collapse sub-menu" id="flights-links">
|
|
||||||
<a class="items-list" href="flight-homepage.html">Flight Homepage</a>
|
|
||||||
<a class="items-list" href="flight-listing-left-sidebar.html">List View Left Sidebar</a>
|
|
||||||
<a class="items-list" href="flight-listing-right-sidebar.html">List View Right Sidebar</a>
|
|
||||||
<a class="items-list" href="flight-grid-left-sidebar.html">Grid View Left Sidebar</a>
|
|
||||||
<a class="items-list" href="flight-grid-right-sidebar.html">Grid View Right Sidebar</a>
|
|
||||||
<a class="items-list" href="flight-detail-left-sidebar.html">Detail Left Sidebar</a>
|
|
||||||
<a class="items-list" href="flight-detail-right-sidebar.html">Detail Right Sidebar</a>
|
|
||||||
<a class="items-list" href="flight-booking-left-sidebar.html">Booking Left Sidebar</a>
|
|
||||||
<a class="items-list" href="flight-booking-right-sidebar.html">Booking Right Sidebar</a>
|
|
||||||
<a class="items-list" href="flight-search-result.html">Search Result</a>
|
|
||||||
<a class="items-list" href="flight-offers.html">Hot Offers</a>
|
|
||||||
</div><!-- end sub-menu -->
|
|
||||||
|
|
||||||
<a class="items-list" href="#hotels-links" data-toggle="collapse"><span><i class="fa fa-building link-icon"></i></span>Hotels<span><i class="fa fa-chevron-down arrow"></i></span></a>
|
|
||||||
<div class="collapse sub-menu" id="hotels-links">
|
|
||||||
<a class="items-list" href="hotel-homepage.html">Hotel Homepage</a>
|
|
||||||
<a class="items-list" href="hotel-listing-left-sidebar.html">List View Left Sidebar</a>
|
|
||||||
<a class="items-list" href="hotel-listing-right-sidebar.html">List View Right Sidebar</a>
|
|
||||||
<a class="items-list" href="hotel-grid-left-sidebar.html">Grid View Left Sidebar</a>
|
|
||||||
<a class="items-list" href="hotel-grid-right-sidebar.html">Grid View Right Sidebar</a>
|
|
||||||
<a class="items-list" href="hotel-detail-left-sidebar.html">Detail Left Sidebar</a>
|
|
||||||
<a class="items-list" href="hotel-detail-right-sidebar.html">Detail Right Sidebar</a>
|
|
||||||
<a class="items-list" href="hotel-booking-left-sidebar.html">Booking Left Sidebar</a>
|
|
||||||
<a class="items-list" href="hotel-booking-right-sidebar.html">Booking Right Sidebar</a>
|
|
||||||
<a class="items-list" href="hotel-search-result.html">Search Result</a>
|
|
||||||
<a class="items-list" href="hotel-offers.html">Hot Offers</a>
|
|
||||||
</div><!-- end sub-menu -->
|
|
||||||
|
|
||||||
<a class="items-list" href="#tours-links" data-toggle="collapse"><span><i class="fa fa-globe link-icon"></i></span>Tours<span><i class="fa fa-chevron-down arrow"></i></span></a>
|
|
||||||
<div class="collapse sub-menu" id="tours-links">
|
|
||||||
<a class="items-list" href="tour-homepage.html">Tour Homepage</a>
|
|
||||||
<a class="items-list" href="tour-listing-left-sidebar.html">List View Left Sidebar</a>
|
|
||||||
<a class="items-list" href="tour-listing-right-sidebar.html">List View Right Sidebar</a>
|
|
||||||
<a class="items-list" href="tour-grid-left-sidebar.html">Grid View Left Sidebar</a>
|
|
||||||
<a class="items-list" href="tour-grid-right-sidebar.html">Grid View Right Sidebar</a>
|
|
||||||
<a class="items-list" href="tour-detail-left-sidebar.html">Detail Left Sidebar</a>
|
|
||||||
<a class="items-list" href="tour-detail-right-sidebar.html">Detail Right Sidebar</a>
|
|
||||||
<a class="items-list" href="tour-booking-left-sidebar.html">Booking Left Sidebar</a>
|
|
||||||
<a class="items-list" href="tour-booking-right-sidebar.html">Booking Right Sidebar</a>
|
|
||||||
<a class="items-list" href="tour-search-result.html">Search Result</a>
|
|
||||||
<a class="items-list" href="tour-offers.html">Hot Offers</a>
|
|
||||||
</div><!-- end sub-menu -->
|
|
||||||
|
|
||||||
<a class="items-list" href="#cruise-links" data-toggle="collapse"><span><i class="fa fa-ship link-icon"></i></span>Cruise<span><i class="fa fa-chevron-down arrow"></i></span></a>
|
|
||||||
<div class="collapse sub-menu" id="cruise-links">
|
|
||||||
<a class="items-list" href="cruise-homepage.html">Cruise Homepage</a>
|
|
||||||
<a class="items-list" href="cruise-listing-left-sidebar.html">List View Left Sidebar</a>
|
|
||||||
<a class="items-list" href="cruise-listing-right-sidebar.html">List View Right Sidebar</a>
|
|
||||||
<a class="items-list" href="cruise-grid-left-sidebar.html">Grid View Left Sidebar</a>
|
|
||||||
<a class="items-list" href="cruise-grid-right-sidebar.html">Grid View Right Sidebar</a>
|
|
||||||
<a class="items-list" href="cruise-detail-left-sidebar.html">Detail Left Sidebar</a>
|
|
||||||
<a class="items-list" href="cruise-detail-right-sidebar.html">Detail Right Sidebar</a>
|
|
||||||
<a class="items-list" href="cruise-booking-left-sidebar.html">Booking Left Sidebar</a>
|
|
||||||
<a class="items-list" href="cruise-booking-right-sidebar.html">Booking Right Sidebar</a>
|
|
||||||
<a class="items-list" href="cruise-search-result.html">Search Result</a>
|
|
||||||
<a class="items-list" href="cruise-offers.html">Hot Offers</a>
|
|
||||||
</div><!-- end sub-menu -->
|
|
||||||
|
|
||||||
<a class="items-list" href="#cars-links" data-toggle="collapse"><span><i class="fa fa-car link-icon"></i></span>Cars<span><i class="fa fa-chevron-down arrow"></i></span></a>
|
|
||||||
<div class="collapse sub-menu" id="cars-links">
|
|
||||||
<a class="items-list" href="car-homepage.html">Car Homepage</a>
|
|
||||||
<a class="items-list" href="car-listing-left-sidebar.html">List View Left Sidebar</a>
|
|
||||||
<a class="items-list" href="car-listing-right-sidebar.html">List View Right Sidebar</a>
|
|
||||||
<a class="items-list" href="car-grid-left-sidebar.html">Grid View Left Sidebar</a>
|
|
||||||
<a class="items-list" href="car-grid-right-sidebar.html">Grid View Right Sidebar</a>
|
|
||||||
<a class="items-list" href="car-detail-left-sidebar.html">Detail Left Sidebar</a>
|
|
||||||
<a class="items-list" href="car-detail-right-sidebar.html">Detail Right Sidebar</a>
|
|
||||||
<a class="items-list" href="car-booking-left-sidebar.html">Booking Left Sidebar</a>
|
|
||||||
<a class="items-list" href="car-booking-right-sidebar.html">Booking Right Sidebar</a>
|
|
||||||
<a class="items-list" href="car-search-result.html">Search Result</a>
|
|
||||||
<a class="items-list" href="car-offers.html">Hot Offers</a>
|
|
||||||
</div><!-- end sub-menu -->
|
|
||||||
|
|
||||||
<a class="items-list" href="#features-links" data-toggle="collapse"><span><i class="fa fa-puzzle-piece link-icon"></i></span>Features<span><i class="fa fa-chevron-down arrow"></i></span></a>
|
|
||||||
<div class="collapse sub-menu mega-sub-menu" id="features-links">
|
|
||||||
<a class="items-list" href="#header-style-links" data-toggle="collapse">Header<span><i class="fa fa-caret-down arrow"></i></span></a>
|
|
||||||
<div class="collapse sub-menu mega-sub-menu-links" id="header-style-links">
|
|
||||||
<a class="items-list" href="feature-header-style-1.html">Header Style 1</a>
|
|
||||||
<a class="items-list" href="feature-header-style-2.html">Header Style 2</a>
|
|
||||||
<a class="items-list" href="feature-header-style-3.html">Header Style 3</a>
|
|
||||||
<a class="items-list" href="feature-header-style-4.html">Header Style 4</a>
|
|
||||||
<a class="items-list" href="feature-header-style-5.html">Header Style 5</a>
|
|
||||||
<a class="items-list" href="feature-header-style-6.html">Header Style 6</a>
|
|
||||||
</div>
|
|
||||||
<a class="items-list" href="#page-title-style-links" data-toggle="collapse">Page Title<span><i class="fa fa-caret-down arrow"></i></span></a>
|
|
||||||
<div class="collapse sub-menu mega-sub-menu-links" id="page-title-style-links">
|
|
||||||
<a class="items-list" href="feature-page-title-style-1.html">Page Title Style 1</a>
|
|
||||||
<a class="items-list" href="feature-page-title-style-2.html">Page Title Style 2</a>
|
|
||||||
<a class="items-list" href="feature-page-title-style-3.html">Page Title Style 3</a>
|
|
||||||
<a class="items-list" href="feature-page-title-style-4.html">Page Title Style 4</a>
|
|
||||||
<a class="items-list" href="feature-page-title-style-5.html">Page Title Style 5</a>
|
|
||||||
<a class="items-list" href="feature-page-title-style-6.html">Page Title Style 6</a>
|
|
||||||
</div>
|
|
||||||
<a class="items-list" href="#footer-style-links" data-toggle="collapse">Footer<span><i class="fa fa-caret-down arrow"></i></span></a>
|
|
||||||
<div class="collapse sub-menu mega-sub-menu-links" id="footer-style-links">
|
|
||||||
<a class="items-list" href="feature-footer-style-1.html">Footer Style 1</a>
|
|
||||||
<a class="items-list" href="feature-footer-style-2.html">Footer Style 2</a>
|
|
||||||
<a class="items-list" href="feature-footer-style-3.html">Footer Style 3</a>
|
|
||||||
<a class="items-list" href="feature-footer-style-4.html">Footer Style 4</a>
|
|
||||||
<a class="items-list" href="feature-footer-style-5.html">Footer Style 5</a>
|
|
||||||
</div>
|
|
||||||
<a class="items-list" href="#f-blog-links" data-toggle="collapse">Blog<span><i class="fa fa-caret-down arrow"></i></span></a>
|
|
||||||
<div class="collapse sub-menu mega-sub-menu-links" id="f-blog-links">
|
|
||||||
<a class="items-list" href="blog-listing-left-sidebar.html">Blog Listing Left Sidebar</a>
|
|
||||||
<a class="items-list" href="blog-listing-right-sidebar.html">Blog Listing Right Sidebar</a>
|
|
||||||
<a class="items-list" href="blog-detail-left-sidebar.html">Blog Detail Left Sidebar</a>
|
|
||||||
<a class="items-list" href="blog-detail-right-sidebar.html">Blog Detail Right Sidebar</a>
|
|
||||||
</div>
|
|
||||||
<a class="items-list" href="#f-gallery-links" data-toggle="collapse">Gallery<span><i class="fa fa-caret-down arrow"></i></span></a>
|
|
||||||
<div class="collapse sub-menu mega-sub-menu-links" id="f-gallery-links">
|
|
||||||
<a class="items-list" href="gallery-masonry.html">Gallery Masonry</a>
|
|
||||||
<a class="items-list" href="gallery-2-columns.html">Gallery 2 Columns</a>
|
|
||||||
<a class="items-list" href="gallery-3-columns.html">Gallery 3 Columns</a>
|
|
||||||
<a class="items-list" href="gallery-4-columns.html">Gallery 4 Columns</a>
|
|
||||||
</div>
|
|
||||||
<a class="items-list" href="#f-forms-links" data-toggle="collapse">Forms<span><i class="fa fa-caret-down arrow"></i></span></a>
|
|
||||||
<div class="collapse sub-menu mega-sub-menu-links" id="f-forms-links">
|
|
||||||
<a class="items-list" href="login-1.html">Login 1</a>
|
|
||||||
<a class="items-list" href="login-2.html">Login 2</a>
|
|
||||||
<a class="items-list" href="registration-1.html">Registration 1</a>
|
|
||||||
<a class="items-list" href="registration-2.html">Registration 2</a>
|
|
||||||
<a class="items-list" href="forgot-password-1.html">Forgot Password 1</a>
|
|
||||||
<a class="items-list" href="forgot-password-2.html">Forgot Password 2</a>
|
|
||||||
</div>
|
|
||||||
</div><!-- end sub-menu -->
|
|
||||||
|
|
||||||
<a class="items-list" href="#pages-links" data-toggle="collapse"><span><i class="fa fa-clone link-icon"></i></span>Pages<span><i class="fa fa-chevron-down arrow"></i></span></a>
|
|
||||||
<div class="collapse sub-menu" id="pages-links">
|
|
||||||
<div class="list-group-heading ">Standard <span>Pages</span></div>
|
|
||||||
<a class="items-list" href="about-us-1.html">About Us 1</a>
|
|
||||||
<a class="items-list" href="about-us-2.html">About Us 2</a>
|
|
||||||
<a class="items-list" href="services-1.html">Services 1</a>
|
|
||||||
<a class="items-list" href="services-2.html">Services 2</a>
|
|
||||||
<a class="items-list" href="team-1.html">Our Team 1</a>
|
|
||||||
<a class="items-list" href="team-2.html">Our Team 2</a>
|
|
||||||
<a class="items-list" href="contact-us-1.html">Contact Us 1</a>
|
|
||||||
<a class="items-list" href="contact-us-2.html">Contact Us 2</a>
|
|
||||||
<div class="list-group-heading ">User <span>Dashboard</span></div>
|
|
||||||
<a class="items-list" href="dashboard-1.html">Dashboard 1</a>
|
|
||||||
<a class="items-list" href="dashboard-2.html">Dashboard 2</a>
|
|
||||||
<a class="items-list" href="user-profile.html">User Profile</a>
|
|
||||||
<a class="items-list" href="booking.html">Booking</a>
|
|
||||||
<a class="items-list" href="wishlist.html">Wishlist</a>
|
|
||||||
<a class="items-list" href="cards.html">Cards</a>
|
|
||||||
<div class="list-group-heading ">Special <span>Pages</span></div>
|
|
||||||
<a class="items-list" href="error-page-1.html">404 Page 1</a>
|
|
||||||
<a class="items-list" href="error-page-2.html">404 Page 2</a>
|
|
||||||
<a class="items-list" href="coming-soon-1.html">Coming Soon 1</a>
|
|
||||||
<a class="items-list" href="coming-soon-2.html">Coming Soon 2</a>
|
|
||||||
<a class="items-list" href="faq-left-sidebar.html">FAQ Left Sidebar</a>
|
|
||||||
<a class="items-list" href="faq-right-sidebar.html">FAQ Right Sidebar</a>
|
|
||||||
<a class="items-list" href="testimonials-1.html">Testimonials 1</a>
|
|
||||||
<a class="items-list" href="testimonials-2.html">Testimonials 2</a>
|
|
||||||
<div class="list-group-heading ">Extra <span>Pages</span></div>
|
|
||||||
<a class="items-list" href="before-you-fly.html">Before Fly</a>
|
|
||||||
<a class="items-list" href="travel-insurance.html">Travel Insurance</a>
|
|
||||||
<a class="items-list" href="travel-guide.html">Travel Guide</a>
|
|
||||||
<a class="items-list" href="holidays.html">Holidays</a>
|
|
||||||
<a class="items-list" href="thank-you.html">Thank You</a>
|
|
||||||
<a class="items-list" href="payment-success.html">Payment Success</a>
|
|
||||||
<a class="items-list" href="pricing-table-1.html">Pricing Table 1</a>
|
|
||||||
<a class="items-list" href="pricing-table-2.html">Pricing Table 2</a>
|
|
||||||
<a class="items-list" href="popup-ad.html">Popup Ad</a>
|
|
||||||
</div><!-- end sub-menu -->
|
|
||||||
|
|
||||||
</div><!-- End list-group panel -->
|
|
||||||
</div><!-- End main-menu -->
|
|
||||||
</nav>
|
|
||||||
</div><!-- End sidenav-content -->
|
|
||||||
|
|
||||||
{% block "content" %}
|
{% block "content" %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@ -462,8 +270,6 @@
|
||||||
<h3 class="footer-heading">Kontakt</h3>
|
<h3 class="footer-heading">Kontakt</h3>
|
||||||
<ul class="list-unstyled">
|
<ul class="list-unstyled">
|
||||||
<li><span><i class="fa fa-map-marker"></i></span>Think:Put<br>Die Agentur für Denken & Tun<br>Kolingasse 10/10<br>1090 Wien</li>
|
<li><span><i class="fa fa-map-marker"></i></span>Think:Put<br>Die Agentur für Denken & Tun<br>Kolingasse 10/10<br>1090 Wien</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>
|
</ul>
|
||||||
</div><!-- end columns -->
|
</div><!-- end columns -->
|
||||||
|
|
||||||
|
|
24
templates/localauth/verify.html
Normal file
24
templates/localauth/verify.html
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
{% extends "frontend/base.html" %}
|
||||||
|
{% load i18n %}
|
||||||
|
{% load bootstrap4 %}
|
||||||
|
{% 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 "Benutzerprofil verifizieren" %}</h2>
|
||||||
|
|
||||||
|
<form method="POST">
|
||||||
|
{% csrf_token %}
|
||||||
|
{% bootstrap_form form %}
|
||||||
|
<button class="btn btn-orange btn-block">{% trans "Verifizieren" %}</button>
|
||||||
|
</div>
|
||||||
|
</div><!-- end columns -->
|
||||||
|
</div><!-- end row -->
|
||||||
|
</div><!-- end container -->
|
||||||
|
</div><!-- end coming-soon-text -->
|
||||||
|
</section><!-- end innerpage-wrapper -->
|
||||||
|
{% endblock %}
|
21
templates/partners/profile.html
Normal file
21
templates/partners/profile.html
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
{% extends "frontend/base.html" %}
|
||||||
|
{% load i18n %}
|
||||||
|
{% load bootstrap4 %}
|
||||||
|
{% 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">
|
||||||
|
<h2>{% trans "Profildaten" %}</h2>
|
||||||
|
<form method="POST">
|
||||||
|
{% csrf_token %}
|
||||||
|
{% bootstrap_form form %}
|
||||||
|
<button class="btn btn-orange btn-block">{% trans "Anwenden" %}</button>
|
||||||
|
</div><!-- end columns -->
|
||||||
|
</div><!-- end row -->
|
||||||
|
</div><!-- end container -->
|
||||||
|
</div><!-- end coming-soon-text -->
|
||||||
|
</section><!-- end innerpage-wrapper -->
|
||||||
|
{% endblock %}
|
25
templates/partners/signup.html
Normal file
25
templates/partners/signup.html
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
{% extends "frontend/base.html" %}
|
||||||
|
{% load i18n %}
|
||||||
|
{% load bootstrap4 %}
|
||||||
|
{% 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">
|
||||||
|
<h2>{% trans "Als Partner registrieren" %}</h2>
|
||||||
|
<p>Sie haben Interesse, mit Ihrem Hotel an JourneyJoker teilzunehmen?</p>
|
||||||
|
<p>Füllen Sie einfach folgendes Formular aus, um sich zu registrieren.</p>
|
||||||
|
<p>Nach einer kurzen Überprüfung Ihrer Daten können Sie dann Ihre Unterkunft in unserem System anlegen und schon kann es losgehen!</p>
|
||||||
|
|
||||||
|
<form method="POST">
|
||||||
|
{% csrf_token %}
|
||||||
|
{% bootstrap_form form %}
|
||||||
|
<button class="btn btn-orange btn-block">{% trans "Anwenden" %}</button>
|
||||||
|
</div><!-- end columns -->
|
||||||
|
</div><!-- end row -->
|
||||||
|
</div><!-- end container -->
|
||||||
|
</div><!-- end coming-soon-text -->
|
||||||
|
</section><!-- end innerpage-wrapper -->
|
||||||
|
{% endblock %}
|
|
@ -93,9 +93,9 @@ AUTH_PASSWORD_VALIDATORS = [
|
||||||
# Internationalization
|
# Internationalization
|
||||||
# https://docs.djangoproject.com/en/3.1/topics/i18n/
|
# https://docs.djangoproject.com/en/3.1/topics/i18n/
|
||||||
|
|
||||||
LANGUAGE_CODE = 'en-us'
|
LANGUAGE_CODE = 'de'
|
||||||
|
|
||||||
TIME_ZONE = 'UTC'
|
TIME_ZONE = 'Europe/Vienna'
|
||||||
|
|
||||||
USE_I18N = True
|
USE_I18N = True
|
||||||
|
|
||||||
|
|
|
@ -17,9 +17,10 @@ from django.contrib import admin
|
||||||
from django.urls import path, include
|
from django.urls import path, include
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('admin/', admin.site.urls),
|
path('admin_area/', admin.site.urls),
|
||||||
path('', include('public.urls'), name="frontend"),
|
path('', include('public.urls'), name="frontend"),
|
||||||
path('auth/', include('localauth.urls'), name="localauth"),
|
path('auth/', include('localauth.urls'), name="localauth"),
|
||||||
path('auction/', include('auction.urls'), name="auction"),
|
path('auction/', include('auction.urls'), name="auction"),
|
||||||
path('payment/', include('payment.urls'), name="payment"),
|
path('payment/', include('payment.urls'), name="payment"),
|
||||||
|
path('partners/', include('partners.urls'), name="partners"),
|
||||||
]
|
]
|
||||||
|
|
Loading…
Reference in a new issue