Add debugging in gcal renderer.
[kiosk.git] / file_writer.py
index 3cb2f39458fe475e99c438a5a38d0cd76572d874..ffb15e6b2ec4ed44da9308896b0388d006f2dc10 100644 (file)
@@ -1,14 +1,18 @@
 #!/usr/bin/env python3
 
-import constants
 import os
+from uuid import uuid4
+
+import kiosk_constants
 
 
 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
@@ -29,11 +33,14 @@ 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()
+        cmd = f'/bin/mv -f {self.temp_filename} "{self.full_filename}"'
+        os.system(cmd)
+        print(cmd)
 
     def done(self):
         self.close()
@@ -43,8 +50,8 @@ class file_writer:
 
 
 # Test
-# def toupper(x):
+#def toupper(x):
 #   return x.upper()
-#
-# with file_writer("test", transformations=[toupper]) as fw:
-#    fw.write(u"Another test!!")
+
+#with file_writer("test", transformations=[toupper]) as fw:
+#   fw.write(u"Another test!!")