diff --git a/docs/examples.rst b/docs/examples.rst index f526ca5..7d807d4 100644 --- a/docs/examples.rst +++ b/docs/examples.rst @@ -38,6 +38,16 @@ Default sizes are ``tiny`` (420x315), ``small`` (480x360), ``medium`` (640x480), .. versionadded:: 0.7 This usage has been added in version 0.7. +.. versionadded:: 0.9 + + And use relative percentual size: + + :: + + {% video my_video '100% x 50%' %} + + + .. tip:: We recommend to use `sorl-thumbnail diff --git a/embed_video/templatetags/embed_video_tags.py b/embed_video/templatetags/embed_video_tags.py index 4ea32ef..5e4e86b 100644 --- a/embed_video/templatetags/embed_video_tags.py +++ b/embed_video/templatetags/embed_video_tags.py @@ -37,6 +37,7 @@ class VideoNode(Node): {% video item.video "large" %} {% video item.video "340x200" %} + {% video item.video "100% x 300" %} {% video item.video as my_video %} URL: {{ my_video.url }} @@ -48,7 +49,7 @@ class VideoNode(Node): error_msg = 'Syntax error. Expected: ``{% video URL ... %}``' default_size = 'small' - re_size = re.compile('(?P\d+)x(?P\d+)') + re_size = re.compile('(?P\d+%?) *x *(?P\d+%?)') def __init__(self, parser, token): self.size = None @@ -150,7 +151,7 @@ class VideoNode(Node): try: size = VideoNode.re_size.match(value) - return [int(size.group('width')), int(size.group('height'))] + return [size.group('width'), size.group('height')] except AttributeError: raise TemplateSyntaxError( 'Incorrect size.\nPossible format is WIDTHxHEIGHT or using ' diff --git a/embed_video/tests/tests_tags.py b/embed_video/tests/tests_tags.py index 7417c56..e984bf1 100644 --- a/embed_video/tests/tests_tags.py +++ b/embed_video/tests/tests_tags.py @@ -187,3 +187,19 @@ class EmbedVideoNodeTestCase(TestCase): log = logs.records[-1] self.assertEqual(log.name, 'embed_video.templatetags.embed_video_tags') self.assertEqual(log.msg, 'Timeout reached during rendering embed video (`http://vimeo.com/72304002`)') + + def test_relative_size(self): + template = Template(""" + {% load embed_video_tags %} + {% video "http://vimeo.com/72304002" "80%x30%" %} + """) + rendered = '' + self.assertEqual(template.render(self._grc()).strip(), rendered) + + def test_allow_spaces_in_size(self): + template = Template(""" + {% load embed_video_tags %} + {% video "http://vimeo.com/72304002" "80% x 300" %} + """) + rendered = '' + self.assertEqual(template.render(self._grc()).strip(), rendered)