X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;f=file_writer.py;h=08be646da19addde1ece563932adef2e521f9043;hb=HEAD;hp=3cb2f39458fe475e99c438a5a38d0cd76572d874;hpb=ba913d3c5ec6fd5e229398ebfe9e073aaae7d73c;p=kiosk.git diff --git a/file_writer.py b/file_writer.py index 3cb2f39..08be646 100644 --- a/file_writer.py +++ b/file_writer.py @@ -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!!")