You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

44 lines
1.4 KiB

# -*- coding: utf-8 -*-
from django.db.models.signals import post_save, pre_delete
from django.dispatch import receiver
from django.core.exceptions import ImproperlyConfigured
from cms.exceptions import PluginAlreadyRegistered, PluginNotRegistered
from .segment_pool import segment_pool
from ..models import SegmentBasePluginModel
@receiver(post_save)
def register_segment(sender, instance, created, **kwargs):
'''
Ensure that saving changes in the model results in the de-registering (if
necessary) and registering of this segment plugin.
'''
if isinstance(instance, SegmentBasePluginModel):
if not created:
try:
segment_pool.unregister_segment_plugin(instance)
except (PluginAlreadyRegistered, ImproperlyConfigured):
pass
# Either way, we register it.
try:
segment_pool.register_segment_plugin(instance)
except (PluginAlreadyRegistered, ImproperlyConfigured):
pass
@receiver(pre_delete)
def unregister_segment(sender, instance, **kwargs):
'''
Listens for signals that a SegmentPlugin instance is to be deleted, and
un-registers it from the segment_pool.
'''
if isinstance(instance, SegmentBasePluginModel):
try:
segment_pool.unregister_segment_plugin(instance)
except (PluginNotRegistered, ImproperlyConfigured):
pass