Merge branch 'master' into task/4379/price_without_vat
This commit is contained in:
commit
b9d44b510f
13 changed files with 65 additions and 39 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
1.6.5: 2018-04-08
|
||||||
|
* #4396: [ungleich] add favicon to ungleich blog
|
||||||
|
* #4327: [dcl] fix navbar logo repeat
|
||||||
|
* bgfix: [hosting] fix broken footer links
|
||||||
|
* bgfix: [dcl] remove ghost migrations from squashed migration
|
||||||
|
* bgfix: [cms] redirect multi-tenant urls to /cms also
|
||||||
1.6.4: 2018-04-06
|
1.6.4: 2018-04-06
|
||||||
* #4362: [cms] Fix the need of dummy home page for different CMS-based sites
|
* #4362: [cms] Fix the need of dummy home page for different CMS-based sites
|
||||||
1.6.3: 2018-04-05
|
1.6.3: 2018-04-05
|
||||||
|
|
|
@ -8,8 +8,6 @@ import django.db.models.deletion
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
replaces = [('datacenterlight', '0018_auto_20180403_1930'), ('datacenterlight', '0019_auto_20180403_2054')]
|
|
||||||
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
('datacenterlight', '0017_auto_20180329_0056'),
|
('datacenterlight', '0017_auto_20180329_0056'),
|
||||||
('sites', '0002_alter_domain_unique'),
|
('sites', '0002_alter_domain_unique'),
|
||||||
|
|
|
@ -74,6 +74,10 @@ a.list-group-item-danger.active:focus {
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.navbar-brand > img {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
#logoWhite,
|
#logoWhite,
|
||||||
.navbar-transparent #logoBlack {
|
.navbar-transparent #logoBlack {
|
||||||
display: none;
|
display: none;
|
||||||
|
@ -82,7 +86,6 @@ a.list-group-item-danger.active:focus {
|
||||||
#logoBlack,
|
#logoBlack,
|
||||||
.navbar-transparent #logoWhite {
|
.navbar-transparent #logoWhite {
|
||||||
display: block;
|
display: block;
|
||||||
width: 220px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (min-width: 768px) {
|
@media (min-width: 768px) {
|
||||||
|
|
|
@ -89,10 +89,6 @@ textarea {
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.navbar-brand > img {
|
|
||||||
max-height: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 767px) {
|
@media (max-width: 767px) {
|
||||||
.navbar-default .navbar-nav>li>a{
|
.navbar-default .navbar-nav>li>a{
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
|
|
|
@ -4,15 +4,15 @@
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<ul class="list-inline">
|
<ul class="list-inline">
|
||||||
<li>
|
<li>
|
||||||
<a class="url-init" href="{% url 'datacenterlight:index' %}">{% trans "Home" %}</a>
|
<a class="url-init" href="https://{{MULTISITE_CMS_FALLBACK}}">{% trans "Home" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="footer-menu-divider">⋅</li>
|
<li class="footer-menu-divider">⋅</li>
|
||||||
<li>
|
<li>
|
||||||
<a class="url-init" href="{% url 'datacenterlight:index' %}#contact">{% trans "Contact" %}</a>
|
<a class="url-init" href="https://{{MULTISITE_CMS_FALLBACK}}#contact">{% trans "Contact" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="footer-menu-divider">⋅</li>
|
<li class="footer-menu-divider">⋅</li>
|
||||||
<li>
|
<li>
|
||||||
<a class="url-init" href="/cms/terms-of-service">{% trans "Terms of Service" %}</a>
|
<a class="url-init" href="https://{{MULTISITE_CMS_FALLBACK}}/cms/terms-of-service">{% trans "Terms of Service" %}</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ urlpatterns = [
|
||||||
url(r'^g/$', IndexView.as_view(), name='index_g'),
|
url(r'^g/$', IndexView.as_view(), name='index_g'),
|
||||||
url(r'^f/$', IndexView.as_view(), name='index_f'),
|
url(r'^f/$', IndexView.as_view(), name='index_f'),
|
||||||
url(r'^l/$', IndexView.as_view(), name='index_l'),
|
url(r'^l/$', IndexView.as_view(), name='index_l'),
|
||||||
url(r'^new/$', RedirectView.as_view(url='/cms/datacenterlight/'),
|
url(r'^new/$', RedirectView.as_view(url='/cms/'),
|
||||||
name='cms_index'),
|
name='cms_index'),
|
||||||
url(r'^whydatacenterlight/?$', WhyDataCenterLightView.as_view(),
|
url(r'^whydatacenterlight/?$', WhyDataCenterLightView.as_view(),
|
||||||
name='whydatacenterlight'),
|
name='whydatacenterlight'),
|
||||||
|
|
|
@ -57,7 +57,7 @@
|
||||||
ga('send', 'pageview');
|
ga('send', 'pageview');
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<link rel="shortcut icon" href="img/favicon.ico" type="image/x-icon">
|
<link rel="shortcut icon" href="{% static 'digitalglarus/img/favicon.ico' %}" type="image/x-icon">
|
||||||
<style id="igtranslator-color" type="text/css"></style>
|
<style id="igtranslator-color" type="text/css"></style>
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
|
|
||||||
|
@ -87,10 +87,10 @@
|
||||||
height: 100%;
|
height: 100%;
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (min-width: 769px){
|
@media only screen and (min-width: 769px){
|
||||||
.dropdown.home-dropdown-mobile {
|
.dropdown.home-dropdown-mobile {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
@ -99,10 +99,10 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 768px){
|
@media only screen and (max-width: 768px){
|
||||||
.dropdown.home-dropdown-mobile {
|
.dropdown.home-dropdown-mobile {
|
||||||
display: block;
|
display: block;
|
||||||
background-color:
|
background-color:
|
||||||
}
|
}
|
||||||
|
|
||||||
.dropdown.home-dropdown-mobile .dropdown-menu{
|
.dropdown.home-dropdown-mobile .dropdown-menu{
|
||||||
|
@ -164,7 +164,7 @@
|
||||||
<a class="page-scroll" href="#contact">Contact</a>
|
<a class="page-scroll" href="#contact">Contact</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
{% if request.user.is_authenticated %}
|
{% if request.user.is_authenticated %}
|
||||||
<li class="dropdown home-dropdown-mobile open">
|
<li class="dropdown home-dropdown-mobile open">
|
||||||
<a class="dropdown-toggle" role="button" data-toggle="dropdown" href="#">
|
<a class="dropdown-toggle" role="button" data-toggle="dropdown" href="#">
|
||||||
|
@ -177,7 +177,7 @@
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="{% url 'digitalglarus:membership_orders_list' %}"><i class="fa fa-heart-o" aria-hidden="true"></i> {% trans "Membership"%}
|
<a href="{% url 'digitalglarus:membership_orders_list' %}"><i class="fa fa-heart-o" aria-hidden="true"></i> {% trans "Membership"%}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
|
@ -200,7 +200,7 @@
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="{% url 'digitalglarus:membership_orders_list' %}"><i class="fa fa-heart-o" aria-hidden="true"></i> {% trans "Membership"%}
|
<a href="{% url 'digitalglarus:membership_orders_list' %}"><i class="fa fa-heart-o" aria-hidden="true"></i> {% trans "Membership"%}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
|
@ -210,11 +210,11 @@
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
{% else %}
|
{% else %}
|
||||||
<li>
|
<li>
|
||||||
<a class="page-scroll" href="{% url 'digitalglarus:login' %}">Login</a>
|
<a class="page-scroll" href="{% url 'digitalglarus:login' %}">Login</a>
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<!-- <li>
|
<!-- <li>
|
||||||
<a class="page-scroll" href="{% url 'digitalglarus:signup' %}">Sign Up</a>
|
<a class="page-scroll" href="{% url 'digitalglarus:signup' %}">Sign Up</a>
|
||||||
|
@ -227,7 +227,7 @@
|
||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
{% block content %} {% endblock %}
|
{% block content %} {% endblock %}
|
||||||
|
|
||||||
<footer>
|
<footer>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
@ -255,7 +255,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<script type="text/javascript" src="{% static 'digitalglarus/bower_components/jquery/dist/jquery.min.js' %}"></script>
|
<script type="text/javascript" src="{% static 'digitalglarus/bower_components/jquery/dist/jquery.min.js' %}"></script>
|
||||||
|
|
||||||
<!-- jQuery -->
|
<!-- jQuery -->
|
||||||
|
@ -295,7 +295,7 @@
|
||||||
<script type="text/javascript" src="//cdn.jsdelivr.net/jquery/1/jquery.min.js"></script>
|
<script type="text/javascript" src="//cdn.jsdelivr.net/jquery/1/jquery.min.js"></script>
|
||||||
<script type="text/javascript" src="//cdn.jsdelivr.net/momentjs/latest/moment.min.js"></script>
|
<script type="text/javascript" src="//cdn.jsdelivr.net/momentjs/latest/moment.min.js"></script>
|
||||||
<!-- <link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/bootstrap/latest/css/bootstrap.css" />
|
<!-- <link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/bootstrap/latest/css/bootstrap.css" />
|
||||||
-->
|
-->
|
||||||
<!-- Include Date Range Picker -->
|
<!-- Include Date Range Picker -->
|
||||||
<script type="text/javascript" src="//cdn.jsdelivr.net/bootstrap.daterangepicker/2/daterangepicker.js"></script>
|
<script type="text/javascript" src="//cdn.jsdelivr.net/bootstrap.daterangepicker/2/daterangepicker.js"></script>
|
||||||
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.42/js/bootstrap-datetimepicker.min.js
|
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.42/js/bootstrap-datetimepicker.min.js
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
from django.shortcuts import redirect
|
from django.shortcuts import redirect
|
||||||
|
from django.conf import settings
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
|
|
||||||
from opennebula_api.serializers import VirtualMachineTemplateSerializer
|
from opennebula_api.serializers import VirtualMachineTemplateSerializer
|
||||||
|
@ -24,3 +25,10 @@ class ProcessVMSelectionMixin(object):
|
||||||
request.session['next'] = reverse('hosting:payment')
|
request.session['next'] = reverse('hosting:payment')
|
||||||
return redirect(reverse('hosting:login'))
|
return redirect(reverse('hosting:login'))
|
||||||
return redirect(reverse('hosting:payment'))
|
return redirect(reverse('hosting:payment'))
|
||||||
|
|
||||||
|
|
||||||
|
class HostingContextMixin(object):
|
||||||
|
def get_context_data(self, **kwargs):
|
||||||
|
context = super().get_context_data(**kwargs)
|
||||||
|
context['MULTISITE_CMS_FALLBACK'] = settings.MULTISITE_CMS_FALLBACK
|
||||||
|
return context
|
||||||
|
|
|
@ -54,7 +54,7 @@ from .forms import (
|
||||||
HostingUserSignupForm, HostingUserLoginForm, UserHostingKeyForm,
|
HostingUserSignupForm, HostingUserLoginForm, UserHostingKeyForm,
|
||||||
generate_ssh_key_name
|
generate_ssh_key_name
|
||||||
)
|
)
|
||||||
from .mixins import ProcessVMSelectionMixin
|
from .mixins import ProcessVMSelectionMixin, HostingContextMixin
|
||||||
from .models import (
|
from .models import (
|
||||||
HostingOrder, HostingBill, HostingPlan, UserHostingKey, VMDetail
|
HostingOrder, HostingBill, HostingPlan, UserHostingKey, VMDetail
|
||||||
)
|
)
|
||||||
|
@ -213,13 +213,13 @@ class IndexView(View):
|
||||||
return render(request, self.template_name, context)
|
return render(request, self.template_name, context)
|
||||||
|
|
||||||
|
|
||||||
class LoginView(LoginViewMixin):
|
class LoginView(HostingContextMixin, LoginViewMixin):
|
||||||
template_name = "hosting/login.html"
|
template_name = "hosting/login.html"
|
||||||
form_class = HostingUserLoginForm
|
form_class = HostingUserLoginForm
|
||||||
success_url = reverse_lazy('hosting:dashboard')
|
success_url = reverse_lazy('hosting:dashboard')
|
||||||
|
|
||||||
|
|
||||||
class SignupView(CreateView):
|
class SignupView(HostingContextMixin, CreateView):
|
||||||
template_name = 'hosting/signup.html'
|
template_name = 'hosting/signup.html'
|
||||||
form_class = HostingUserSignupForm
|
form_class = HostingUserSignupForm
|
||||||
model = CustomUser
|
model = CustomUser
|
||||||
|
@ -248,7 +248,7 @@ class SignupView(CreateView):
|
||||||
return super(SignupView, self).get(request, *args, **kwargs)
|
return super(SignupView, self).get(request, *args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
class SignupValidateView(TemplateView):
|
class SignupValidateView(HostingContextMixin, TemplateView):
|
||||||
template_name = "hosting/signup_validate.html"
|
template_name = "hosting/signup_validate.html"
|
||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
|
@ -272,7 +272,7 @@ class SignupValidateView(TemplateView):
|
||||||
return context
|
return context
|
||||||
|
|
||||||
|
|
||||||
class SignupValidatedView(SignupValidateView):
|
class SignupValidatedView(SignupValidateView, HostingContextMixin):
|
||||||
template_name = "hosting/signup_validate.html"
|
template_name = "hosting/signup_validate.html"
|
||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
|
@ -307,7 +307,7 @@ class SignupValidatedView(SignupValidateView):
|
||||||
email.send()
|
email.send()
|
||||||
else:
|
else:
|
||||||
home_url = '<a href="' + \
|
home_url = '<a href="' + \
|
||||||
reverse('datacenterlight:index') + \
|
reverse('datacenterlight:cms_index') + \
|
||||||
'">Data Center Light</a>'
|
'">Data Center Light</a>'
|
||||||
message = '{sorry_message} <br />{go_back_to} {hurl}'.format(
|
message = '{sorry_message} <br />{go_back_to} {hurl}'.format(
|
||||||
sorry_message=_("Sorry. Your request is invalid."),
|
sorry_message=_("Sorry. Your request is invalid."),
|
||||||
|
@ -325,7 +325,8 @@ class SignupValidatedView(SignupValidateView):
|
||||||
return super(SignupValidatedView, self).get(request, *args, **kwargs)
|
return super(SignupValidatedView, self).get(request, *args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
class ResendActivationEmailView(ResendActivationLinkViewMixin):
|
class ResendActivationEmailView(HostingContextMixin,
|
||||||
|
ResendActivationLinkViewMixin):
|
||||||
template_name = 'hosting/resend_activation_link.html'
|
template_name = 'hosting/resend_activation_link.html'
|
||||||
form_class = ResendActivationEmailForm
|
form_class = ResendActivationEmailForm
|
||||||
success_url = reverse_lazy('hosting:login')
|
success_url = reverse_lazy('hosting:login')
|
||||||
|
@ -333,7 +334,7 @@ class ResendActivationEmailView(ResendActivationLinkViewMixin):
|
||||||
email_template_name = 'user_activation'
|
email_template_name = 'user_activation'
|
||||||
|
|
||||||
|
|
||||||
class PasswordResetView(PasswordResetViewMixin):
|
class PasswordResetView(HostingContextMixin, PasswordResetViewMixin):
|
||||||
site = 'dcl'
|
site = 'dcl'
|
||||||
template_name = 'hosting/reset_password.html'
|
template_name = 'hosting/reset_password.html'
|
||||||
form_class = PasswordResetRequestForm
|
form_class = PasswordResetRequestForm
|
||||||
|
@ -341,7 +342,8 @@ class PasswordResetView(PasswordResetViewMixin):
|
||||||
template_email_path = 'hosting/emails/'
|
template_email_path = 'hosting/emails/'
|
||||||
|
|
||||||
|
|
||||||
class PasswordResetConfirmView(PasswordResetConfirmViewMixin):
|
class PasswordResetConfirmView(HostingContextMixin,
|
||||||
|
PasswordResetConfirmViewMixin):
|
||||||
template_name = 'hosting/confirm_reset_password.html'
|
template_name = 'hosting/confirm_reset_password.html'
|
||||||
success_url = reverse_lazy('hosting:login')
|
success_url = reverse_lazy('hosting:login')
|
||||||
|
|
||||||
|
|
|
@ -35,6 +35,8 @@
|
||||||
{% render_block "external-css" %}
|
{% render_block "external-css" %}
|
||||||
{% render_block "css" postprocessor "compressor.contrib.sekizai.compress" %}
|
{% render_block "css" postprocessor "compressor.contrib.sekizai.compress" %}
|
||||||
|
|
||||||
|
<link rel="shortcut icon" href="{% static 'ungleich_page/img/favicon.ico' %}"/>
|
||||||
|
|
||||||
<!-- Google analytics -->
|
<!-- Google analytics -->
|
||||||
{% include "google_analytics.html" %}
|
{% include "google_analytics.html" %}
|
||||||
<!-- End Google Analytics -->
|
<!-- End Google Analytics -->
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
.topnav img {
|
#logoWhite,
|
||||||
height: 100%;
|
.navbar-transparent #logoBlack {
|
||||||
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#logoBlack,
|
||||||
.navbar-transparent #logoWhite {
|
.navbar-transparent #logoWhite {
|
||||||
width: 140px;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.navbar-default {
|
.navbar-default {
|
||||||
|
@ -12,6 +14,15 @@
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
.navbar-transparent #logoBlack {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.navbar-transparent #logoWhite {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@media (min-width: 768px) {
|
@media (min-width: 768px) {
|
||||||
.navbar-transparent {
|
.navbar-transparent {
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
<!-- External Fonts -->
|
<!-- External Fonts -->
|
||||||
<link href="//fonts.googleapis.com/css?family=Lato:300,400,600,700" rel="stylesheet" type="text/css">
|
<link href="//fonts.googleapis.com/css?family=Lato:300,400,600,700" rel="stylesheet" type="text/css">
|
||||||
|
|
||||||
<link rel="shortcut icon" href="img/favicon.ico" type="image/x-icon" />
|
<link rel="shortcut icon" href="{% static 'ungleich_page/img/favicon.ico' %}" type="image/x-icon" />
|
||||||
|
|
||||||
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
||||||
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
||||||
|
|
|
@ -50,8 +50,8 @@
|
||||||
<span class="icon-bar"></span>
|
<span class="icon-bar"></span>
|
||||||
<span class="icon-bar"></span>
|
<span class="icon-bar"></span>
|
||||||
</button>
|
</button>
|
||||||
<a href="{% url 'ungleich_page:landing' %}" id="logoBlack" class="navbar-brand topnav"><img src="{% static 'ungleich_page/img/logo_black.svg' %}"></a>
|
<a href="https://ungleich.ch" id="logoBlack" class="navbar-brand topnav"><img src="{% static 'ungleich_page/img/logo_black.svg' %}"></a>
|
||||||
<a href="{% url 'ungleich_page:landing' %}" id="logoWhite" class="navbar-brand topnav"><img src="{% static 'ungleich_page/img/logo_white.svg' %}"></a>
|
<a href="https://ungleich.ch" id="logoWhite" class="navbar-brand topnav"><img src="{% static 'ungleich_page/img/logo_white.svg' %}"></a>
|
||||||
</div>
|
</div>
|
||||||
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
|
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
|
||||||
<!-- Start Navbar collapse-->
|
<!-- Start Navbar collapse-->
|
||||||
|
|
Loading…
Reference in a new issue