Add cover_thumb to tests.
[wolnelektury.git] / src / catalogue / utils.py
index e79b439..380ec8e 100644 (file)
@@ -2,23 +2,24 @@
 # This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
 #
 # This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
 #
-from collections import defaultdict
 import hashlib
 import hashlib
+import os.path
 import random
 import re
 import time
 from base64 import urlsafe_b64encode
 import random
 import re
 import time
 from base64 import urlsafe_b64encode
-
-from django.http import HttpResponse
-from django.core.files.uploadedfile import UploadedFile
-from django.core.files.storage import DefaultStorage
-from django.utils.encoding import force_unicode
-from django.conf import settings
-from os import mkdir, path, unlink
+from collections import defaultdict
 from errno import EEXIST, ENOENT
 from fcntl import flock, LOCK_EX
 from errno import EEXIST, ENOENT
 from fcntl import flock, LOCK_EX
+from os import mkdir, path, unlink
 from zipfile import ZipFile
 
 from zipfile import ZipFile
 
+from django.conf import settings
+from django.core.files.storage import DefaultStorage
+from django.core.files.uploadedfile import UploadedFile
+from django.http import HttpResponse
+from django.utils.encoding import force_unicode
+
 from reporting.utils import read_chunks
 
 # Use the system (hardware-based) random number generator if it exists.
 from reporting.utils import read_chunks
 
 # Use the system (hardware-based) random number generator if it exists.
@@ -84,7 +85,7 @@ class LockFile(object):
         try:
             unlink(self.lockname)
         except OSError as oe:
         try:
             unlink(self.lockname)
         except OSError as oe:
-            if oe.errno != EEXIST:
+            if oe.errno != ENOENT:
                 raise oe
         self.lock.close()
 
                 raise oe
         self.lock.close()
 
@@ -345,3 +346,16 @@ class AppSettings(object):
 
 def delete_from_cache_by_language(cache, key_template):
     cache.delete_many([key_template % lc for lc, ln in settings.LANGUAGES])
 
 def delete_from_cache_by_language(cache, key_template):
     cache.delete_many([key_template % lc for lc, ln in settings.LANGUAGES])
+
+
+def gallery_path(slug):
+    return os.path.join(settings.MEDIA_ROOT, settings.IMAGE_DIR, slug)
+
+
+def gallery_url(slug):
+    return '%s%s%s/' % (settings.MEDIA_URL, settings.IMAGE_DIR, slug)
+
+
+def get_mp3_length(path):
+    from mutagen.mp3 import MP3
+    return int(MP3(path).info.length)