Exemplo n.º 1
0
from cms.extensions import TitleExtension
from cms.extensions.extension_pool import extension_pool
from django.db import models


class ExtensionModel(TitleExtension):
    name = models.CharField(max_length=255)

    class Meta:
        verbose_name = 'Extension'

    def __str__(self):
        return self.name

extension_pool.register(ExtensionModel)
Exemplo n.º 2
0
                                      help_text=_(u'"@" sign not required.'))
    twitter_site = models.CharField(_(u'Website Twitter Account'),
                                    max_length=255, default='', blank=True,
                                    help_text=_(u'"@" sign not required.'))
    twitter_type = models.CharField(_(u'Resource type'), max_length=255,
                                    choices=TWITTER_TYPE_CHOICES)
    gplus_author = models.CharField(_(u'Author Google+ URL'),
                                    max_length=255, default='', blank=True,
                                    help_text=_(u'Use the Google+ Name (together with "+") or the complete path to the page.'))
    gplus_type = models.CharField(_(u'Resource type'), max_length=255,
                                  choices=GPLUS_TYPE_CHOICES,
                                  help_text=_(u'Use Article for generic pages.'))

    class Meta:
        verbose_name = _(u'Page meta info (all languages)')
extension_pool.register(PageMeta)


class TitleMeta(TitleExtension):
    image = FilerFileField(null=True, blank=True, related_name="djangocms_page_meta_title",
                           help_text=_(u'If empty, page image will be used for all languages.'))
    keywords = models.CharField(max_length=400, default='', blank=True)
    description = models.CharField(max_length=400, default='', blank=True)
    og_description = models.CharField(_(u'Facebook Description'), max_length=400, default='', blank=True)
    twitter_description = models.CharField(_(u'Twitter Description'), max_length=140, default='', blank=True)
    gplus_description = models.CharField(_(u'Google+ Description'), max_length=400, default='', blank=True)

    @property
    def locale(self):
        if self.extended_object.language.find("_") > -1:
            return self.extended_object.language
Exemplo n.º 3
0
from cms.extensions import PageExtension
from cms.extensions.extension_pool import extension_pool


def content_file_name(instance, filename):
    return '/'.join(['app_info', str(instance.pk), filename])


class AppInfoExtension(PageExtension):
    feature_image = models.ImageField(null=True,
                                      blank=True,
                                      upload_to=content_file_name)
    icon_image = models.ImageField(null=True,
                                   blank=True,
                                   upload_to=content_file_name)
    apple_store_id = models.CharField(null=True, blank=True, max_length=256)
    google_store_id = models.CharField(null=True, blank=True, max_length=256)


extension_pool.register(AppInfoExtension)


class ContactUs(models.Model):
    category = models.CharField(max_length=128)
    name = models.CharField(max_length=256)
    phone = models.CharField(max_length=128)
    email = models.CharField(max_length=256)
    message = models.TextField()
    received = models.DateTimeField(default=datetime.datetime.now)
Exemplo n.º 4
0
from django.utils.translation import ugettext_lazy as _
from taggit_autosuggest.managers import TaggableManager

from .utils import get_cache_key


class PageTags(PageExtension):
    tags = TaggableManager()

    def copy_relations(self, oldinstance, language):
        """ Needed to copy tags when publishing page """
        self.tags.set(*oldinstance.tags.all())

    class Meta:
        verbose_name = _('Page tags (all languages)')
extension_pool.register(PageTags)


class TitleTags(TitleExtension):
    tags = TaggableManager()

    def copy_relations(self, oldinstance, language):
        """ Needed to copy tags when publishing page """
        self.tags.set(*oldinstance.tags.all())

    class Meta:
        verbose_name = _('Page tags (language-dependent)')
extension_pool.register(TitleTags)


# Cache cleanup when deleting pages / editing page extensions
Exemplo n.º 5
0
                                verbose_name=_('Catalog'),
                                null=True)

    def title(self):
        return self.catalog.get_page().get_title()

    def pages(self):
        if self.display_level == self.CHILD:
            pages = self.catalog.get_page().get_descendants()
        elif self.display_level == self.CURRENT:
            pages = self.catalog.get_page().get_leafnodes()
        else:
            pages = self.catalog.get_page().get_descendants()
        return pages[:self.page_count]

    def get_absolute_url(self):
        return self.catalog.get_page().get_absolute_url()


