Add default to item_older_than_n_days.
[kiosk.git] / file_writer.py
index 3cb2f39458fe475e99c438a5a38d0cd76572d874..08be646da19addde1ece563932adef2e521f9043 100644 (file)
@@ -1,17 +1,26 @@
 #!/usr/bin/env python3
 
-import constants
+import logging
 import os
+from uuid import uuid4
+
+import kiosk_constants
+
+
+logger = logging.getLogger(__name__)
 
 
 class file_writer:
     """Helper context to write a pages file."""
 
     def __init__(self, filename: str, *, transformations=[]):
-        self.full_filename = os.path.join(constants.pages_dir, filename)
+        temp = "temp-" + str(uuid4())
+        self.temp_filename = os.path.join(kiosk_constants.pages_dir, temp)
+        self.full_filename = os.path.join(kiosk_constants.pages_dir, filename)
         self.xforms = [file_writer.remove_tricky_unicode]
         self.xforms.extend(transformations)
         self.f = None
+        logger.info(f"Writing {self.temp_filename}...")
 
     @staticmethod
     def remove_tricky_unicode(x: str) -> str:
@@ -29,11 +38,15 @@ class file_writer:
         self.f.write(data.encode("utf-8"))
 
     def __enter__(self):
-        self.f = open(self.full_filename, "wb")
+        self.f = open(self.temp_filename, "wb")
         return self
 
     def __exit__(self, exc_type, exc_value, exc_traceback):
         self.close()
+        logger.info(f"Copying {self.temp_filename} to {self.full_filename}")
+        cmd = f'/bin/mv -f {self.temp_filename} "{self.full_filename}"'
+        os.system(cmd)
+        print(cmd)
 
     def done(self):
         self.close()
@@ -45,6 +58,6 @@ class file_writer:
 # Test
 # def toupper(x):
 #   return x.upper()
-#
+
 # with file_writer("test", transformations=[toupper]) as fw:
-#    fw.write(u"Another test!!")
+#   fw.write(u"Another test!!")