Unicode errors in filebrowser. Refs #372.
[redakcja.git] / apps / filebrowser / templatetags / fb_versions.py
index 887fd9e..cdb0519 100644 (file)
@@ -5,6 +5,7 @@ from time import gmtime
 from django.template import Library, Node, Variable, VariableDoesNotExist, TemplateSyntaxError
 from django.conf import settings
 from django.utils.encoding import force_unicode
+import urllib
 
 # filebrowser imports
 from filebrowser.fb_settings import MEDIA_ROOT, MEDIA_URL, VERSIONS
@@ -21,12 +22,13 @@ class VersionNode(Node):
         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:
@@ -34,6 +36,7 @@ class VersionNode(Node):
                 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)):
@@ -41,11 +44,15 @@ class VersionNode(Node):
                 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)
+                version_path = _version_generator(_url_to_path(str(source)), version_prefix, force = True)
             return _path_to_url(version_path)
-        except:
-            return ""
-    
+        except Exception, e:
+            import traceback, sys
+            print "FB VERSION ERROR"
+            traceback.print_exc(file = sys.stdout)
+            return u""
+
+
 
 def version(parser, token):
     """
@@ -57,7 +64,7 @@ def version(parser, token):
     
     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:
@@ -65,7 +72,7 @@ def version(parser, token):
     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):
@@ -76,7 +83,7 @@ class VersionObjectNode(Node):
         else:
             self.version_prefix = None
             self.version_prefix_var = Variable(version_prefix)
-    
+
     def render(self, context):
         try:
             source = self.src.resolve(context)
@@ -96,12 +103,12 @@ class VersionObjectNode(Node):
                 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)
+                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):
     """
@@ -115,7 +122,7 @@ def version_object(parser, token):
     
     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)
@@ -128,7 +135,7 @@ def version_object(parser, token):
     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):
@@ -137,7 +144,7 @@ class VersionSettingNode(Node):
         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
@@ -148,13 +155,13 @@ class VersionSettingNode(Node):
                 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:
@@ -162,7 +169,7 @@ def version_setting(parser, token):
     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)