optimizeindex removes documents for deleted books
[wolnelektury.git] / apps / reporting / utils.py
index 8a7a6cf..cc4e97a 100755 (executable)
@@ -2,16 +2,12 @@
 # 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 errno import ENOENT
 import os
 import os.path
 import os
 import os.path
-import shutil
-import subprocess
-from tempfile import mkdtemp
-from StringIO import StringIO
 from django.conf import settings
 import logging
 from django.http import HttpResponse
 from django.conf import settings
 import logging
 from django.http import HttpResponse
-from django.template.loader import render_to_string
 
 logger = logging.getLogger(__name__)
 
 
 logger = logging.getLogger(__name__)
 
@@ -25,7 +21,13 @@ def render_to_pdf(output_path, template, context=None, add_files=None):
     :param dict add_files: a dictionary of additional files XeTeX will need
     """
 
     :param dict add_files: a dictionary of additional files XeTeX will need
     """
 
+    from StringIO import StringIO
+    import shutil
+    from tempfile import mkdtemp
+    import subprocess
     import Texml.processor
     import Texml.processor
+    from django.template.loader import render_to_string
+
     rendered = render_to_string(template, context)
     texml = StringIO(rendered.encode('utf-8'))
     tempdir = mkdtemp(prefix = "render_to_pdf-")
     rendered = render_to_string(template, context)
     texml = StringIO(rendered.encode('utf-8'))
     tempdir = mkdtemp(prefix = "render_to_pdf-")
@@ -71,7 +73,11 @@ def generated_file_view(file_name, mime_type, send_name=None, signals=None):
         send_name = os.path.basename(file_name)
 
     def signal_handler(*args, **kwargs):
         send_name = os.path.basename(file_name)
 
     def signal_handler(*args, **kwargs):
-        os.unlink(file_path)
+        try:
+            os.unlink(file_path)
+        except OSError as oe:
+            if oe.errno != ENOENT:
+                raise oe
 
     if signals:
         for signal in signals:
 
     if signals:
         for signal in signals: