modified cms integrate to support separate content for each domain

This commit is contained in:
Arvind Tiwari 2018-04-03 22:41:29 +05:30
parent 9511428c9d
commit d843c34d68
10 changed files with 105 additions and 24 deletions

View file

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

View file

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

View file

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

View 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')]),
),
]

View file

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

View file

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

View file

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

View file

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

View file

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