From d843c34d6825afc2572aba2960b96a6025c2e11c Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Tue, 3 Apr 2018 22:41:29 +0530 Subject: [PATCH 1/8] modified cms integrate to support separate content for each domain --- datacenterlight/admin.py | 2 +- datacenterlight/cms_models.py | 9 +++- .../management/commands/cmsintegrate.py | 15 +++++-- .../migrations/0018_auto_20180403_1930.py | 43 +++++++++++++++++++ .../static/datacenterlight/css/common.css | 11 +++++ .../static/datacenterlight/css/hosting.css | 9 ++++ .../datacenterlight/css/landing-page.css | 11 ----- .../templates/datacenterlight/cms/navbar.html | 8 ++-- datacenterlight/utils.py | 14 ++++++ datacenterlight/views.py | 7 +-- 10 files changed, 105 insertions(+), 24 deletions(-) create mode 100644 datacenterlight/migrations/0018_auto_20180403_1930.py create mode 100644 datacenterlight/utils.py diff --git a/datacenterlight/admin.py b/datacenterlight/admin.py index 974006a6..acb93fff 100644 --- a/datacenterlight/admin.py +++ b/datacenterlight/admin.py @@ -4,7 +4,7 @@ from .cms_models import CMSIntegration class CMSIntegrationAdmin(PlaceholderAdminMixin, admin.ModelAdmin): - pass + list_display = ('name', 'domain') admin.site.register(CMSIntegration, CMSIntegrationAdmin) diff --git a/datacenterlight/cms_models.py b/datacenterlight/cms_models.py index 2f63c150..9eb55e0c 100644 --- a/datacenterlight/cms_models.py +++ b/datacenterlight/cms_models.py @@ -1,14 +1,15 @@ +from cms.models.fields import PlaceholderField from cms.models.pluginmodel import CMSPlugin +from django.contrib.sites.models import Site from django.db import models from django.utils.safestring import mark_safe from djangocms_text_ckeditor.fields import HTMLField from filer.fields.image import FilerImageField -from cms.models.fields import PlaceholderField class CMSIntegration(models.Model): name = models.CharField( - max_length=100, unique=True, default='default', + max_length=100, default='default', help_text=( 'A unique name for the Integration. This name will be used to ' 'fetch the Integration into pages' @@ -20,6 +21,10 @@ class CMSIntegration(models.Model): navbar_placeholder = PlaceholderField( 'datacenterlight_navbar', related_name='dcl-navbar-placeholder+' ) + domain = models.ForeignKey(Site, null=True, blank=True) + + class Meta: + unique_together = ('name', 'domain') def __str__(self): return self.name diff --git a/datacenterlight/management/commands/cmsintegrate.py b/datacenterlight/management/commands/cmsintegrate.py index 5b4f72d2..66691649 100644 --- a/datacenterlight/management/commands/cmsintegrate.py +++ b/datacenterlight/management/commands/cmsintegrate.py @@ -1,3 +1,4 @@ +from django.contrib.sites.models import Site from django.core.management.base import BaseCommand from datacenterlight.cms_models import CMSIntegration @@ -6,8 +7,16 @@ class Command(BaseCommand): help = '''Creates cms integration objects for datacenterlight''' 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: - print('created the default CMSIntegration object') + print('created the default CMSIntegration object for', domain_name) else: - print('default CMSIntegration object already exists') + print( + 'default CMSIntegration object already exists for', domain_name + ) diff --git a/datacenterlight/migrations/0018_auto_20180403_1930.py b/datacenterlight/migrations/0018_auto_20180403_1930.py new file mode 100644 index 00000000..5c418898 --- /dev/null +++ b/datacenterlight/migrations/0018_auto_20180403_1930.py @@ -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')]), + ), + ] diff --git a/datacenterlight/static/datacenterlight/css/common.css b/datacenterlight/static/datacenterlight/css/common.css index cddb0f69..88db9376 100644 --- a/datacenterlight/static/datacenterlight/css/common.css +++ b/datacenterlight/static/datacenterlight/css/common.css @@ -74,6 +74,17 @@ a.list-group-item-danger.active:focus { padding: 10px; } +#logoWhite, +.navbar-transparent #logoBlack { + display: none; +} + +#logoBlack, +.navbar-transparent #logoWhite { + display: block; + width: 220px; +} + @media (min-width: 768px) { .navbar-right { margin-right: 10px; diff --git a/datacenterlight/static/datacenterlight/css/hosting.css b/datacenterlight/static/datacenterlight/css/hosting.css index 7764f0c3..b4c5909c 100644 --- a/datacenterlight/static/datacenterlight/css/hosting.css +++ b/datacenterlight/static/datacenterlight/css/hosting.css @@ -1,3 +1,12 @@ +.navbar-transparent #logoWhite { + display: none; +} + +.navbar-transparent #logoBlack { + display: block; + width: 220px; +} + .topnav .navbar-fixed-top .navbar-collapse { max-height: 740px; } diff --git a/datacenterlight/static/datacenterlight/css/landing-page.css b/datacenterlight/static/datacenterlight/css/landing-page.css index 38e84a59..41c5a42f 100755 --- a/datacenterlight/static/datacenterlight/css/landing-page.css +++ b/datacenterlight/static/datacenterlight/css/landing-page.css @@ -141,17 +141,6 @@ textarea { color: #fff; } -#logoWhite, -.navbar-transparent #logoBlack { - display: none; -} - -#logoBlack, -.navbar-transparent #logoWhite { - display: block; - width: 220px; -} - .nav-language { position: relative; } diff --git a/datacenterlight/templates/datacenterlight/cms/navbar.html b/datacenterlight/templates/datacenterlight/cms/navbar.html index bfa3e086..ae6643aa 100644 --- a/datacenterlight/templates/datacenterlight/cms/navbar.html +++ b/datacenterlight/templates/datacenterlight/cms/navbar.html @@ -11,11 +11,11 @@ {% if instance.logo_dark or instance.logo_light %} - - + + {% else %} - - + + {% endif %}