class CatalogExtension(PageExtension):
    is_catalog = models.BooleanField(_('This page is a catalog'), default=True)

    def __unicode__(self):
        return self.get_page().get_title()

    def __str__(self):
        return self.__unicode__().encode("utf-8")


extension_pool.register(CatalogExtension)
Exemplo n.º 6
0
    page = models.ForeignKey(
        Page,
        on_delete=models.CASCADE,
        related_name="blogpost_plugins",
        limit_choices_to={
            "publisher_is_draft": True,
            "blogpost__isnull": False
        },
    )
    variant = models.CharField(
        _("variant"),
        max_length=50,
        choices=defaults.BLOGPOST_GLIMPSE_VARIANT_CHOICES,
        help_text=_("Optional glimpse variant for a custom look."),
        blank=True,
        null=True,
    )

    class Meta:
        db_table = "richie_blog_post_plugin"
        verbose_name = _("blog post plugin")
        verbose_name_plural = _("blog post plugins")

    def __str__(self):
        """Human representation of a page plugin"""
        return self.page.get_title()


extension_pool.register(BlogPost)
from django.utils.translation import ugettext_lazy as _

from cms.extensions import PageExtension
from cms.extensions.extension_pool import extension_pool

MENU_ITEM_CSS_CLASS_CHOICES = (
    ("featured", ".featured"),
)

BODY_CSS_CLASS_CHOICES = (
    ("serious", ".serious"),
    ("playful", ".playful"),
)


class CSSExtension(PageExtension):
    menu_item_css_class = models.CharField(
        _("Menu Item CSS Class"),
        max_length=200,
        blank=True,
        choices=MENU_ITEM_CSS_CLASS_CHOICES,
    )
    body_css_class = models.CharField(
        _("Body CSS Class"),
        max_length=200,
        blank=True,
        choices=BODY_CSS_CLASS_CHOICES,
    )

extension_pool.register(CSSExtension)
from django.db import models

# page extension imports
from cms.extensions import PageExtension
from cms.extensions.extension_pool import extension_pool

# django filer imports
from filer.fields.image import FilerImageField


class HeaderOptionsExtension(PageExtension):
    header_subtitle = models.CharField(max_length=32, blank=True)
    header_image = FilerImageField(blank=True)
    header_image_source = models.CharField(max_length=32, blank=True)
    header_image_source_url = models.URLField(blank=True)
    header_image_license = models.CharField(max_length=32, blank=True)
    header_image_license_url = models.URLField(blank=True)


extension_pool.register(HeaderOptionsExtension)
Exemplo n.º 9
0
from django.db import models

from cms.extensions import PageExtension
from cms.extensions.extension_pool import extension_pool

class TheselectionExtension(PageExtension):
    subtitle = models.CharField(max_length=30)
    backgroundcolor = models.CharField(max_length=9)


extension_pool.register(TheselectionExtension)
Exemplo n.º 10
0
ICON_CATALOG = 'http://materializecss.com/icons.html'
RATING_CHOICES = [(1, '1 star'),
                  (2, '2 stars'),
                  (3, '3 stars'),
                  (4, '4 stars'),
                  (5, '5 stars')
                  ]


class IconNameExtension(PageExtension):
    icon_name = models.CharField(
        _('Materialize icon name'), max_length=80, null=False, blank=False,
        help_text=_('Choose an icon at ' + ICON_CATALOG))

extension_pool.register(IconNameExtension)


class RatingExtension(PageExtension):
    include_rating = models.BooleanField(default=False)

extension_pool.register(RatingExtension)


class SocialMediaExtension(PageExtension):
    include_social_media = models.BooleanField(default=False)

extension_pool.register(SocialMediaExtension)


