X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/f17e66aa4210a226669dd96e26295d6f58b94703..43116c58e5c56f94ef358a5a17fb13a252e02531:/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 index cb67b2fd..00000000 --- a/apps/filebrowser/templatetags/fb_versions.py +++ /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)