--- /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
+