merge master and fixed migration conflict
This commit is contained in:
		
				commit
				
					
						39d2697e30
					
				
			
		
					 17 changed files with 219 additions and 63 deletions
				
			
		
							
								
								
									
										12
									
								
								Changelog
									
										
									
									
									
								
							
							
						
						
									
										12
									
								
								Changelog
									
										
									
									
									
								
							|  | @ -1,10 +1,16 @@ | ||||||
| Next release: | Next: | ||||||
|  |     * #3911: [dcl] Integrate resend activation link into dcl landing payment page | ||||||
|  |     * #3972: [hosting] Add ungleich company info to invoice footer | ||||||
|  | 1.2.13: 2017-12-09 | ||||||
|  |     * [cms] Introduce UngleichHeaderBackgroundImageAndTextSliderPlugin that allows to have scrolling images and texts | ||||||
|  |     * [cms] Remove <p> tag for ungleich cms customer item template | ||||||
|  | 1.2.12: 2017-12-09 | ||||||
|  |     * #3594: [digitalglarus] Remove white scroll bar on the right in mobile     | ||||||
|     * #3905: [ungleich] Update ungleich.ch header into a slider |     * #3905: [ungleich] Update ungleich.ch header into a slider | ||||||
|     *        [all] Enable logging custom modules |     *        [all] Enable logging custom modules | ||||||
| 1.2.11: 2017-11-30 | 1.2.11: 2017-11-30 | ||||||
|     * [all] TravisCI: Test against python 3.4.2 only |     * [all] TravisCI: Test against python 3.4.2 only | ||||||
|     * [ungleich] Remove data-replaced image in ungleich CMS services item |     * [ungleich] Remove data-replaced image in ungleich CMS services item plugin template | ||||||
|     plugin template |  | ||||||
| 1.2.10: 2017-11-26 | 1.2.10: 2017-11-26 | ||||||
|     * #3843: [ungleich] Add generic ungleich CMS template |     * #3843: [ungleich] Add generic ungleich CMS template | ||||||
|     * #3672: [all] Clean existing automated tests |     * #3672: [all] Clean existing automated tests | ||||||
|  |  | ||||||
|  | @ -39,7 +39,7 @@ | ||||||
|                         <p> |                         <p> | ||||||
|                             {% trans "Don't have an account yet?" %}<br> |                             {% trans "Don't have an account yet?" %}<br> | ||||||
|                             {% trans "You can sign up by filling in the information below." %}<br> |                             {% trans "You can sign up by filling in the information below." %}<br> | ||||||
|                             <a href="{% url 'hosting:reset_password' %}">{% trans "Forgot password?" %}</a> |                             <a href="{% url 'hosting:reset_password' %}" target="_blank">{% trans "Forgot password?" %}</a> or <a href="{% url 'hosting:resend_activation_link' %}" target="_blank">{% trans "Resend activation link" %}?</a> | ||||||
|                         </p> |                         </p> | ||||||
|                     {% endif %} |                     {% endif %} | ||||||
|                 </div> |                 </div> | ||||||
|  |  | ||||||
|  | @ -235,7 +235,7 @@ fieldset[disabled] .btn-xl.active { | ||||||
| .navbar-default .navbar-brand { | .navbar-default .navbar-brand { | ||||||
| 	font-family: "Helvetica Neue", Helvetica, Arial, cursive; | 	font-family: "Helvetica Neue", Helvetica, Arial, cursive; | ||||||
| 	color: #a1cfd7; | 	color: #a1cfd7; | ||||||
| 	padding-top: 10px; | 	padding-top: 11px; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .navbar-default .navbar-brand:hover, | .navbar-default .navbar-brand:hover, | ||||||
|  |  | ||||||
|  | @ -7,7 +7,7 @@ | ||||||
| 
 | 
 | ||||||
| @media(min-width: 768px) { | @media(min-width: 768px) { | ||||||
|     .order-detail-container { |     .order-detail-container { | ||||||
|         padding: 30px; |         padding: 30px 30px 20px; | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -53,7 +53,7 @@ | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .order-detail-container .order-details { | .order-detail-container .order-details { | ||||||
|     margin-bottom: 30px; |     margin-bottom: 15px; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .order-detail-container .order-details strong { | .order-detail-container .order-details strong { | ||||||
|  | @ -90,3 +90,18 @@ | ||||||
|         width: 16px; |         width: 16px; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | .order_detail_footer { | ||||||
|  |     font-size: 9px; | ||||||
|  |     letter-spacing: 1px; | ||||||
|  |     color: #333333; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .order_detail_footer strong { | ||||||
|  |     font-size: 11px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #virtual_machine_create_form { | ||||||
|  |     padding: 15px 0; | ||||||
|  | } | ||||||
|  | @ -135,9 +135,7 @@ | ||||||
|                     </div> |                     </div> | ||||||
|                 </div> |                 </div> | ||||||
|             </div> |             </div> | ||||||
|             {% if not order %} |  | ||||||
|             <hr> |             <hr> | ||||||
|             {% endif %} |  | ||||||
|         </div> |         </div> | ||||||
|         {% if not order %} |         {% if not order %} | ||||||
|             {% block submit_btn %} |             {% block submit_btn %} | ||||||
|  | @ -155,6 +153,11 @@ | ||||||
|                     </div> |                     </div> | ||||||
|                 </form> |                 </form> | ||||||
|             {% endblock submit_btn %} |             {% endblock submit_btn %} | ||||||
|  |         {% else %} | ||||||
|  |             <div class="order_detail_footer"> | ||||||
|  |                 <strong>ungleich glarus ag</strong>  Bahnhotstrasse 1, 8783 Linthal, Switzerland<br> | ||||||
|  |                 www.datacenterlight.ch  |  info@datacenterlight.ch | ||||||
|  |             </div> | ||||||
|         {% endif %} |         {% endif %} | ||||||
|     {% endif %} |     {% endif %} | ||||||
| </div> | </div> | ||||||
|  |  | ||||||
|  | @ -41,10 +41,8 @@ | ||||||
|                 {% for vm in vms %} |                 {% for vm in vms %} | ||||||
|                     <tr> |                     <tr> | ||||||
|                         <td data-header="ID">{{vm.vm_id}}</td> |                         <td data-header="ID">{{vm.vm_id}}</td> | ||||||
|                     {% if vm.ipv6  %} |                         <td data-header="IPv4">{% if vm.ipv4 %}{{vm.ipv4}}{% endif %}</td> | ||||||
|                         <td data-header="IPv4">{{vm.ipv4}}</td> |                         <td data-header="IPv6">{% if vm.ipv6 %}{{vm.ipv6}}{% endif %}</td> | ||||||
|                         <td data-header="IPv6">{{vm.ipv6}}</td> |  | ||||||
|                     {% endif %} |  | ||||||
|                         <td data-header="{% trans 'Status' %}"> |                         <td data-header="{% trans 'Status' %}"> | ||||||
|                             <strong> |                             <strong> | ||||||
|                                 {% if vm.state == 'ACTIVE' %} |                                 {% if vm.state == 'ACTIVE' %} | ||||||
|  |  | ||||||
|  | @ -8,7 +8,8 @@ from .views import ( | ||||||
|     MarkAsReadNotificationView, PasswordResetView, PasswordResetConfirmView, |     MarkAsReadNotificationView, PasswordResetView, PasswordResetConfirmView, | ||||||
|     HostingPricingView, CreateVirtualMachinesView, HostingBillListView, |     HostingPricingView, CreateVirtualMachinesView, HostingBillListView, | ||||||
|     HostingBillDetailView, SSHKeyDeleteView, SSHKeyCreateView, SSHKeyListView, |     HostingBillDetailView, SSHKeyDeleteView, SSHKeyCreateView, SSHKeyListView, | ||||||
|     SSHKeyChoiceView, DashboardView, SettingsView, ResendActivationEmailView) |     SSHKeyChoiceView, DashboardView, SettingsView, ResendActivationEmailView | ||||||
|  | ) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| urlpatterns = [ | urlpatterns = [ | ||||||
|  |  | ||||||
|  | @ -6,7 +6,9 @@ from .models import ( | ||||||
|     About, AboutItem, SectionWithImage, UngleichServiceItem, UngleichHeader, |     About, AboutItem, SectionWithImage, UngleichServiceItem, UngleichHeader, | ||||||
|     UngleichHeaderItem, UngleichProductItem, UngleichProduct, UngleichCustomer, |     UngleichHeaderItem, UngleichProductItem, UngleichProduct, UngleichCustomer, | ||||||
|     UngleichCustomerItem, UngleichHTMLOnly, UngleichSimpleHeader, |     UngleichCustomerItem, UngleichHTMLOnly, UngleichSimpleHeader, | ||||||
|     UngleichHeaderItemWithVideo |     UngleichHeaderItemWithVideo, | ||||||
|  |     UngleichHeaderWithBackgroundImageSlider, | ||||||
|  |     UngleichHeaderWithBackgroundImageSliderItem, | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @ -241,6 +243,39 @@ class UngleichHeaderItemWithVideoPlugin(CMSPluginBase): | ||||||
|         context = super(UngleichHeaderItemWithVideoPlugin, self).render( |         context = super(UngleichHeaderItemWithVideoPlugin, self).render( | ||||||
|             context, instance, placeholder |             context, instance, placeholder | ||||||
|         ) |         ) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | @plugin_pool.register_plugin | ||||||
|  | class UngleichHeaderBackgroundImageAndTextSliderPlugin(CMSPluginBase): | ||||||
|  |     name = "ungleich Header with Background and Image Slider Plugin" | ||||||
|  |     model = UngleichHeaderWithBackgroundImageSlider | ||||||
|  |     render_template = ( | ||||||
|  |         'ungleich_page/ungleich/header_with_background_image_slider.html' | ||||||
|  |     ) | ||||||
|  |     cache = False | ||||||
|  |     allow_children = True | ||||||
|  |     child_classes = ['UngleichHeaderBackgroundImageAndTextItemPlugin'] | ||||||
|  | 
 | ||||||
|  |     def render(self, context, instance, placeholder): | ||||||
|  |         context['instance'] = instance | ||||||
|  |         return context | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | @plugin_pool.register_plugin | ||||||
|  | class UngleichHeaderBackgroundImageAndTextItemPlugin(CMSPluginBase): | ||||||
|  |     name = "ungleich Header with Background and Image and Text Item Plugin" | ||||||
|  |     model = UngleichHeaderWithBackgroundImageSliderItem | ||||||
|  |     render_template = ( | ||||||
|  |         'ungleich_page/ungleich/_header_with_background_image_slider_item.html' | ||||||
|  |     ) | ||||||
|  |     cache = False | ||||||
|  |     require_parent = True | ||||||
|  |     parent_classes = ['UngleichHeaderBackgroundImageAndTextSliderPlugin'] | ||||||
|  | 
 | ||||||
|  |     def render(self, context, instance, placeholder): | ||||||
|  |         context = super( | ||||||
|  |             UngleichHeaderBackgroundImageAndTextItemPlugin, self | ||||||
|  |         ).render(context, instance, placeholder) | ||||||
|         context['instance'] = instance |         context['instance'] = instance | ||||||
|         return context |         return context | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -0,0 +1,43 @@ | ||||||
|  | # -*- coding: utf-8 -*- | ||||||
|  | # Generated by Django 1.9.4 on 2017-12-02 07:30 | ||||||
|  | from __future__ import unicode_literals | ||||||
|  | 
 | ||||||
|  | from django.db import migrations, models | ||||||
|  | import django.db.models.deletion | ||||||
|  | import djangocms_text_ckeditor.fields | ||||||
|  | import filer.fields.image | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class Migration(migrations.Migration): | ||||||
|  | 
 | ||||||
|  |     dependencies = [ | ||||||
|  |         ('filer', '0004_auto_20160328_1434'), | ||||||
|  |         ('cms', '0014_auto_20160404_1908'), | ||||||
|  |         ('ungleich_page', '0015_ungleichsimpleheader'), | ||||||
|  |     ] | ||||||
|  | 
 | ||||||
|  |     operations = [ | ||||||
|  |         migrations.CreateModel( | ||||||
|  |             name='UngleichHeaderWithBackgroundImageSlider', | ||||||
|  |             fields=[ | ||||||
|  |                 ('cmsplugin_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='cms.CMSPlugin')), | ||||||
|  |                 ('carousel_data_interval', models.IntegerField(default=2000)), | ||||||
|  |             ], | ||||||
|  |             options={ | ||||||
|  |                 'abstract': False, | ||||||
|  |             }, | ||||||
|  |             bases=('cms.cmsplugin',), | ||||||
|  |         ), | ||||||
|  |         migrations.CreateModel( | ||||||
|  |             name='UngleichHeaderWithBackgroundImageSliderItem', | ||||||
|  |             fields=[ | ||||||
|  |                 ('cmsplugin_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='cms.CMSPlugin')), | ||||||
|  |                 ('description', djangocms_text_ckeditor.fields.HTMLField(default='<div class="intro-cap">We  Design, Configure & Maintain <br>Your Linux Infrastructure</div><p class="intro_lead">Ruby on Rails, Django, Java, Webserver, Mailserver, any infrastructure that needs to configured, we provide comprehensive solutions. Amazon, rackspace or bare metal servers, we configure for you.</p><p style="text-align: right;"><a class="btn btn-trans" href="">Learn More</a></p>')), | ||||||
|  |                 ('background_image', filer.fields.image.FilerImageField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='ungleich_header_slider_item_image', to='filer.Image')), | ||||||
|  |             ], | ||||||
|  |             options={ | ||||||
|  |                 'abstract': False, | ||||||
|  |             }, | ||||||
|  |             bases=('cms.cmsplugin',), | ||||||
|  |         ), | ||||||
|  |     ] | ||||||
|  | @ -11,7 +11,7 @@ import filer.fields.image | ||||||
| class Migration(migrations.Migration): | class Migration(migrations.Migration): | ||||||
| 
 | 
 | ||||||
|     dependencies = [ |     dependencies = [ | ||||||
|         ('ungleich_page', '0015_ungleichsimpleheader'), |         ('ungleich_page', '0016_ungleichheaderwithbackgroundimageslider_ungleichheaderwithbackgroundimageslideritem'), | ||||||
|     ] |     ] | ||||||
| 
 | 
 | ||||||
|     operations = [ |     operations = [ | ||||||
|  | @ -124,6 +124,27 @@ class UngleichHeader(CMSPlugin): | ||||||
|     carousel_data_interval = models.IntegerField(default=5000) |     carousel_data_interval = models.IntegerField(default=5000) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | class UngleichHeaderWithBackgroundImageSliderItem(CMSPlugin): | ||||||
|  |     background_image = FilerImageField( | ||||||
|  |         null=True, blank=True, | ||||||
|  |         related_name="ungleich_header_slider_item_image", | ||||||
|  |         on_delete=models.SET_NULL | ||||||
|  |     ) | ||||||
|  |     description = HTMLField( | ||||||
|  |         default='<div class="intro-cap">We  Design, Configure & Maintain ' | ||||||
|  |                 '<br>Your Linux Infrastructure</div><p class="intro_lead">' | ||||||
|  |                 'Ruby on Rails, Django, Java, Webserver, Mailserver, any ' | ||||||
|  |                 'infrastructure that needs to configured, we provide ' | ||||||
|  |                 'comprehensive solutions. Amazon, rackspace or bare metal ' | ||||||
|  |                 'servers, we configure for you.</p><p style="text-align: ' | ||||||
|  |                 'right;"><a class="btn btn-trans" href="">Learn More</a></p>' | ||||||
|  |     ) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class UngleichHeaderWithBackgroundImageSlider(CMSPlugin): | ||||||
|  |     carousel_data_interval = models.IntegerField(default=2000) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| class UngleichHeaderItem(CMSPlugin): | class UngleichHeaderItem(CMSPlugin): | ||||||
|     image = FilerImageField( |     image = FilerImageField( | ||||||
|         null=True, |         null=True, | ||||||
|  |  | ||||||
|  | @ -280,7 +280,10 @@ fieldset[disabled] .btn-xl.active { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     .navbar-default .navbar-brand { |     .navbar-default .navbar-brand { | ||||||
|        padding: 8px; |        padding: 4px 8px 12px; | ||||||
|  |     } | ||||||
|  |     .navbar-default.navbar-shrink .navbar-brand { | ||||||
|  |        padding: 6px 8px 10px; | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -440,6 +443,7 @@ section h3.section-subheading { | ||||||
|     max-width: 400px; |     max-width: 400px; | ||||||
|     text-align: center; |     text-align: center; | ||||||
|     background-color: #fff; |     background-color: #fff; | ||||||
|  |     width: 100%; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #portfolio .portfolio-item .portfolio-caption h4 { | #portfolio .portfolio-item .portfolio-caption h4 { | ||||||
|  |  | ||||||
|  | @ -1,2 +1,2 @@ | ||||||
| <a href="{{ instance.url }}"><img class="center-block img-client img-responsive" src="{{ instance.image.url}}"></a> | <a href="{{ instance.url }}"><img class="center-block img-client img-responsive" src="{{ instance.image.url}}"></a> | ||||||
| <p class="carousel-text text-muted text-center">{{ instance.description }}</p> | {{ instance.description }} | ||||||
|  | @ -1,8 +1,14 @@ | ||||||
| {% if instance.image %} |  | ||||||
|   <div class="bg_img" style="background-image:url({{ instance.image.url }})"></div> |  | ||||||
| {% endif %} |  | ||||||
| <div class="container"> | <div class="container"> | ||||||
|   <div class="intro-cap-sans-transform"> |     <div> | ||||||
|  |         {% if instance.image %} | ||||||
|  |         <img src="{{ instance.image.url }}" alt="" | ||||||
|  |              class="logo-image" img-responsive="" width="300"/> | ||||||
|  |         <div class="header-vh"></div> | ||||||
|  |         {% endif %} | ||||||
|  |         <div> | ||||||
|  |                 <span class="intro-cap-sans-transform"> | ||||||
|                 {{ instance.description }} |                 {{ instance.description }} | ||||||
|  |                 </span> | ||||||
|  |         </div> | ||||||
|     </div> |     </div> | ||||||
| </div> | </div> | ||||||
|  |  | ||||||
|  | @ -0,0 +1,4 @@ | ||||||
|  | <div class="bg_img" style="background-image:url({{ instance.background_image.url }})"></div> | ||||||
|  | <div class="container"> | ||||||
|  |   {{ instance.description }} | ||||||
|  | </div> | ||||||
|  | @ -0,0 +1,31 @@ | ||||||
|  | {% load cms_tags %} | ||||||
|  | <header class="header_slider"> | ||||||
|  |   <div id="carousel-header-ungleich" class="carousel slide" data-interval="{{ instance.carousel_data_interval}}"> | ||||||
|  |     <!-- Indicators --> | ||||||
|  |     {% if instance.child_plugin_instances|length > 1  %} | ||||||
|  |       <ol class="carousel-indicators"> | ||||||
|  |         {% for plugin in instance.child_plugin_instances %} | ||||||
|  |             <li data-target="#carousel-header-ungleich" data-slide-to="{{forloop.counter0}}" {% if forloop.counter0 == 0 %}class="active" {% endif %}></li> | ||||||
|  |         {% endfor %} | ||||||
|  |       </ol> | ||||||
|  |     {% endif %} | ||||||
|  |     <!-- Wrapper for slides --> | ||||||
|  |     <div class="carousel-inner" role="listbox"> | ||||||
|  |         {% for plugin in instance.child_plugin_instances %} | ||||||
|  |         <div class="item {% if forloop.counter0 == 0 %}active{% endif %}"> | ||||||
|  |           {% render_plugin plugin %} | ||||||
|  |         </div> | ||||||
|  |         {% endfor %} | ||||||
|  |     </div> | ||||||
|  |     {% if instance.child_plugin_instances|length > 1  %} | ||||||
|  |       <a class="left carousel-control" href="#carousel-header-ungleich" role="button" data-slide="prev"> | ||||||
|  |         <span class="fa fa-angle-left" aria-hidden="true"></span> | ||||||
|  |         <span class="sr-only">Previous</span> | ||||||
|  |       </a> | ||||||
|  |       <a class="right carousel-control" href="#carousel-header-ungleich" role="button" data-slide="next"> | ||||||
|  |         <span class="fa fa-angle-right" aria-hidden="true"></span> | ||||||
|  |         <span class="sr-only">Next</span> | ||||||
|  |       </a> | ||||||
|  |     {% endif %} | ||||||
|  |   </div> | ||||||
|  | </header> | ||||||
|  | @ -5,7 +5,7 @@ | ||||||
|       {% if instance.child_plugin_instances|length > 1  %} |       {% if instance.child_plugin_instances|length > 1  %} | ||||||
|         <ol class="carousel-indicators"> |         <ol class="carousel-indicators"> | ||||||
|                 {% for plugin in instance.child_plugin_instances %} |                 {% for plugin in instance.child_plugin_instances %} | ||||||
|           <li data-target="#carousel-header-ungleich" data-slide-to="{{forloop.counter0}}" {% if forloop.counter0 == 0 %}class="active"{% endif %}></li> |                     <li data-target="#carousel-header-ungleich" data-slide-to="{{forloop.counter0}}" {% if forloop.counter0 == 0 %}class="active" {% endif %}></li> | ||||||
|                 {% endfor %} |                 {% endfor %} | ||||||
|         </ol> |         </ol> | ||||||
|       {% endif %} |       {% endif %} | ||||||
|  | @ -17,16 +17,5 @@ | ||||||
|         </div> |         </div> | ||||||
|         {% endfor %} |         {% endfor %} | ||||||
|     </div> |     </div> | ||||||
|     <!-- Control Arrows --> |  | ||||||
|     {% if instance.child_plugin_instances|length > 1  %} |  | ||||||
|       <a class="left carousel-control" href="#carousel-header-ungleich" role="button" data-slide="prev"> |  | ||||||
|         <span class="fa fa-angle-left" aria-hidden="true"></span> |  | ||||||
|         <span class="sr-only">Previous</span> |  | ||||||
|       </a> |  | ||||||
|       <a class="right carousel-control" href="#carousel-header-ungleich" role="button" data-slide="next"> |  | ||||||
|         <span class="fa fa-angle-right" aria-hidden="true"></span> |  | ||||||
|         <span class="sr-only">Next</span> |  | ||||||
|       </a> |  | ||||||
|     {% endif %} |  | ||||||
|   </div> |   </div> | ||||||
| </header> | </header> | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue