modified cms integrate to support separate content for each domain
This commit is contained in:
		
					parent
					
						
							
								9511428c9d
							
						
					
				
			
			
				commit
				
					
						d843c34d68
					
				
			
		
					 10 changed files with 105 additions and 24 deletions
				
			
		| 
						 | 
					@ -4,7 +4,7 @@ from .cms_models import CMSIntegration
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class CMSIntegrationAdmin(PlaceholderAdminMixin, admin.ModelAdmin):
 | 
					class CMSIntegrationAdmin(PlaceholderAdminMixin, admin.ModelAdmin):
 | 
				
			||||||
    pass
 | 
					    list_display = ('name', 'domain')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
admin.site.register(CMSIntegration, CMSIntegrationAdmin)
 | 
					admin.site.register(CMSIntegration, CMSIntegrationAdmin)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,14 +1,15 @@
 | 
				
			||||||
 | 
					from cms.models.fields import PlaceholderField
 | 
				
			||||||
from cms.models.pluginmodel import CMSPlugin
 | 
					from cms.models.pluginmodel import CMSPlugin
 | 
				
			||||||
 | 
					from django.contrib.sites.models import Site
 | 
				
			||||||
from django.db import models
 | 
					from django.db import models
 | 
				
			||||||
from django.utils.safestring import mark_safe
 | 
					from django.utils.safestring import mark_safe
 | 
				
			||||||
from djangocms_text_ckeditor.fields import HTMLField
 | 
					from djangocms_text_ckeditor.fields import HTMLField
 | 
				
			||||||
from filer.fields.image import FilerImageField
 | 
					from filer.fields.image import FilerImageField
 | 
				
			||||||
from cms.models.fields import PlaceholderField
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class CMSIntegration(models.Model):
 | 
					class CMSIntegration(models.Model):
 | 
				
			||||||
    name = models.CharField(
 | 
					    name = models.CharField(
 | 
				
			||||||
        max_length=100, unique=True, default='default',
 | 
					        max_length=100, default='default',
 | 
				
			||||||
        help_text=(
 | 
					        help_text=(
 | 
				
			||||||
            'A unique name for the Integration. This name will be used to '
 | 
					            'A unique name for the Integration. This name will be used to '
 | 
				
			||||||
            'fetch the Integration into pages'
 | 
					            'fetch the Integration into pages'
 | 
				
			||||||
| 
						 | 
					@ -20,6 +21,10 @@ class CMSIntegration(models.Model):
 | 
				
			||||||
    navbar_placeholder = PlaceholderField(
 | 
					    navbar_placeholder = PlaceholderField(
 | 
				
			||||||
        'datacenterlight_navbar', related_name='dcl-navbar-placeholder+'
 | 
					        'datacenterlight_navbar', related_name='dcl-navbar-placeholder+'
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
 | 
					    domain = models.ForeignKey(Site, null=True, blank=True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    class Meta:
 | 
				
			||||||
 | 
					        unique_together = ('name', 'domain')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __str__(self):
 | 
					    def __str__(self):
 | 
				
			||||||
        return self.name
 | 
					        return self.name
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,4 @@
 | 
				
			||||||
 | 
					from django.contrib.sites.models import Site
 | 
				
			||||||
from django.core.management.base import BaseCommand
 | 
					from django.core.management.base import BaseCommand
 | 
				
			||||||
from datacenterlight.cms_models import CMSIntegration
 | 
					from datacenterlight.cms_models import CMSIntegration
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,8 +7,16 @@ class Command(BaseCommand):
 | 
				
			||||||
    help = '''Creates cms integration objects for datacenterlight'''
 | 
					    help = '''Creates cms integration objects for datacenterlight'''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def handle(self, *args, **options):
 | 
					    def handle(self, *args, **options):
 | 
				
			||||||
        obj, created = CMSIntegration.objects.get_or_create(name='default')
 | 
					        self.create_cms_integration()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def create_cms_integration(self, site=None):
 | 
				
			||||||
 | 
					        obj, created = CMSIntegration.objects.get_or_create(
 | 
				
			||||||
 | 
					            name='default', domain=site
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					        domain_name = site.domain if site else 'All Sites'
 | 
				
			||||||
        if created:
 | 
					        if created:
 | 
				
			||||||
            print('created the default CMSIntegration object')
 | 
					            print('created the default CMSIntegration object for', domain_name)
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            print('default CMSIntegration object already exists')
 | 
					            print(
 | 
				
			||||||
 | 
					                'default CMSIntegration object already exists for', domain_name
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										43
									
								
								datacenterlight/migrations/0018_auto_20180403_1930.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								datacenterlight/migrations/0018_auto_20180403_1930.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,43 @@
 | 
				
			||||||
 | 
					# -*- coding: utf-8 -*-
 | 
				
			||||||
 | 
					# Generated by Django 1.9.4 on 2018-04-03 17:08
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from django.db import migrations, models
 | 
				
			||||||
 | 
					import django.db.models.deletion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Migration(migrations.Migration):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    replaces = [('datacenterlight', '0018_auto_20180403_1930'), ('datacenterlight', '0019_auto_20180403_2054')]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    dependencies = [
 | 
				
			||||||
 | 
					        ('datacenterlight', '0017_auto_20180329_0056'),
 | 
				
			||||||
 | 
					        ('sites', '0002_alter_domain_unique'),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    operations = [
 | 
				
			||||||
 | 
					        migrations.AlterField(
 | 
				
			||||||
 | 
					            model_name='dclcontactpluginmodel',
 | 
				
			||||||
 | 
					            name='organization_name',
 | 
				
			||||||
 | 
					            field=models.CharField(blank=True, default='ungleich glarus ag', max_length=100),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					        migrations.AlterField(
 | 
				
			||||||
 | 
					            model_name='dclfooterpluginmodel',
 | 
				
			||||||
 | 
					            name='copyright_label',
 | 
				
			||||||
 | 
					            field=models.CharField(blank=True, default='ungleich glarus ag', help_text='Name of the company alongside the copyright year', max_length=100),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					        migrations.AddField(
 | 
				
			||||||
 | 
					            model_name='cmsintegration',
 | 
				
			||||||
 | 
					            name='domain',
 | 
				
			||||||
 | 
					            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='sites.Site'),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					        migrations.AlterField(
 | 
				
			||||||
 | 
					            model_name='cmsintegration',
 | 
				
			||||||
 | 
					            name='name',
 | 
				
			||||||
 | 
					            field=models.CharField(default='default', help_text='A unique name for the Integration. This name will be used to fetch the Integration into pages', max_length=100),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					        migrations.AlterUniqueTogether(
 | 
				
			||||||
 | 
					            name='cmsintegration',
 | 
				
			||||||
 | 
					            unique_together=set([('name', 'domain')]),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
| 
						 | 
					@ -74,6 +74,17 @@ a.list-group-item-danger.active:focus {
 | 
				
			||||||
  padding: 10px;
 | 
					  padding: 10px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#logoWhite,
 | 
				
			||||||
 | 
					.navbar-transparent #logoBlack {
 | 
				
			||||||
 | 
					  display: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#logoBlack,
 | 
				
			||||||
 | 
					.navbar-transparent #logoWhite {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  width: 220px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@media (min-width: 768px) {
 | 
					@media (min-width: 768px) {
 | 
				
			||||||
  .navbar-right {
 | 
					  .navbar-right {
 | 
				
			||||||
    margin-right: 10px;
 | 
					    margin-right: 10px;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,12 @@
 | 
				
			||||||
 | 
					.navbar-transparent #logoWhite {
 | 
				
			||||||
 | 
					  display: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.navbar-transparent #logoBlack {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  width: 220px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.topnav .navbar-fixed-top .navbar-collapse {
 | 
					.topnav .navbar-fixed-top .navbar-collapse {
 | 
				
			||||||
  max-height: 740px;
 | 
					  max-height: 740px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -141,17 +141,6 @@ textarea {
 | 
				
			||||||
  color: #fff;
 | 
					  color: #fff;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#logoWhite,
 | 
					 | 
				
			||||||
.navbar-transparent #logoBlack {
 | 
					 | 
				
			||||||
  display: none;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#logoBlack,
 | 
					 | 
				
			||||||
.navbar-transparent #logoWhite {
 | 
					 | 
				
			||||||
  display: block;
 | 
					 | 
				
			||||||
  width: 220px;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.nav-language {
 | 
					.nav-language {
 | 
				
			||||||
  position: relative;
 | 
					  position: relative;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,11 +11,11 @@
 | 
				
			||||||
      <span class="icon-bar"></span>
 | 
					      <span class="icon-bar"></span>
 | 
				
			||||||
    </button>
 | 
					    </button>
 | 
				
			||||||
    {% if instance.logo_dark or instance.logo_light %}
 | 
					    {% if instance.logo_dark or instance.logo_light %}
 | 
				
			||||||
      <a href="{{ instance.logo_url|default:'/' }}" id="logoBlack" class="navbar-brand topnav"><img src="{{ instance.get_logo_dark }}"></a>
 | 
					      <a href="{{ instance.logo_url|default:'/' }}" id="logoBlack" class="navbar-brand"><img src="{{ instance.get_logo_dark }}"></a>
 | 
				
			||||||
      <a href="{{ instance.logo_url|default:'/' }}" id="logoWhite" class="navbar-brand topnav"><img src="{{ instance.get_logo_light }}"></a>
 | 
					      <a href="{{ instance.logo_url|default:'/' }}" id="logoWhite" class="navbar-brand"><img src="{{ instance.get_logo_light }}"></a>
 | 
				
			||||||
    {% else %}
 | 
					    {% else %}
 | 
				
			||||||
      <a href="/" id="logoBlack" class="navbar-brand topnav"><img src="{% static 'datacenterlight/img/logo_black.svg' %}"></a>
 | 
					      <a href="/" id="logoBlack" class="navbar-brand"><img src="{% static 'datacenterlight/img/logo_black.svg' %}"></a>
 | 
				
			||||||
      <a href="/" id="logoWhite" class="navbar-brand topnav"><img src="{% static 'datacenterlight/img/logo_white.svg' %}"></a>
 | 
					      <a href="/" id="logoWhite" class="navbar-brand"><img src="{% static 'datacenterlight/img/logo_white.svg' %}"></a>
 | 
				
			||||||
    {% endif %}
 | 
					    {% endif %}
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
  <div class="collapse navbar-collapse" id="dcl-topnav">
 | 
					  <div class="collapse navbar-collapse" id="dcl-topnav">
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										14
									
								
								datacenterlight/utils.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								datacenterlight/utils.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,14 @@
 | 
				
			||||||
 | 
					from django.contrib.sites.models import Site
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from .cms_models import CMSIntegration
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def get_cms_integration(name):
 | 
				
			||||||
 | 
					    current_site = Site.objects.get_current()
 | 
				
			||||||
 | 
					    try:
 | 
				
			||||||
 | 
					        cms_integration = CMSIntegration.objects.get(
 | 
				
			||||||
 | 
					            name=name, domain=current_site
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					    except CMSIntegration.DoesNotExist:
 | 
				
			||||||
 | 
					        cms_integration = CMSIntegration.objects.get(name=name, domain=None)
 | 
				
			||||||
 | 
					    return cms_integration
 | 
				
			||||||
| 
						 | 
					@ -9,6 +9,7 @@ from django.core.exceptions import ValidationError
 | 
				
			||||||
from django.core.urlresolvers import reverse
 | 
					from django.core.urlresolvers import reverse
 | 
				
			||||||
from django.http import HttpResponseRedirect, HttpResponse
 | 
					from django.http import HttpResponseRedirect, HttpResponse
 | 
				
			||||||
from django.shortcuts import render
 | 
					from django.shortcuts import render
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from django.utils.translation import get_language, ugettext_lazy as _
 | 
					from django.utils.translation import get_language, ugettext_lazy as _
 | 
				
			||||||
from django.views.decorators.cache import cache_control
 | 
					from django.views.decorators.cache import cache_control
 | 
				
			||||||
from django.views.generic import FormView, CreateView, DetailView
 | 
					from django.views.generic import FormView, CreateView, DetailView
 | 
				
			||||||
| 
						 | 
					@ -24,7 +25,7 @@ from utils.stripe_utils import StripeUtils
 | 
				
			||||||
from utils.tasks import send_plain_email_task
 | 
					from utils.tasks import send_plain_email_task
 | 
				
			||||||
from .forms import ContactForm
 | 
					from .forms import ContactForm
 | 
				
			||||||
from .models import VMTemplate
 | 
					from .models import VMTemplate
 | 
				
			||||||
from .cms_models import CMSIntegration
 | 
					from .utils import get_cms_integration
 | 
				
			||||||
 | 
					
 | 
				
			||||||
logger = logging.getLogger(__name__)
 | 
					logger = logging.getLogger(__name__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -220,7 +221,7 @@ class PaymentOrderView(FormView):
 | 
				
			||||||
            'site_url': reverse('datacenterlight:index'),
 | 
					            'site_url': reverse('datacenterlight:index'),
 | 
				
			||||||
            'login_form': HostingUserLoginForm(prefix='login_form'),
 | 
					            'login_form': HostingUserLoginForm(prefix='login_form'),
 | 
				
			||||||
            'billing_address_form': billing_address_form,
 | 
					            'billing_address_form': billing_address_form,
 | 
				
			||||||
            'cms_integration': CMSIntegration.objects.get(name='default')
 | 
					            'cms_integration': get_cms_integration('default')
 | 
				
			||||||
        })
 | 
					        })
 | 
				
			||||||
        return context
 | 
					        return context
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -358,7 +359,7 @@ class OrderConfirmationView(DetailView):
 | 
				
			||||||
            'billing_address_data': (
 | 
					            'billing_address_data': (
 | 
				
			||||||
                request.session.get('billing_address_data')
 | 
					                request.session.get('billing_address_data')
 | 
				
			||||||
            ),
 | 
					            ),
 | 
				
			||||||
            'cms_integration': CMSIntegration.objects.get(name='default')
 | 
					            'cms_integration': get_cms_integration('default')
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return render(request, self.template_name, context)
 | 
					        return render(request, self.template_name, context)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue