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): | ||||
|     pass | ||||
|     list_display = ('name', 'domain') | ||||
| 
 | ||||
| 
 | ||||
| admin.site.register(CMSIntegration, CMSIntegrationAdmin) | ||||
|  |  | |||
|  | @ -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 | ||||
|  |  | |||
|  | @ -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 | ||||
|             ) | ||||
|  |  | |||
							
								
								
									
										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; | ||||
| } | ||||
| 
 | ||||
| #logoWhite, | ||||
| .navbar-transparent #logoBlack { | ||||
|   display: none; | ||||
| } | ||||
| 
 | ||||
| #logoBlack, | ||||
| .navbar-transparent #logoWhite { | ||||
|   display: block; | ||||
|   width: 220px; | ||||
| } | ||||
| 
 | ||||
| @media (min-width: 768px) { | ||||
|   .navbar-right { | ||||
|     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 { | ||||
|   max-height: 740px; | ||||
| } | ||||
|  |  | |||
|  | @ -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; | ||||
| } | ||||
|  |  | |||
|  | @ -11,11 +11,11 @@ | |||
|       <span class="icon-bar"></span> | ||||
|     </button> | ||||
|     {% 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="logoWhite" class="navbar-brand topnav"><img src="{{ instance.get_logo_light }}"></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"><img src="{{ instance.get_logo_light }}"></a> | ||||
|     {% else %} | ||||
|       <a href="/" id="logoBlack" class="navbar-brand topnav"><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="logoBlack" class="navbar-brand"><img src="{% static 'datacenterlight/img/logo_black.svg' %}"></a> | ||||
|       <a href="/" id="logoWhite" class="navbar-brand"><img src="{% static 'datacenterlight/img/logo_white.svg' %}"></a> | ||||
|     {% endif %} | ||||
|   </div> | ||||
|   <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.http import HttpResponseRedirect, HttpResponse | ||||
| from django.shortcuts import render | ||||
| 
 | ||||
| from django.utils.translation import get_language, ugettext_lazy as _ | ||||
| from django.views.decorators.cache import cache_control | ||||
| 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 .forms import ContactForm | ||||
| from .models import VMTemplate | ||||
| from .cms_models import CMSIntegration | ||||
| from .utils import get_cms_integration | ||||
| 
 | ||||
| logger = logging.getLogger(__name__) | ||||
| 
 | ||||
|  | @ -220,7 +221,7 @@ class PaymentOrderView(FormView): | |||
|             'site_url': reverse('datacenterlight:index'), | ||||
|             'login_form': HostingUserLoginForm(prefix='login_form'), | ||||
|             'billing_address_form': billing_address_form, | ||||
|             'cms_integration': CMSIntegration.objects.get(name='default') | ||||
|             'cms_integration': get_cms_integration('default') | ||||
|         }) | ||||
|         return context | ||||
| 
 | ||||
|  | @ -358,7 +359,7 @@ class OrderConfirmationView(DetailView): | |||
|             '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) | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue