def test_register_extension(self): initial_extension_count = len(extension_pool.page_extensions) # --- None extension registering ----------------------------- from cms.exceptions import SubClassNeededError none_extension = self.get_none_extension_class() self.assertRaises(SubClassNeededError, extension_pool.register, none_extension) self.assertEqual(len(extension_pool.page_extensions), initial_extension_count) self.assertEqual(len(extension_pool.title_extensions), initial_extension_count) # --- Page registering --------------------------------------- page_extension = self.get_page_extension_class() # register first time extension_pool.register(page_extension) self.assertEqual(len(extension_pool.page_extensions), initial_extension_count + 1) # register second time extension_pool.register(page_extension) self.assertEqual(len(extension_pool.page_extensions), initial_extension_count + 1) self.assertIs(extension_pool.signaling_activated, True) # --- Title registering -------------------------------------- title_extension = self.get_title_extension_class() # register first time extension_pool.register(title_extension) self.assertEqual(len(extension_pool.title_extensions), initial_extension_count + 1) # register second time extension_pool.register(title_extension) self.assertEqual(len(extension_pool.title_extensions), initial_extension_count + 1) self.assertIs(extension_pool.signaling_activated, True) # --- Unregister --------------------------------------------- extension_pool.unregister(page_extension) self.assertEqual(len(extension_pool.page_extensions), initial_extension_count) extension_pool.unregister(title_extension) self.assertEqual(len(extension_pool.title_extensions), initial_extension_count) # Unregister an object that is not registered yet extension_pool.unregister(page_extension) extension_pool.unregister(title_extension)
def test_register_extension(self): initial_extension_count = len(extension_pool.page_extensions) # --- None extension registering ----------------------------- from cms.exceptions import SubClassNeededError none_extension = self.get_none_extension_class() self.assertRaises(SubClassNeededError, extension_pool.register, none_extension) self.assertEqual(len(extension_pool.page_extensions), initial_extension_count) self.assertEqual(len(extension_pool.title_extensions), initial_extension_count) # --- Page registering --------------------------------------- page_extension = self.get_page_extension_class() # register first time extension_pool.register(page_extension) self.assertEqual(len(extension_pool.page_extensions), initial_extension_count + 1) # register second time extension_pool.register(page_extension) self.assertEqual(len(extension_pool.page_extensions), initial_extension_count + 1) self.assertIs(extension_pool.signaling_activated, True) # --- Title registering -------------------------------------- title_extension = self.get_title_extension_class() # register first time extension_pool.register(title_extension) self.assertEqual(len(extension_pool.title_extensions), initial_extension_count + 1) # register second time extension_pool.register(title_extension) self.assertEqual(len(extension_pool.title_extensions), initial_extension_count + 1) self.assertIs(extension_pool.signaling_activated, True) # --- Unregister --------------------------------------------- extension_pool.unregister(page_extension) self.assertEqual(len(extension_pool.page_extensions), initial_extension_count) extension_pool.unregister(title_extension) self.assertEqual(len(extension_pool.title_extensions), initial_extension_count) # Unregister an object that is not registered yet extension_pool.unregister(page_extension) extension_pool.unregister(title_extension) try: from django.apps import apps del apps.all_models["cms"]["testpageextension"] del apps.all_models["cms"]["testtitleextension"] except (ImportError, KeyError): # Django 1.6 pass
def test_register_extension(self): initial_extension_count = len(extension_pool.page_extensions) # --- None extension registering ----------------------------- from cms.exceptions import SubClassNeededError none_extension = self.get_none_extension_class() self.assertRaises(SubClassNeededError, extension_pool.register, none_extension) self.assertEqual(len(extension_pool.page_extensions), initial_extension_count) self.assertEqual(len(extension_pool.title_extensions), initial_extension_count) # --- Page registering --------------------------------------- page_extension = self.get_page_extension_class() # register first time extension_pool.register(page_extension) self.assertEqual(len(extension_pool.page_extensions), initial_extension_count+1) # register second time extension_pool.register(page_extension) self.assertEqual(len(extension_pool.page_extensions), initial_extension_count+1) self.assertIs(extension_pool.signaling_activated, True) # --- Title registering -------------------------------------- title_extension = self.get_title_extension_class() # register first time extension_pool.register(title_extension) self.assertEqual(len(extension_pool.title_extensions), initial_extension_count+1) # register second time extension_pool.register(title_extension) self.assertEqual(len(extension_pool.title_extensions), initial_extension_count+1) self.assertIs(extension_pool.signaling_activated, True) # --- Unregister --------------------------------------------- extension_pool.unregister(page_extension) self.assertEqual(len(extension_pool.page_extensions), initial_extension_count) extension_pool.unregister(title_extension) self.assertEqual(len(extension_pool.title_extensions), initial_extension_count) # Unregister an object that is not registered yet extension_pool.unregister(page_extension) extension_pool.unregister(title_extension)
def test_register_extension(self): initial_extension_count = len(extension_pool.page_extensions) # --- None extension registering ----------------------------- from cms.exceptions import SubClassNeededError none_extension = self.get_none_extension_class() self.assertRaises(SubClassNeededError, extension_pool.register, none_extension) self.assertEqual(len(extension_pool.page_extensions), initial_extension_count) self.assertEqual(len(extension_pool.title_extensions), initial_extension_count) # --- Page registering --------------------------------------- page_extension = self.get_page_extension_class() # register first time extension_pool.register(page_extension) self.assertEqual(len(extension_pool.page_extensions), initial_extension_count + 1) # register second time extension_pool.register(page_extension) self.assertEqual(len(extension_pool.page_extensions), initial_extension_count + 1) self.assertIs(extension_pool.signaling_activated, True) # --- Title registering -------------------------------------- title_extension = self.get_title_extension_class() # register first time extension_pool.register(title_extension) self.assertEqual(len(extension_pool.title_extensions), initial_extension_count + 1) # register second time extension_pool.register(title_extension) self.assertEqual(len(extension_pool.title_extensions), initial_extension_count + 1) self.assertIs(extension_pool.signaling_activated, True) # --- Unregister --------------------------------------------- extension_pool.unregister(page_extension) self.assertEqual(len(extension_pool.page_extensions), initial_extension_count) extension_pool.unregister(title_extension) self.assertEqual(len(extension_pool.title_extensions), initial_extension_count) # Unregister an object that is not registered yet extension_pool.unregister(page_extension) extension_pool.unregister(title_extension) try: from django.apps import apps del apps.all_models['cms']['testpageextension'] del apps.all_models['cms']['testtitleextension'] except (ImportError, KeyError): # Django 1.6 pass
from cms.extensions import PageExtension, extension_pool from django.db import models class ColorExtension(PageExtension): color = models.CharField(max_length=7) extension_pool.register(ColorExtension)
class Meta: abstract = True class OpenGraphMixin(MetaTagBaseMixin): og_image = FilerImageField(blank=True, null=True, verbose_name=_('Open Graph image')) og_image_width = models.PositiveIntegerField(blank=True, null=True, verbose_name=_('Open Graph image width')) og_image_height = models.PositiveIntegerField(blank=True, null=True, verbose_name=_('Open Graph image height')) class Meta: abstract = True class MetaTagMixin(MetaTagTitleDescriptionMixin, RobotsMixin, OpenGraphMixin): """ Use this mixin for your models if you want to make them ready for SEO and social sharing. Make sure you don't forget to implement your translation settings before you create your project migrations. """ class Meta: abstract = True class MetaTagPageExtension(OpenGraphMixin, RobotsMixin, PageExtension): class Meta: verbose_name = 'Meta Tag' extension_pool.register(MetaTagPageExtension)
# coding=utf-8 from filer.fields.image import FilerImageField from cms.extensions import PageExtension from cms.extensions import extension_pool from django.db import models class PageExtend(PageExtension): image = FilerImageField(null=True, blank=True, default=None, verbose_name="image") authentication_required = models.BooleanField(default=False) touchable = models.BooleanField( default=False) # если true то элемент меню будет реагировать касание тачскрина как на клик мыши extension_pool.register(PageExtend)
from .settings import PAGE_SITEMAP_CHANGEFREQ_LIST from .utils import get_cache_key @python_2_unicode_compatible class PageSitemapProperties(PageExtension): changefreq = models.CharField(_('Change frequency'), max_length=20, default='monthly', choices=PAGE_SITEMAP_CHANGEFREQ_LIST.items()) priority = models.DecimalField(_('Priority'), decimal_places=1, max_digits=2, default=0.5, validators=[MinValueValidator(0), MaxValueValidator(1)]) include_in_sitemap = models.BooleanField(_('Include in sitemap'), default=True) def __str__(self): return _('Sitemap values for Page %s') % self.extended_object.pk extension_pool.register(PageSitemapProperties) # Cache cleanup when deleting pages / editing page extensions @receiver(pre_delete, sender=Page) def cleanup_page(sender, instance, **kwargs): key = get_cache_key(instance) cache.delete(key) @receiver(post_save, sender=PageSitemapProperties) def cleanup_pagemeta(sender, instance, **kwargs): key = get_cache_key(instance.extended_object) cache.delete(key)