Merge branch 'master' into ofop
[redakcja.git] / apps / filebrowser / templatetags / fb_versions.py
diff --git a/apps/filebrowser/templatetags/fb_versions.py b/apps/filebrowser/templatetags/fb_versions.py
deleted file mode 100644 (file)
index cb67b2f..0000000
+++ /dev/null
@@ -1,178 +0,0 @@
-# coding: utf-8
-
-import os
-import re
-from django.template import Library, Node, Variable, VariableDoesNotExist, TemplateSyntaxError
-from django.conf import settings
-from django.utils.encoding import force_unicode
-
-# filebrowser imports
-from filebrowser.fb_settings import MEDIA_ROOT, MEDIA_URL, VERSIONS
-from filebrowser.functions import _url_to_path, _path_to_url, _get_version_path, _version_generator
-from filebrowser.base import FileObject
-
-import logging
-logger = logging.getLogger("django.filebrowser")
-
-register = Library()
-
-
-class VersionNode(Node):
-    def __init__(self, src, version_prefix):
-        self.src = Variable(src)
-        if (version_prefix[0] == version_prefix[-1] and version_prefix[0] in ('"', "'")):
-            self.version_prefix = version_prefix[1:-1]
-        else:
-            self.version_prefix = None
-            self.version_prefix_var = Variable(version_prefix)
-
-    def render(self, context):
-        try:
-            source = self.src.resolve(context)
-        except VariableDoesNotExist:
-            return None
-
-        if self.version_prefix:
-            version_prefix = self.version_prefix
-        else:
-            try:
-                version_prefix = self.version_prefix_var.resolve(context)
-            except VariableDoesNotExist:
-                return None
-
-        try:
-            version_path = _get_version_path(_url_to_path(str(source)), version_prefix)
-            if not os.path.isfile(os.path.join(MEDIA_ROOT, version_path)):
-                # create version
-                version_path = _version_generator(_url_to_path(str(source)), version_prefix)
-            elif os.path.getmtime(os.path.join(MEDIA_ROOT, _url_to_path(str(source)))) > os.path.getmtime(os.path.join(MEDIA_ROOT, version_path)):
-                # recreate version if original image was updated
-                version_path = _version_generator(_url_to_path(str(source)), version_prefix, force=True)
-            return _path_to_url(version_path)
-        except Exception:
-            logger.exception("Version error")
-            return u""
-
-
-def version(parser, token):
-    """
-    Displaying a version of an existing Image according to the predefined VERSIONS settings (see fb_settings).
-    {% version field_name version_prefix %}
-
-    Use {% version my_image 'medium' %} in order to display the medium-size
-    version of an Image stored in a field name my_image.
-
-    version_prefix can be a string or a variable. if version_prefix is a string, use quotes.
-    """
-
-    try:
-        tag, src, version_prefix = token.split_contents()
-    except:
-        raise TemplateSyntaxError("%s tag requires 2 arguments" % token.contents.split()[0])
-    if (version_prefix[0] == version_prefix[-1] and version_prefix[0] in ('"', "'")) and version_prefix.lower()[1:-1] not in VERSIONS:
-        raise TemplateSyntaxError("%s tag received bad version_prefix %s" % (tag, version_prefix))
-    return VersionNode(src, version_prefix)
-
-
-class VersionObjectNode(Node):
-
-    def __init__(self, src, version_prefix, var_name):
-        self.var_name = var_name
-        self.src = Variable(src)
-        if (version_prefix[0] == version_prefix[-1] and version_prefix[0] in ('"', "'")):
-            self.version_prefix = version_prefix[1:-1]
-        else:
-            self.version_prefix = None
-            self.version_prefix_var = Variable(version_prefix)
-
-    def render(self, context):
-        try:
-            source = self.src.resolve(context)
-        except VariableDoesNotExist:
-            return None
-        if self.version_prefix:
-            version_prefix = self.version_prefix
-        else:
-            try:
-                version_prefix = self.version_prefix_var.resolve(context)
-            except VariableDoesNotExist:
-                return None
-        try:
-            version_path = _get_version_path(_url_to_path(str(source)), version_prefix)
-            if not os.path.isfile(os.path.join(MEDIA_ROOT, version_path)):
-                # create version
-                version_path = _version_generator(_url_to_path(str(source)), version_prefix)
-            elif os.path.getmtime(os.path.join(MEDIA_ROOT, _url_to_path(str(source)))) > os.path.getmtime(os.path.join(MEDIA_ROOT, version_path)):
-                # recreate version if original image was updated
-                version_path = _version_generator(_url_to_path(str(source)), version_prefix, force=True)
-            context[self.var_name] = FileObject(version_path)
-        except:
-            context[self.var_name] = ""
-        return ''
-
-
-def version_object(parser, token):
-    """
-    Returns a context variable 'version_object'.
-    {% version_object field_name version_prefix %}
-
-    Use {% version_object my_image 'medium' %} in order to retrieve the medium
-    version of an Image stored in a field name my_image.
-    Use {% version_object my_image 'medium' as var %} in order to use 'var' as
-    your context variable.
-
-    version_prefix can be a string or a variable. if version_prefix is a string, use quotes.
-    """
-
-    try:
-        #tag, src, version_prefix = token.split_contents()
-        tag, arg = token.contents.split(None, 1)
-    except:
-        raise TemplateSyntaxError("%s tag requires arguments" % token.contents.split()[0])
-    m = re.search(r'(.*?) (.*?) as (\w+)', arg)
-    if not m:
-        raise TemplateSyntaxError("%r tag had invalid arguments" % tag)
-    src, version_prefix, var_name = m.groups()
-    if (version_prefix[0] == version_prefix[-1] and version_prefix[0] in ('"', "'")) and version_prefix.lower()[1:-1] not in VERSIONS:
-        raise TemplateSyntaxError("%s tag received bad version_prefix %s" % (tag, version_prefix))
-    return VersionObjectNode(src, version_prefix, var_name)
-
-
-class VersionSettingNode(Node):
-
-    def __init__(self, version_prefix):
-        if (version_prefix[0] == version_prefix[-1] and version_prefix[0] in ('"', "'")):
-            self.version_prefix = version_prefix[1:-1]
-        else:
-            self.version_prefix = None
-            self.version_prefix_var = Variable(version_prefix)
-
-    def render(self, context):
-        if self.version_prefix:
-            version_prefix = self.version_prefix
-        else:
-            try:
-                version_prefix = self.version_prefix_var.resolve(context)
-            except VariableDoesNotExist:
-                return None
-        context['version_setting'] = VERSIONS[version_prefix]
-        return ''
-
-
-def version_setting(parser, token):
-    """
-    Get Information about a version setting.
-    """
-
-    try:
-        tag, version_prefix = token.split_contents()
-    except:
-        raise TemplateSyntaxError("%s tag requires 1 argument" % token.contents.split()[0])
-    if (version_prefix[0] == version_prefix[-1] and version_prefix[0] in ('"', "'")) and version_prefix.lower()[1:-1] not in VERSIONS:
-        raise TemplateSyntaxError("%s tag received bad version_prefix %s" % (tag, version_prefix))
-    return VersionSettingNode(version_prefix)
-
-
-register.tag(version)
-register.tag(version_object)
-register.tag(version_setting)