Merge branch 'master' into task/3553
This commit is contained in:
commit
6b77d2eaff
11 changed files with 73 additions and 44 deletions
18
Changelog
18
Changelog
|
@ -1,20 +1,22 @@
|
||||||
|
1.0.22: 2017-07-28
|
||||||
|
* #3593: [datacenterlight] Removed underbars between social icons in index
|
||||||
|
* #3509: [datacenterlight, hosting] Made navbar transparent and removed mobile navbar bug in login/signup/reset-password
|
||||||
|
* #3592: [datacenterlight] Changed “Order Now” button text to “Continue/weiter”
|
||||||
|
* #3579: [datacenterlight] Removed “blinks” on click on navbar menus
|
||||||
|
* #3577: [datacenterlight] Added backend CPU, RAM, SSD fields validation
|
||||||
|
* #3615: [datacenterlight] Decoupled landing VM templates from OpenNebula
|
||||||
|
* #3604: [datacenterlight, hosting] Font colour change for better visibility in signup/login/password request footer links
|
||||||
|
[all] Introduced ENABLE_DEBUG_LOGGING
|
||||||
|
* #3542: [datacenterlight, hosting] Fixed warning messages and deprecated url
|
||||||
1.0.21: 2017-07-21
|
1.0.21: 2017-07-21
|
||||||
* #3591: [datacenterlight, payment] Fixed card holder name to appear on Confirm Order page
|
* #3591: [datacenterlight, payment] Fixed card holder name to appear on Confirm Order page
|
||||||
* #3558: [datacenterlight] Changed font family and background color for header
|
* #3558: [datacenterlight] Changed font family and background color for header
|
||||||
* #3581: [datacenterlight] Lead font weight change
|
* #3581: [datacenterlight] Lead font weight change
|
||||||
* #3584: [all] Add flag is_superuser=True in MyUserManager
|
* #3584: [all] Add flag is_superuser=True in MyUserManager
|
||||||
1.0.20: 2017-07-18
|
1.0.20: 2017-07-18
|
||||||
* #3590: [digitalglarus] Added impact hub partner logo and text in digitalglarus
|
|
||||||
[datacenterlight, hosting] Fixed overlapping of date and billing address in the mobile view
|
|
||||||
* #3580: [datacenterlight, hosting] Introduced newly designed payment page. Cust1.0.20: 2017-07-18
|
|
||||||
* #3590: [digitalglarus] Added impact hub partner logo and text in digitalglarus
|
* #3590: [digitalglarus] Added impact hub partner logo and text in digitalglarus
|
||||||
[datacenterlight, hosting] Fixed overlapping of date and billing address in the mobile view
|
[datacenterlight, hosting] Fixed overlapping of date and billing address in the mobile view
|
||||||
* #3580: [datacenterlight, hosting] Introduced newly designed payment page. Customized Stripe credit card input fields
|
* #3580: [datacenterlight, hosting] Introduced newly designed payment page. Customized Stripe credit card input fields
|
||||||
* #3568: [all] Improved the way of adding Google analytics (ga) code. We now have ga code for ungleich, digitalglarus, blog, hosting
|
|
||||||
and datacenterlight
|
|
||||||
* #3564: [datacenterlight] Improved calculator form validations, both client side and server side
|
|
||||||
[datacenterlight] Changed "Place order" button to "Submit" in the payment page
|
|
||||||
* #3540: [datacenterlight] Improved credit card section with Stripe clarification texts and corresponding DE translationsomized Stripe credit card input fields
|
|
||||||
* #3568: [all] Improved the way of adding Google analytics (ga) code. We now have ga code for ungleich, digitalglarus, blog, hosting
|
* #3568: [all] Improved the way of adding Google analytics (ga) code. We now have ga code for ungleich, digitalglarus, blog, hosting
|
||||||
and datacenterlight
|
and datacenterlight
|
||||||
* #3564: [datacenterlight] Improved calculator form validations, both client side and server side
|
* #3564: [datacenterlight] Improved calculator form validations, both client side and server side
|
||||||
|
|
|
@ -4,9 +4,9 @@ from .views import IndexView, LoginView, ContactView
|
||||||
|
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
url(r'^/?$', IndexView.as_view(), name='index'),
|
url(r'^$', IndexView.as_view(), name='index'),
|
||||||
url(r'/login/', LoginView.as_view(), name='login'),
|
url(r'login/', LoginView.as_view(), name='login'),
|
||||||
url(r'/contact', ContactView.as_view(), name='contact'),
|
url(r'contact', ContactView.as_view(), name='contact'),
|
||||||
# url(r'^/beta-program/?$', BetaProgramView.as_view(), name='beta'),
|
# url(r'^/beta-program/?$', BetaProgramView.as_view(), name='beta'),
|
||||||
# url(r'^/landing/?$', LandingProgramView.as_view(), name='landing'),
|
# url(r'^/landing/?$', LandingProgramView.as_view(), name='landing'),
|
||||||
]
|
]
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-12">
|
<div class="col-lg-12">
|
||||||
|
|
||||||
<ul class="list-inline">
|
<ul class="list-inline">
|
||||||
{% if request.resolver_match.url_name == "index" %}
|
{% if request.resolver_match.url_name == "index" %}
|
||||||
<li>
|
<li>
|
||||||
|
@ -45,7 +45,7 @@
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p class="copyright text-muted small">Copyright © ungleich GmbH {% now "Y" %}. All Rights Reserved</p>
|
<p class="copyright text-muted small">Copyright © ungleich GmbH {% now "Y" %}. All Rights Reserved</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -5,13 +5,13 @@ from .views import IndexView, BetaProgramView, LandingProgramView, BetaAccessVie
|
||||||
|
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
url(r'^/?$', IndexView.as_view(), name='index'),
|
url(r'^$', IndexView.as_view(), name='index'),
|
||||||
url(r'^/whydatacenterlight/?$', WhyDataCenterLightView.as_view(), name='whydatacenterlight'),
|
url(r'^whydatacenterlight/?$', WhyDataCenterLightView.as_view(), name='whydatacenterlight'),
|
||||||
url(r'^/beta-program/?$', BetaProgramView.as_view(), name='beta'),
|
url(r'^beta-program/?$', BetaProgramView.as_view(), name='beta'),
|
||||||
url(r'^/landing/?$', LandingProgramView.as_view(), name='landing'),
|
url(r'^landing/?$', LandingProgramView.as_view(), name='landing'),
|
||||||
url(r'^/pricing/?$', PricingView.as_view(), name='pricing'),
|
url(r'^pricing/?$', PricingView.as_view(), name='pricing'),
|
||||||
url(r'^/payment/?$', PaymentOrderView.as_view(), name='payment'),
|
url(r'^payment/?$', PaymentOrderView.as_view(), name='payment'),
|
||||||
url(r'^/order-confirmation/?$', OrderConfirmationView.as_view(), name='order_confirmation'),
|
url(r'^order-confirmation/?$', OrderConfirmationView.as_view(), name='order_confirmation'),
|
||||||
url(r'^/order-success/?$', SuccessView.as_view(), name='order_success'),
|
url(r'^order-success/?$', SuccessView.as_view(), name='order_success'),
|
||||||
url(r'^/beta_access?$', BetaAccessView.as_view(), name='beta_access'),
|
url(r'^beta_access?$', BetaAccessView.as_view(), name='beta_access'),
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
from django.conf.urls import url
|
from django.conf.urls import url
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
from django.contrib.auth import views as auth_views
|
||||||
|
|
||||||
from . import views
|
from . import views
|
||||||
from .views import ContactView, IndexView, HistoryView, LoginView, SignupView,\
|
from .views import ContactView, IndexView, HistoryView, LoginView, SignupView,\
|
||||||
|
@ -20,7 +21,7 @@ urlpatterns = [
|
||||||
url(_(r'contact/?$'), ContactView.as_view(), name='contact'),
|
url(_(r'contact/?$'), ContactView.as_view(), name='contact'),
|
||||||
url(_(r'login/?$'), LoginView.as_view(), name='login'),
|
url(_(r'login/?$'), LoginView.as_view(), name='login'),
|
||||||
url(_(r'signup/?$'), SignupView.as_view(), name='signup'),
|
url(_(r'signup/?$'), SignupView.as_view(), name='signup'),
|
||||||
url(r'^logout/?$', 'django.contrib.auth.views.logout',
|
url(r'^logout/?$', auth_views.logout,
|
||||||
{'next_page': '/digitalglarus/login?logged_out=true'}, name='logout'),
|
{'next_page': '/digitalglarus/login?logged_out=true'}, name='logout'),
|
||||||
url(r'reset-password/?$', PasswordResetView.as_view(), name='reset_password'),
|
url(r'reset-password/?$', PasswordResetView.as_view(), name='reset_password'),
|
||||||
url(r'reset-password-confirm/(?P<uidb64>[0-9A-Za-z]+)-(?P<token>.+)/$',
|
url(r'reset-password-confirm/(?P<uidb64>[0-9A-Za-z]+)-(?P<token>.+)/$',
|
||||||
|
|
|
@ -199,13 +199,11 @@ DATABASES = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
AUTHENTICATION_BACKENDS = (
|
AUTHENTICATION_BACKENDS = (
|
||||||
'guardian.backends.ObjectPermissionBackend',
|
'guardian.backends.ObjectPermissionBackend',
|
||||||
'django.contrib.auth.backends.ModelBackend',
|
'django.contrib.auth.backends.ModelBackend',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
# Internationalization
|
# Internationalization
|
||||||
# https://docs.djangoproject.com/en/1.7/topics/i18n/
|
# https://docs.djangoproject.com/en/1.7/topics/i18n/
|
||||||
|
|
||||||
|
@ -464,7 +462,6 @@ META_USE_SITES = True
|
||||||
PARLER_LANGUAGES = {1: ({'code': 'en-us'}, {'code': 'de'},)}
|
PARLER_LANGUAGES = {1: ({'code': 'en-us'}, {'code': 'de'},)}
|
||||||
AUTH_USER_MODEL = 'membership.CustomUser'
|
AUTH_USER_MODEL = 'membership.CustomUser'
|
||||||
|
|
||||||
|
|
||||||
# PAYMENT
|
# PAYMENT
|
||||||
|
|
||||||
STRIPE_DESCRIPTION_ON_PAYMENT = "Payment for ungleich GmbH services"
|
STRIPE_DESCRIPTION_ON_PAYMENT = "Payment for ungleich GmbH services"
|
||||||
|
@ -481,7 +478,6 @@ STRIPE_API_PUBLIC_KEY = env('STRIPE_API_PUBLIC_KEY')
|
||||||
ANONYMOUS_USER_NAME = 'anonymous@ungleich.ch'
|
ANONYMOUS_USER_NAME = 'anonymous@ungleich.ch'
|
||||||
GUARDIAN_GET_INIT_ANONYMOUS_USER = 'membership.models.get_anonymous_user_instance'
|
GUARDIAN_GET_INIT_ANONYMOUS_USER = 'membership.models.get_anonymous_user_instance'
|
||||||
|
|
||||||
|
|
||||||
#############################################
|
#############################################
|
||||||
# configurations for opennebula-integration #
|
# configurations for opennebula-integration #
|
||||||
#############################################
|
#############################################
|
||||||
|
@ -508,7 +504,6 @@ OPENNEBULA_PORT = env('OPENNEBULA_PORT')
|
||||||
# default value is /RPC2
|
# default value is /RPC2
|
||||||
OPENNEBULA_ENDPOINT = env('OPENNEBULA_ENDPOINT')
|
OPENNEBULA_ENDPOINT = env('OPENNEBULA_ENDPOINT')
|
||||||
|
|
||||||
|
|
||||||
# dcl email configurations
|
# dcl email configurations
|
||||||
DCL_TEXT = env('DCL_TEXT')
|
DCL_TEXT = env('DCL_TEXT')
|
||||||
DCL_SUPPORT_FROM_ADDRESS = env('DCL_SUPPORT_FROM_ADDRESS')
|
DCL_SUPPORT_FROM_ADDRESS = env('DCL_SUPPORT_FROM_ADDRESS')
|
||||||
|
@ -526,9 +521,31 @@ GOOGLE_ANALYTICS_PROPERTY_IDS = {
|
||||||
'dynamicweb-staging.ungleich.ch': 'staging'
|
'dynamicweb-staging.ungleich.ch': 'staging'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ENABLE_DEBUG_LOGGING = bool_env('ENABLE_DEBUG_LOGGING')
|
||||||
|
|
||||||
|
if ENABLE_DEBUG_LOGGING:
|
||||||
|
LOGGING = {
|
||||||
|
'version': 1,
|
||||||
|
'disable_existing_loggers': False,
|
||||||
|
'handlers': {
|
||||||
|
'file': {
|
||||||
|
'level': 'DEBUG',
|
||||||
|
'class': 'logging.FileHandler',
|
||||||
|
'filename': "{PROJECT_DIR}/debug.log".format(PROJECT_DIR=PROJECT_DIR),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'loggers': {
|
||||||
|
'django': {
|
||||||
|
'handlers': ['file'],
|
||||||
|
'level': 'DEBUG',
|
||||||
|
'propagate': True,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
DEBUG = bool_env('DEBUG')
|
DEBUG = bool_env('DEBUG')
|
||||||
|
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
from .local import * # flake8: noqa
|
from .local import * # flake8: noqa
|
||||||
else:
|
else:
|
||||||
from .prod import * # flake8: noqa
|
from .prod import * # flake8: noqa
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
from django.conf.urls import patterns, include, url
|
from django.conf.urls import include, url
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
# deprecated in version 1.8
|
|
||||||
from django.conf.urls.i18n import i18n_patterns
|
from django.conf.urls.i18n import i18n_patterns
|
||||||
from django.conf.urls.static import static
|
from django.conf.urls.static import static
|
||||||
|
from django.views import i18n, static as static_view
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from hosting.views import RailsHostingView, DjangoHostingView, NodeJSHostingView
|
from hosting.views import RailsHostingView, DjangoHostingView, NodeJSHostingView
|
||||||
|
@ -22,17 +22,17 @@ urlpatterns = [url(r'^index.html$', LandingView.as_view()),
|
||||||
url(r'^nosystemd/', include('nosystemd.urls', namespace="nosystemd")),
|
url(r'^nosystemd/', include('nosystemd.urls', namespace="nosystemd")),
|
||||||
url(r'^taggit_autosuggest/', include('taggit_autosuggest.urls')),
|
url(r'^taggit_autosuggest/', include('taggit_autosuggest.urls')),
|
||||||
url(r'^jsi18n/(?P<packages>\S+?)/$',
|
url(r'^jsi18n/(?P<packages>\S+?)/$',
|
||||||
'django.views.i18n.javascript_catalog'),
|
i18n.javascript_catalog),
|
||||||
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
||||||
|
|
||||||
# note the django CMS URLs included via i18n_patterns
|
# note the django CMS URLs included via i18n_patterns
|
||||||
urlpatterns += i18n_patterns('',
|
urlpatterns += i18n_patterns(
|
||||||
url(r'^/?$', LandingView.as_view()),
|
url(r'^$', LandingView.as_view()),
|
||||||
url(r'^admin/', include(admin.site.urls)),
|
url(r'^admin/', include(admin.site.urls)),
|
||||||
url(r'^datacenterlight', include('datacenterlight.urls', namespace="datacenterlight")),
|
url(r'^datacenterlight/', include('datacenterlight.urls', namespace="datacenterlight")),
|
||||||
url(r'^hosting/', RedirectView.as_view(
|
url(r'^hosting/', RedirectView.as_view(
|
||||||
url=reverse_lazy('hosting:login')), name='redirect_hosting_login'),
|
url=reverse_lazy('hosting:login')), name='redirect_hosting_login'),
|
||||||
url(r'^alplora', include('alplora.urls', namespace="alplora")),
|
url(r'^alplora/', include('alplora.urls', namespace="alplora")),
|
||||||
url(r'^membership/', include(membership_urls)),
|
url(r'^membership/', include(membership_urls)),
|
||||||
url(r'^digitalglarus/', include('digitalglarus.urls',
|
url(r'^digitalglarus/', include('digitalglarus.urls',
|
||||||
namespace="digitalglarus")),
|
namespace="digitalglarus")),
|
||||||
|
@ -43,11 +43,11 @@ urlpatterns += i18n_patterns('',
|
||||||
url(r'^blog/', include('ungleich.urls', namespace='ungleich')),
|
url(r'^blog/', include('ungleich.urls', namespace='ungleich')),
|
||||||
url(r'^', include('cms.urls'))
|
url(r'^', include('cms.urls'))
|
||||||
)
|
)
|
||||||
urlpatterns += patterns('',
|
urlpatterns += [
|
||||||
url(r'^media/(?P<path>.*)$',
|
url(r'^media/(?P<path>.*)$',
|
||||||
'django.views.static.serve', {
|
static_view.serve, {
|
||||||
'document_root': settings.MEDIA_ROOT,
|
'document_root': settings.MEDIA_ROOT,
|
||||||
}),
|
}),
|
||||||
)
|
]
|
||||||
if settings.DEBUG:
|
if settings.DEBUG:
|
||||||
urlpatterns += patterns('', url(r'^__debug__/', include(debug_toolbar.urls)))
|
urlpatterns += [url(r'^__debug__/', include(debug_toolbar.urls))]
|
||||||
|
|
|
@ -714,3 +714,8 @@ a.unlink:hover {
|
||||||
width: 100% !important;
|
width: 100% !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.footer-light a:hover, .footer-light a:focus, .footer-light a:active {
|
||||||
|
color: #ddd;
|
||||||
|
}
|
|
@ -118,7 +118,9 @@
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
{% else %}
|
{% else %}
|
||||||
{% include "datacenterlight/includes/_footer.html" %}
|
<div class="footer-light">
|
||||||
|
{% include "datacenterlight/includes/_footer.html" %}
|
||||||
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<!-- jQuery -->
|
<!-- jQuery -->
|
||||||
<script src="{% static 'hosting/js/jquery.js' %}"></script>
|
<script src="{% static 'hosting/js/jquery.js' %}"></script>
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
from django.conf.urls import url
|
from django.conf.urls import url
|
||||||
|
from django.contrib.auth import views as auth_views
|
||||||
|
|
||||||
from .views import DjangoHostingView, RailsHostingView, PaymentVMView,\
|
from .views import DjangoHostingView, RailsHostingView, PaymentVMView,\
|
||||||
NodeJSHostingView, LoginView, SignupView, SignupValidateView, SignupValidatedView, IndexView, \
|
NodeJSHostingView, LoginView, SignupView, SignupValidateView, SignupValidatedView, IndexView, \
|
||||||
|
@ -39,7 +40,7 @@ urlpatterns = [
|
||||||
url(r'reset-password/?$', PasswordResetView.as_view(), name='reset_password'),
|
url(r'reset-password/?$', PasswordResetView.as_view(), name='reset_password'),
|
||||||
url(r'reset-password-confirm/(?P<uidb64>[0-9A-Za-z]+)-(?P<token>.+)/$',
|
url(r'reset-password-confirm/(?P<uidb64>[0-9A-Za-z]+)-(?P<token>.+)/$',
|
||||||
PasswordResetConfirmView.as_view(), name='reset_password_confirm'),
|
PasswordResetConfirmView.as_view(), name='reset_password_confirm'),
|
||||||
url(r'^logout/?$', 'django.contrib.auth.views.logout',
|
url(r'^logout/?$', auth_views.logout,
|
||||||
{'next_page': '/hosting/login?logged_out=true'}, name='logout'),
|
{'next_page': '/hosting/login?logged_out=true'}, name='logout'),
|
||||||
url(r'^validate/(?P<validate_slug>.*)/$', SignupValidatedView.as_view(), name='validate')
|
url(r'^validate/(?P<validate_slug>.*)/$', SignupValidatedView.as_view(), name='validate')
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
from django.conf.urls import url
|
from django.conf.urls import url
|
||||||
|
from django.contrib.auth import views as auth_views
|
||||||
|
|
||||||
from .views import LandingView, LoginView, SignupView, PasswordResetView,\
|
from .views import LandingView, LoginView, SignupView, PasswordResetView,\
|
||||||
PasswordResetConfirmView, DonationView, DonationDetailView, ChangeDonatorStatusDetailView,\
|
PasswordResetConfirmView, DonationView, DonationDetailView, ChangeDonatorStatusDetailView,\
|
||||||
|
@ -8,7 +9,7 @@ urlpatterns = [
|
||||||
url(r'^$', LandingView.as_view(), name='landing'),
|
url(r'^$', LandingView.as_view(), name='landing'),
|
||||||
url(r'^login/?$', LoginView.as_view(), name='login'),
|
url(r'^login/?$', LoginView.as_view(), name='login'),
|
||||||
url(r'^signup/?$', SignupView.as_view(), name='signup'),
|
url(r'^signup/?$', SignupView.as_view(), name='signup'),
|
||||||
url(r'^logout/?$', 'django.contrib.auth.views.logout',
|
url(r'^logout/?$', auth_views.logout,
|
||||||
{'next_page': '/nosystemd/login?logged_out=true'}, name='logout'),
|
{'next_page': '/nosystemd/login?logged_out=true'}, name='logout'),
|
||||||
url(r'reset-password/?$', PasswordResetView.as_view(), name='reset_password'),
|
url(r'reset-password/?$', PasswordResetView.as_view(), name='reset_password'),
|
||||||
url(r'reset-password-confirm/(?P<uidb64>[0-9A-Za-z]+)-(?P<token>.+)/$',
|
url(r'reset-password-confirm/(?P<uidb64>[0-9A-Za-z]+)-(?P<token>.+)/$',
|
||||||
|
|
Loading…
Reference in a new issue