class PrimaryHeroShelfSerializer(serializers.ModelSerializer): description = serializers.SerializerMethodField() featured_image = serializers.CharField(source='image_url') addon = DiscoveryAddonSerializer(source='promoted_addon.addon') external = ExternalAddonSerializer(source='promoted_addon.addon') class Meta: model = PrimaryHero fields = ('addon', 'description', 'external', 'featured_image', 'gradient') def to_representation(self, instance): rep = super().to_representation(instance) rep.pop('addon' if instance.is_external else 'external') return rep def get_description(self, obj): if 'request' in self.context and 'raw' in self.context['request'].GET: return str(obj.description or '') elif obj.description: return ugettext(obj.description) else: addon = obj.promoted_addon.addon return (str(addon.summary) if addon.summary and addon.type == amo.ADDON_EXTENSION else '')
class PrimaryHeroShelfSerializer(serializers.ModelSerializer): description = serializers.CharField(source='disco_addon.description') featured_image = serializers.SerializerMethodField() heading = serializers.CharField(source='disco_addon.heading') addon = DiscoveryAddonSerializer(source='disco_addon.addon') class Meta: model = PrimaryHero fields = ('addon', 'description', 'featured_image', 'gradient', 'heading') def get_featured_image(self, obj): return absolutify(obj.image_path)
class PrimaryHeroShelfSerializer(serializers.ModelSerializer): description = serializers.CharField(source='disco_addon.description') featured_image = serializers.CharField(source='image_url') addon = DiscoveryAddonSerializer(source='disco_addon.addon') external = ExternalAddonSerializer(source='disco_addon.addon') class Meta: model = PrimaryHero fields = ('addon', 'description', 'external', 'featured_image', 'gradient') def to_representation(self, instance): rep = super().to_representation(instance) rep.pop('addon' if instance.is_external else 'external') return rep
def test_basic(self): addon = addon_factory() hero = PrimaryHero.objects.create( promoted_addon=PromotedAddon.objects.create(addon=addon), description='Déscription', select_image=self.phi, gradient_color='#008787') data = PrimaryHeroShelfSerializer(instance=hero).data assert data == { 'featured_image': self.image, 'description': 'Déscription', 'gradient': { 'start': GRADIENT_START_COLOR[1], 'end': 'color-green-70' }, 'addon': DiscoveryAddonSerializer(instance=addon).data, }
def test_basic(self): addon = addon_factory() hero = PrimaryHero.objects.create( disco_addon=DiscoveryItem.objects.create( addon=addon, custom_description='Déscription'), image='foo.png', gradient_color='#008787') data = PrimaryHeroShelfSerializer(instance=hero).data assert data == { 'featured_image': ( 'http://testserver/static/img/hero/featured/foo.png'), 'description': 'Déscription', 'gradient': { 'start': GRADIENT_START_COLOR[1], 'end': 'color-green-70' }, 'addon': DiscoveryAddonSerializer(instance=addon).data, }
def test_basic(self): addon = addon_factory(summary='Summary') hero = PrimaryHero.objects.create( disco_addon=DiscoveryItem.objects.create( addon=addon, custom_heading='Its a héading!'), image='foo.png', gradient_color='#123456') data = PrimaryHeroShelfSerializer(instance=hero).data assert data == { 'featured_image': hero.image_path, 'heading': 'Its a héading!', 'description': '<blockquote>Summary</blockquote>', 'gradient': { 'start': GRADIENT_START_COLOR, 'end': '#123456' }, 'addon': DiscoveryAddonSerializer(instance=addon).data, }
class PrimaryHeroShelfSerializer(serializers.ModelSerializer): description = serializers.CharField(source='disco_addon.description') featured_image = serializers.SerializerMethodField() heading = serializers.CharField(source='disco_addon.heading') addon = DiscoveryAddonSerializer(source='disco_addon.addon') external = ExternalAddonSerializer(source='disco_addon.addon') class Meta: model = PrimaryHero fields = ('addon', 'description', 'external', 'featured_image', 'gradient', 'heading') def to_representation(self, instance): rep = super().to_representation(instance) rep.pop('addon' if instance.is_external else 'external') return rep def get_featured_image(self, obj): return absolutify(obj.image_path)
def test_basic(self): addon = addon_factory() uploaded_photo = get_uploaded_file('transparent.png') phi = PrimaryHeroImage.objects.create(custom_image=uploaded_photo) hero = PrimaryHero.objects.create( disco_addon=DiscoveryItem.objects.create( addon=addon), description='Déscription', select_image=phi, gradient_color='#008787') data = PrimaryHeroShelfSerializer(instance=hero).data assert data == { 'featured_image': self.image, 'description': 'Déscription', 'gradient': { 'start': GRADIENT_START_COLOR[1], 'end': 'color-green-70' }, 'addon': DiscoveryAddonSerializer(instance=addon).data, }