Skip to content

Commit

Permalink
Refactor models and save function. Added 'Is Enabled' button and allo…
Browse files Browse the repository at this point in the history
…wed multiple versions per site. Only the first is used. Added fix for JS Cookies being cleared.
  • Loading branch information
carderm authored and carderm committed Sep 4, 2020
1 parent 4f3c5ff commit 96c80e9
Show file tree
Hide file tree
Showing 10 changed files with 8,505 additions and 31 deletions.
10 changes: 7 additions & 3 deletions django_cookie_control/admin.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
from django.contrib import admin
from django.contrib import messages
from parler.admin import TranslatableAdmin
from parler.forms import TranslatableModelForm

from django_cookie_control.models import *
from django_cookie_control import cache
from django_cookie_control import cache as cookie_cache


# Standard Models
Expand Down Expand Up @@ -72,7 +73,8 @@ class OptionalCookieAdmin(admin.ModelAdmin):
# -----------------
@admin.register(CookieControl)
class CookieControlAdmin(admin.ModelAdmin):
list_display = ['name', 'is_enabled']
list_editable = ['is_enabled']
list_display = ['name', 'is_enabled', 'mode', 'iabCMP']
inlines = [
OptionalCookieInline,
]
Expand Down Expand Up @@ -123,7 +125,9 @@ class CookieControlAdmin(admin.ModelAdmin):

def save_model(self, request, obj, form, change):
super(CookieControlAdmin, self).save_model(request, obj, form, change)
cache.delete(obj.site.id)
if obj.is_enabled and CookieControl.objects.filter(site_id=obj.site_id, is_enabled=True).count() > 1:
messages.add_message(request, messages.WARNING,
'Caution: multiple CookieControls enabled for site: {}'.format(obj.site))



Expand Down
6 changes: 5 additions & 1 deletion django_cookie_control/apps.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
from django.apps import AppConfig
from django.utils.translation import ugettext_lazy as _

class CookieControlConfig(AppConfig):
name = 'django_cookie_control'
verbose_name = 'Django Cookie Control'
verbose_name = _('Django Cookie Control')

def ready(self):
import django_cookie_control.receivers
19 changes: 19 additions & 0 deletions django_cookie_control/migrations/0011_auto_20200904_1119.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Generated by Django 2.2.16 on 2020-09-04 01:19

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
('django_cookie_control', '0010_cookiecontrol_is_enabled'),
]

operations = [
migrations.AlterField(
model_name='cookiecontrol',
name='site',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='sites.Site'),
),
]
6 changes: 5 additions & 1 deletion django_cookie_control/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -526,7 +526,7 @@ def get_dict(self):

class CookieControl(models.Model):

site = models.OneToOneField(Site, on_delete=models.CASCADE)
site = models.ForeignKey(Site, on_delete=models.CASCADE)
name = models.CharField(max_length=255)
is_enabled = models.BooleanField(default=True)

Expand Down Expand Up @@ -749,6 +749,9 @@ def get_dict(self):
dict['text'] = {}
dict['text']['iabCMP'] = self.iabText.get_dict()
del dict['iabText']
if self.mode == 'CCPA':
if 'ccpaConfig' in dict:
dict['ccpaConfig'] = self.ccpaConfig.get_dict()

# Pro + Pro Multisite Options
if self.product in ['COMMUNITY']:
Expand All @@ -766,3 +769,4 @@ def get_dict(self):
class Meta:
verbose_name = "Cookie Control"
verbose_name_plural = "Cookie Controls"

13 changes: 13 additions & 0 deletions django_cookie_control/receivers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from django.db.models.signals import post_save
from .models import CookieControl
from .cache import delete
from django.dispatch import receiver


@receiver(post_save, sender=CookieControl, dispatch_uid="update_cookie_control_clear_cache")
def clear_cookie_cache(sender, instance, **kwargs):
# Clear the cache
delete(instance.site_id)



0 comments on commit 96c80e9

Please sign in to comment.