degal/utils.py
branchuse-distutils
changeset 41 3b1579a7bffb
parent 28 70b6c13d084f
child 44 533b7e8b5d3b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/degal/utils.py	Wed Jun 03 19:03:28 2009 +0300
@@ -0,0 +1,89 @@
+# DeGAL - A pretty simple web image gallery
+# Copyright (C) 2007 Tero Marttila
+# http://marttila.de/~terom/degal/
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the
+# Free Software Foundation, Inc.,
+# 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+
+import os, os.path
+
+import settings
+
+def isImage (fname) :
+    """
+        Is the given filename likely to be an image file?
+    """
+
+    fname = fname.lower()
+    base, ext = os.path.splitext(fname)
+    ext = ext.lstrip('.')
+
+    return ext in settings.IMAGE_EXTS
+
+def readFile (path) :
+    fo = open(path, 'r')
+    data = fo.read()
+    fo.close()
+
+    return data
+
+def fuzzyDecode (bytes) :
+    try :
+        return bytes.decode('utf8')
+    except UnicodeDecodeError :
+        return bytes.decode('latin1', 'replace')
+
+def readTitleDescr (path) :
+    """
+        Read a title.txt or <imgname>.txt file
+    """
+
+    if os.path.exists(path) :
+        content = readFile(path)
+
+        if '---' in content :
+            title, descr = content.split('---', 1)
+        else :
+            title, descr = content, ''
+        
+        title, descr = fuzzyDecode(title), fuzzyDecode(descr)
+
+        return title.strip(), descr.strip()
+
+    return u"", u""
+
+def url (*parts, **kwargs) :
+    abs = kwargs.pop('abs', False)
+    up = kwargs.pop('up', 0)
+    trailing = kwargs.pop('trailing', False)
+    
+    return '/'.join(([""]*int(abs)) + ([".."]*up) + list(parts) + ([""]*int(trailing)))
+
+url_join = url
+
+def path_join (*parts) :
+    return os.path.join(*[part for part in parts if part is not None])
+
+def strip_path (path) :
+    return path.lstrip('.').lstrip('/')
+
+def mtime (path) :
+    try :
+        return os.stat(path).st_mtime
+    except OSError :
+        # no such file or directory
+        return None
+