From 765d1b29040981b001e940f0a59ccd0235cf68bb Mon Sep 17 00:00:00 2001 From: Calzzetta Date: Sun, 23 Feb 2014 22:27:06 -0300 Subject: [PATCH 1/6] Update embed_video_tags.py Now is possible set relative sizes in template tag. Ex: '100%x500' or '500x100%' or '100%x100%' --- embed_video/templatetags/embed_video_tags.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/embed_video/templatetags/embed_video_tags.py b/embed_video/templatetags/embed_video_tags.py index 4ea32ef..983ddb5 100644 --- a/embed_video/templatetags/embed_video_tags.py +++ b/embed_video/templatetags/embed_video_tags.py @@ -48,7 +48,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\w+[%]?)x(?P\w+[%]?)') def __init__(self, parser, token): self.size = None @@ -150,7 +150,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 ' From cebffa60da2fae8403ac6b23f785fa140461eb24 Mon Sep 17 00:00:00 2001 From: Calzzetta Date: Mon, 24 Feb 2014 07:09:29 -0300 Subject: [PATCH 2/6] Change the regex to allow only numbers --- embed_video/templatetags/embed_video_tags.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/embed_video/templatetags/embed_video_tags.py b/embed_video/templatetags/embed_video_tags.py index 983ddb5..91c0b6d 100644 --- a/embed_video/templatetags/embed_video_tags.py +++ b/embed_video/templatetags/embed_video_tags.py @@ -48,7 +48,7 @@ class VideoNode(Node): error_msg = 'Syntax error. Expected: ``{% video URL ... %}``' default_size = 'small' - re_size = re.compile('(?P\w+[%]?)x(?P\w+[%]?)') + re_size = re.compile('(?P\d+[%]?)x(?P\d+[%]?)') def __init__(self, parser, token): self.size = None From 92f285cfc939f3cce0f4bbaba07c0270ebc9b74f Mon Sep 17 00:00:00 2001 From: Juda Kaleta Date: Fri, 7 Mar 2014 22:23:09 +0100 Subject: [PATCH 3/6] Add tests for relative size --- embed_video/backends.py | 2 +- embed_video/tests/tests_tags.py | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/embed_video/backends.py b/embed_video/backends.py index 6c76135..61a819c 100644 --- a/embed_video/backends.py +++ b/embed_video/backends.py @@ -138,7 +138,7 @@ class VideoBackend(object): """ Returns embed code. """ - return '' % { 'url': self.url, diff --git a/embed_video/tests/tests_tags.py b/embed_video/tests/tests_tags.py index 6010510..ed32ab1 100644 --- a/embed_video/tests/tests_tags.py +++ b/embed_video/tests/tests_tags.py @@ -182,3 +182,11 @@ 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) From 2f59d8b05ed91fb5b4e18771b4636dfd33d70542 Mon Sep 17 00:00:00 2001 From: Juda Kaleta Date: Fri, 7 Mar 2014 22:24:23 +0100 Subject: [PATCH 4/6] Simplify regex for relative size --- embed_video/templatetags/embed_video_tags.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/embed_video/templatetags/embed_video_tags.py b/embed_video/templatetags/embed_video_tags.py index 91c0b6d..aa6b0ee 100644 --- a/embed_video/templatetags/embed_video_tags.py +++ b/embed_video/templatetags/embed_video_tags.py @@ -48,7 +48,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 From 3c37fe16a083b6b66c2211842e826e6728262e80 Mon Sep 17 00:00:00 2001 From: Juda Kaleta Date: Fri, 7 Mar 2014 22:27:40 +0100 Subject: [PATCH 5/6] Allow x surrounded by spaces --- embed_video/templatetags/embed_video_tags.py | 2 +- embed_video/tests/tests_tags.py | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/embed_video/templatetags/embed_video_tags.py b/embed_video/templatetags/embed_video_tags.py index aa6b0ee..d2a9d87 100644 --- a/embed_video/templatetags/embed_video_tags.py +++ b/embed_video/templatetags/embed_video_tags.py @@ -48,7 +48,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 diff --git a/embed_video/tests/tests_tags.py b/embed_video/tests/tests_tags.py index ed32ab1..92684f7 100644 --- a/embed_video/tests/tests_tags.py +++ b/embed_video/tests/tests_tags.py @@ -190,3 +190,11 @@ class EmbedVideoNodeTestCase(TestCase): """) 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) From 86e2725bdb1729826f6a6e0359957899c417c3e1 Mon Sep 17 00:00:00 2001 From: Juda Kaleta Date: Fri, 7 Mar 2014 22:28:08 +0100 Subject: [PATCH 6/6] Add example of relative size --- docs/examples.rst | 12 +++++++++++- embed_video/templatetags/embed_video_tags.py | 1 + 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/docs/examples.rst b/docs/examples.rst index b0b7519..ce61ace 100644 --- a/docs/examples.rst +++ b/docs/examples.rst @@ -38,6 +38,16 @@ Default sizes are ``tiny`` (420x315), ``small`` (480x360), ``medium`` (640x480), {% video my_video '800x600' %} +.. versionadded:: 0.9 + + And use relative percentual size: + + :: + + {% video my_video '100% x 50%' %} + + + .. tip:: We recommend to use `sorl-thumbnail @@ -91,7 +101,7 @@ Custom backends ############################################### If you have specific needs and default backends don't suits you, you can write -your custom backend. +your custom backend. ``my_project/my_app/backends.py``:: diff --git a/embed_video/templatetags/embed_video_tags.py b/embed_video/templatetags/embed_video_tags.py index d2a9d87..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 }}