예제 #1
0
    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)
예제 #2
0
    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
예제 #3
0
    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)
예제 #4
0
    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)
예제 #6
0
    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)
예제 #7
0
# 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)


예제 #8
0
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)