diff -r 373392025533 -r 3b1579a7bffb degal/utils.py --- /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 .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 +