Source code for shuup.front.apps.carousel.plugins

# -*- coding: utf-8 -*-
# This file is part of Shuup.
#
# Copyright (c) 2012-2021, Shuup Commerce Inc. All rights reserved.
#
# This source code is licensed under the OSL-3.0 license found in the
# LICENSE file in the root directory of this source tree.
from django import forms
from django.utils.translation import ugettext_lazy as _

from shuup.front.apps.carousel.models import Carousel
from shuup.xtheme import TemplatedPlugin
from shuup.xtheme.plugins.forms import TranslatableField

from .forms import CarouselConfigForm


[docs]class CarouselPlugin(TemplatedPlugin): identifier = "shuup.front.apps.carousel.carousel" name = _("Carousel Plugin") template_name = "shuup/carousel/carousel.jinja" cacheable = True fields = [ ("carousel", None), ( "render_image_text", forms.BooleanField( label=_("Render image text"), required=False, initial=True, help_text=_("Display the text on top of the image."), ), ), ] editor_form_class = CarouselConfigForm
[docs] def get_defaults(self): defaults = super(CarouselPlugin, self).get_defaults() defaults.update({"carousel": self.config.get("carousel", None), "active": self.config.get("active", True)}) return defaults
[docs] def get_cache_key(self, context, **kwargs) -> str: carousel_id = self.config.get("carousel") active = self.config.get("active") return str((carousel_id, active))
[docs] def get_context_data(self, context): """ Use only slides that has translated image in current language :param context: current context :return: updated plugin context :rtype: dict """ request = context["request"] carousel_id = self.config.get("carousel") active = self.config.get("active") return { "request": request, "carousel": Carousel.objects.filter(id=carousel_id, shops=request.shop).first() if carousel_id else None, "active": active, "type": "carousel", }
[docs]class BannerBoxPlugin(CarouselPlugin): identifier = "shuup.front.apps.carousel.banner_box" name = _("Banner Box") editor_form_class = CarouselConfigForm fields = [ ("title", TranslatableField(label=_("Title"), required=False, initial="")), ( "render_image_text", forms.BooleanField( label=_("Render image text"), required=False, initial=True, help_text=_("Display the text on top of the image."), ), ), ]
[docs] def get_context_data(self, context): """ Add title from config to context data :param context: Current context :return: updated Plugin context :rtype: dict """ data = super(BannerBoxPlugin, self).get_context_data(context) data["title"] = self.get_translated_value("title") data["type"] = "banner_box" return data