Merge branch 'master' into task/4379/price_without_vat

This commit is contained in:
PCoder 2018-04-09 21:20:24 +02:00
commit b9d44b510f
13 changed files with 65 additions and 39 deletions

View file

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

View file

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

View file

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

View file

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

View file

@ -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">&sdot;</li> <li class="footer-menu-divider">&sdot;</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">&sdot;</li> <li class="footer-menu-divider">&sdot;</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>

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -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:// -->

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