class PageRating(models.Model):
Exemplo n.º 11
0
@author: dennis
'''

import datetime
from django.db import models

from cms.extensions import PageExtension
from cms.extensions.extension_pool import extension_pool


def content_file_name(instance, filename):
    return '/'.join(['app_info', str(instance.pk), filename])
        
        
class AppInfoExtension(PageExtension):
    feature_image = models.ImageField(null=True, blank=True, upload_to=content_file_name)
    icon_image = models.ImageField(null=True, blank=True, upload_to=content_file_name)
    apple_store_id = models.CharField(null=True, blank=True, max_length=256)
    google_store_id = models.CharField(null=True, blank=True, max_length=256)
    
    
         
extension_pool.register(AppInfoExtension)

class ContactUs(models.Model):
    category = models.CharField(max_length=128)
    name = models.CharField(max_length=256)
    phone = models.CharField(max_length=128)
    email = models.CharField(max_length=256)
    message = models.TextField()
    received = models.DateTimeField(default=datetime.datetime.now)
Exemplo n.º 12
0
    page_count = models.PositiveSmallIntegerField(_('How much page display'), default=5)
    display_date = models.BooleanField(_('Show page date in line'), default=True, blank=True)
    catalog = models.ForeignKey('CatalogExtension', verbose_name=_('Catalog'), null=True)

    def title(self):
        return self.catalog.get_page().get_title()

    def pages(self):
        if self.display_level == self.CHILD:
            pages = self.catalog.get_page().get_descendants()
        elif self.display_level == self.CURRENT:
            pages = self.catalog.get_page().get_leafnodes()
        else:
            pages = self.catalog.get_page().get_descendants()
        return pages[:self.page_count]

    def get_absolute_url(self):
        return self.catalog.get_page().get_absolute_url()


class CatalogExtension(PageExtension):
    is_catalog = models.BooleanField(_('This page is a catalog'), default=True)

    def __unicode__(self):
        return self.get_page().get_title()

    def __str__(self):
        return self.__unicode__().encode("utf-8")

extension_pool.register(CatalogExtension)
Exemplo n.º 13
0
class Metadata(TitleExtension):
    """
    Custom titles and META fields for the page
    """

    ROBOTS_CHOICES = (
        ('index, follow', 'Index, Follow'),
        ('index, nofollow', 'Index, No Follow'),
        ('noindex, follow', 'No Index, Follow'),
        ('noindex, nofollow', 'No Index, No Follow'),
    )

    h1 = models.CharField(verbose_name=_('H1'), max_length=255, blank=True, null=True)
    keywords = models.TextField(verbose_name=_('Meta: Keywords'), blank=True, null=True)
    copyright = models.CharField(verbose_name=_('Meta: Copyright'), blank=True, null=True, max_length=255)
    author = models.CharField(verbose_name=_('Meta: Author'), blank=True, null=True, max_length=255)
    meta_robots = models.CharField(verbose_name=_('Meta: Robots'), choices=ROBOTS_CHOICES, default='index,follow',
                                   max_length=17)

    @property
    def meta_robots_value(self):
        """
        Returns Verbose Value of the meta_robots field
        :return: str
        """
        return dict(self.ROBOTS_CHOICES)[self.meta_robots]


extension_pool.register(Metadata)
Exemplo n.º 14
0
from cms.models.pluginmodel import CMSPlugin
from cms.extensions import PageExtension
from cms.extensions.extension_pool import extension_pool

from django.db import models
from filer.fields.image import FilerImageField


class DiscourseTopicModel(CMSPlugin):
    topic = models.CharField(max_length=100, blank=True, null=True)

    def __unicode__(self):
        return self.topic or "(none)"


class CallToActionModel(CMSPlugin):
    title = models.CharField(max_length=500)
    description = models.CharField(max_length=500, blank=True, null=True)
    url = models.CharField(max_length=500, blank=True, null=True)
    button_text = models.CharField(max_length=100)

    def __unicode__(self):
        return self.title


class SpeakupPageExtension(PageExtension):
    header_image = FilerImageField(null=True, blank=True)


extension_pool.register(SpeakupPageExtension)
Exemplo n.º 15
0
from django.db import models

from cms.extensions import PageExtension
from cms.extensions.extension_pool import extension_pool


class ColorExtension(PageExtension):
    color = models.CharField("color", default=None, help_text="Please provide an HTML color code.", max_length=8)


extension_pool.register(ColorExtension)
Exemplo n.º 16
0
from django.db import models

from cms.extensions import PageExtension, TitleExtension
from cms.extensions.extension_pool import extension_pool
from distutils.version import LooseVersion


class MyPageExtension(PageExtension):
    extra = models.CharField(blank=True, default="", max_length=255)

    if LooseVersion(django.get_version()) < LooseVersion("1.5"):
        favorite_users = models.ManyToManyField(User, blank=True, null=True)
    else:
        favorite_users = models.ManyToManyField(settings.AUTH_USER_MODEL, blank=True, null=True)

    def copy_relations(self, other, language):
        for favorite_user in other.favorite_users.all():
            favorite_user.pk = None
            favorite_user.mypageextension = self
            favorite_user.save()


extension_pool.register(MyPageExtension)


class MyTitleExtension(TitleExtension):
    extra_title = models.CharField(blank=True, default="", max_length=255)


extension_pool.register(MyTitleExtension)
Exemplo n.º 17
0
from cms.extensions import PageExtension, TitleExtension
from cms.extensions.extension_pool import  extension_pool


class MyPageExtension(PageExtension):
    extra = models.CharField(blank=True, default='', max_length=255)
    favorite_users = models.ManyToManyField(settings.AUTH_USER_MODEL, blank=True)

    def copy_relations(self, other, language):
        for favorite_user in other.favorite_users.all():
            favorite_user.pk = None
            favorite_user.mypageextension = self
            favorite_user.save()

extension_pool.register(MyPageExtension)


# extension_pool.register can be used also as a decorator
@extension_pool.register
class MyTitleExtension(TitleExtension):
    extra_title = models.CharField(blank=True, default='', max_length=255)


class MultiTablePageExtensionParent(models.Model):
    extension_parent_field = models.CharField(blank=True, default='', max_length=255)


class MultiTablePageExtension(MultiTablePageExtensionParent, PageExtension):
    multitable_extra = models.CharField(blank=True, default='', max_length=255)
Exemplo n.º 18
0
    Facebook page plugin (widget)
    """
    facebook_page_url = models.URLField(_('facebook page url'))
    tabs = models.CharField(_('tabs'), max_length=255, default='timeline')
    width = models.PositiveSmallIntegerField(
        _('width'), blank=True, null=True,
        validators=[MinValueValidator(180), MaxValueValidator(500)]
    )
    height = models.PositiveSmallIntegerField(
        _('height'), blank=True, null=True,
        validators=[MinValueValidator(70)]
    )
    small_header = models.BooleanField(_('use small header'), default=False)
    hide_cover_photo = models.BooleanField(_('hide cover photo'), default=False)
    adapt_to_container_width = models.BooleanField(_('adapt to container width'), default=True)
    show_friends_faces = models.BooleanField(_('show friend\'s faces'), default=True)

    class Meta:
        verbose_name = _('facebook page plugin')
        verbose_name_plural = _('facebook page plugins')

    def __str__(self):
        return self.facebook_page_url


class IconExtension(PageExtension):
    image = FilerImageField(blank=True, null=True, on_delete=models.SET_NULL)


extension_pool.register(IconExtension)
Exemplo n.º 19
0
from django.db import models
from django.utils.translation import ugettext_lazy as _

from cms.extensions import PageExtension
from cms.extensions.extension_pool import extension_pool

ICON_CATALOG = 'http://materializecss.com/icons.html'


class IconNameExtension(PageExtension):
    icon_name = models.CharField(
        _('Materialize icon name'), max_length=80, null=False, blank=False,
        help_text=_('Choose an icon at ' + ICON_CATALOG))

extension_pool.register(IconNameExtension)
Exemplo n.º 20
0
from django.db import models

from cms.extensions import PageExtension
from cms.extensions.extension_pool import extension_pool
from filer.fields.image import FilerImageField


# Create your models here.


class UngleichPage(PageExtension):
    #image_header = models.ImageField(upload_to='image_header')
    image = FilerImageField(null=True, blank=True,
                           related_name="ungleinch_page_image")

    class Meta:
        app_label = 'ungleich'

extension_pool.register(UngleichPage)
Exemplo n.º 21
0
from django.db import models
from django.utils.translation import get_language

from cms.extensions import PageExtension
from cms.extensions.extension_pool import extension_pool
from cms.utils.i18n import get_language_code


class PageBannerExtension(PageExtension):
    banner_image = models.ImageField(upload_to='banners')
    background_color = models.CharField(max_length=50, default='', blank=True)
    font_color = models.CharField(max_length=50, default='', blank=True)

    def __unicode__(self):
        return self.extended_object.get_title(
            get_language_code(get_language()))

extension_pool.register(PageBannerExtension)
Exemplo n.º 22
0
from .utils import get_cache_key


class PageTags(PageExtension):
    tags = TaggableManager()

    def copy_relations(self, oldinstance, language):
        """ Needed to copy tags when publishing page """
        self.tags.set(*oldinstance.tags.all())

    class Meta:
        verbose_name = _('Page tags (all languages)')


extension_pool.register(PageTags)


class TitleTags(TitleExtension):
    tags = TaggableManager()

    def copy_relations(self, oldinstance, language):
        """ Needed to copy tags when publishing page """
        self.tags.set(*oldinstance.tags.all())

    class Meta:
        verbose_name = _('Page tags (language-dependent)')


extension_pool.register(TitleTags)
Exemplo n.º 23
0
    def render(self, context, instance, placeholder):
        context = super(WorkingGroupPlugin, self)\
            .render(context, instance, placeholder)

        context['workinggroups'] = WorkingGroup.objects.active()
        return context


plugin_pool.register_plugin(WorkingGroupPlugin)


class SignupFormPlugin(CMSPluginBase):
    model = SignupForm
    module = "OKF"
    name = _("Signup Form")
    render_template = "organisation/signup_form.html"

    def render(self, context, instance, placeholder):
        context = super(SignupFormPlugin, self)\
            .render(context, instance, placeholder)

        context['title'] = instance.title
        context['description'] = instance.description
        return context


plugin_pool.register_plugin(SignupFormPlugin)


extension_pool.register(SideBarExtension)
Exemplo n.º 24
0
from cms.models import CMSPlugin
from django.db import models
from django.utils.translation import ugettext_lazy as _

from cms.extensions import PageExtension
from cms.extensions.extension_pool import extension_pool


class ArticlesPlugin(CMSPlugin):
    limit = models.PositiveIntegerField(_('Articles per page'))


class TeaserExtension(PageExtension):
    title = models.CharField(_('title'), max_length=255, blank=True, null=True)
    image = models.ImageField(
        _('image'), upload_to='teaser', blank=True, null=True)
    description = models.TextField(_('description'), blank=True, null=True)

extension_pool.register(TeaserExtension)
Exemplo n.º 25
0
# -*- coding: utf-8 -*-
from django.db import models
from cms.extensions import PageExtension
from cms.extensions.extension_pool import extension_pool


class DjuPageThumbnail(PageExtension):
    image = models.ImageField(upload_to='pageimages', blank=True)


extension_pool.register(DjuPageThumbnail)
Exemplo n.º 26
0
"""
Django models that store data required for OGO's CMS extensions
"""
from cms.extensions import PageExtension
from cms.extensions.extension_pool import extension_pool
from filer.fields.image import FilerImageField


class FeatureImageExtension(PageExtension):
    """ Extend the CMS page model to add OGO-specific fields """
    feature_image = FilerImageField(blank=True)

extension_pool.register(FeatureImageExtension)
Exemplo n.º 27
0
from django.db import models
from django.utils.translation import ugettext as _

from cms.extensions import PageExtension
from cms.extensions.extension_pool import extension_pool


class SitemapExtension(PageExtension):
    show_on_sitemap = models.BooleanField(_('Show on sitemap'),
                                          null=False,
                                          default=True)
    show_on_xml_sitemap = models.BooleanField(_('Show on xml sitemap'),
                                              null=False,
                                              default=True)
    noindex = models.BooleanField(_('noindex'), null=False, default=False)
    nofollow = models.BooleanField(_('nofollow'), null=False, default=False)
    canonical_url = models.CharField(blank=True,
                                     null=True,
                                     max_length=255,
                                     verbose_name=_('Canonical URL'))


extension_pool.register(SitemapExtension)
Exemplo n.º 28
0
        related_name='preview_image_extensions'
    )
    teaser = models.TextField(verbose_name=_('teaser'), blank=True)
    show_preview = models.BooleanField(
        verbose_name=_('show preview?'),
        default=True
    )
    extra_classes = models.CharField(verbose_name=_('extra classes'),
        max_length=512, blank=True)

    class Meta:
        verbose_name=_('Page Image and Teaser')

    def get_preview_image(self):
        return self.preview_image or self.image
extension_pool.register(ImageExtension)


class ChildPagePreviewPlugin(CMSPlugin):
    STYLE_CHOICES = getattr(
        settings,
        'DJANGOCMS_PAGE_IMAGE_CPP_STYLE_CHOICES',
        []
    )
    DEFAULT_STYLE = getattr(
        settings,
        'DJANGOCMS_PAGE_IMAGE_CPP_DEFAULT_STYLE',
        ''
    )
    style = models.CharField(
        _('style'),
Exemplo n.º 29
0
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from jsonfield.fields import JSONField
from cms.extensions import PageExtension
from cms.extensions.extension_pool import extension_pool


class RevealExtension(PageExtension):
    options = JSONField(blank=True, default={})

    class Meta:
        db_table = 'cmsplugin_cascade_reveal'
        verbose_name = "Reveal Option"
        verbose_name_plural = "Reveal Options"

    def __str__(self):
        return PageExtension.__str__(self)

extension_pool.register(RevealExtension)
Exemplo n.º 30
0
    )

    class Meta:
        db_table = 'cmsplugin_cascade_page'
        verbose_name = verbose_name_plural = _("Cascade Page Settings")

    def __str__(self):
        return self.get_page().get_title()

    @classmethod
    def assure_relation(cls, cms_page):
        """
        Assure that we have a foreign key relation, pointing from CascadePage onto CMSPage.
        """
        try:
            cms_page.cascadepage
        except cls.DoesNotExist:
            cls.objects.create(extended_object=cms_page)

    @classmethod
    def delete_cascade_element(cls, instance=None, **kwargs):
        if isinstance(instance, CascadeModelBase):
            try:
                instance.placeholder.page.cascadepage.glossary['element_ids'].pop(str(instance.pk))
                instance.placeholder.page.cascadepage.save()
            except (AttributeError, KeyError):
                pass

extension_pool.register(CascadePage)
models.signals.pre_delete.connect(CascadePage.delete_cascade_element, dispatch_uid='delete_cascade_element')
Exemplo n.º 31
0
# ‐*‐ coding: utf‐8 ‐*‐
from django.db import models

# page extension imports
from cms.extensions import PageExtension
from cms.extensions.extension_pool import extension_pool

# django filer imports
from filer.fields.image import FilerImageField


class PageFieldExtension(PageExtension):
    subtitle = models.CharField(max_length=255, blank=True)
    background_image = FilerImageField(blank=True)


extension_pool.register(PageFieldExtension)
Exemplo n.º 32
0
from django.utils.html import strip_tags
from menu import invalidate_menu_cache

from cms.extensions import PageExtension
from cms.extensions.extension_pool import extension_pool
from cms.models.pluginmodel import CMSPlugin
from django.db import models

from tinymce import models as tinymodels


class MenuExtension(PageExtension):
    show_on_top_menu = models.BooleanField(default=False)
    show_on_footer_menu = models.BooleanField(default=False)

extension_pool.register(MenuExtension)


def update_menu_settings(sender, **kwargs):
    invalidate_menu_cache()

post_save.connect(update_menu_settings, sender=MenuExtension, dispatch_uid='update_menu_settings')


class NewsletterSignups(models.Model):
    registered_date = models.DateTimeField(auto_now_add=True)
    email = models.CharField(max_length=300)

    class Meta:
        verbose_name = 'Newsletter Signup'
        verbose_name_plural = 'Newsletter Signups'
Exemplo n.º 33
0
    slideshow = PlaceholderField('richpage_slideshow', related_name='richpage_slideshow')


class RichSlideshow(PageExtension):
    slideshow_title = models.CharField(max_length=100, default='Slideshow title')

    def save(self, *args, **kwargs):
        from cms.api import add_plugin

        if not self.pk:
            super(RichSlideshow, self).save(*args, **kwargs)
            page = self.extended_object

            placeholder = page.get_title_obj().richpage.slideshow

            language = settings.LANGUAGES[0][0]

            gallery_plugin = add_plugin(placeholder, GalleryCMSPlugin, language)
            
            data = {'folder_id': 1} # TODO add new folder for each slideshow
            
            child_plugin = add_plugin(placeholder, SlideFolderCMSPlugin, language, target=gallery_plugin, **data)
        else:
            super(RichSlideshow, self).save(*args, **kwargs)


extension_pool.register(RichPage)
extension_pool.register(RichSlideshow)