Exemple #1
0
 def clean(self, value):
     cleaned_data = super().clean(value)
     # Validating if URL is a valid YouTube URL
     youtube_embed = cleaned_data.get('youtube_embed').url
     youtube_finder = OEmbedFinder(providers=[oembed_providers.youtube])
     if not youtube_finder.accept(youtube_embed):
         e = ValidationError('URL must be a YouTube URL')
         raise ValidationError('Validation error in StructBlock',
                               params={'youtube_embed': ErrorList([e])})
     return cleaned_data
Exemple #2
0
    def clean(self):
        from girleffect.utils.blocks import validate_hex

        if self.hero_strapline_hex:
            if not validate_hex(self.hero_strapline_hex):
                raise ValidationError(
                    {'hero_strapline_hex': _('Please enter a valid hex code')})

        # Validating if URL is a valid YouTube URL
        youtube_embed = self.link_youtube
        if youtube_embed:
            youtube_finder = OEmbedFinder(providers=[oembed_providers.youtube])
            if not youtube_finder.accept(youtube_embed):
                raise ValidationError(
                    {'link_youtube': _('Please supply a valid YouTube URL.')})
            else:
                try:
                    embed = get_embed(youtube_embed)
                    self.link_youtube_html = embed.html
                except EmbedException:
                    raise ValidationError(
                        {'link_youtube': _('Embed cannot be found.')})

        # Validating links
        populated_fields = []

        for link_field in [self.link_page, self.link_youtube]:
            if link_field:
                populated_fields.append(link_field)

        # Only only one or less fields can be selected
        if len(populated_fields) > 1:
            error_message = 'Please choose only one of Link Page or Link YouTube as destination.'
            raise ValidationError({
                'link_page': error_message,
                'link_youtube': error_message
            })

        # Link fields should have link text
        if len(populated_fields) >= 1 and not self.link_text:
            raise ValidationError({
                'link_text':
                'Link text is required if link destination has been selected'
            })

        return super(HeroVideoFields, self).clean()
Exemple #3
0
 def test_oembed_doesnt_accept_unknown_provider(self):
     finder = OEmbedFinder(providers=[oembed_providers.twitter])
     self.assertFalse(finder.accept("http://www.youtube.com/watch/"))
Exemple #4
0
 def test_oembed_accepts_known_provider(self):
     finder = OEmbedFinder(providers=[oembed_providers.youtube])
     self.assertTrue(finder.accept("http://www.youtube.com/watch/"))
Exemple #5
0
 def test_oembed_doesnt_accept_unknown_provider(self):
     finder = OEmbedFinder(providers=[oembed_providers.twitter])
     self.assertFalse(finder.accept("http://www.youtube.com/watch/"))
Exemple #6
0
 def test_oembed_accepts_known_provider(self):
     finder = OEmbedFinder(providers=[oembed_providers.youtube])
     self.assertTrue(finder.accept("http://www.youtube.com/watch/"))