sprint/Main/models/mixins.py
2022-05-05 15:47:16 +03:00

33 lines
673 B
Python

from functools import cached_property
from SprintLib.utils import get_bytes, write_bytes, delete_file
class FileStorageMixin:
_bytes = None
@property
def bytes(self):
if self._bytes is not None:
return self._bytes
return get_bytes(self.fs_id)
@bytes.setter
def bytes(self, value):
self._bytes = value
@cached_property
def text(self):
try:
return self.bytes.decode("utf-8")
except UnicodeDecodeError:
return ""
def write(self, bytes):
self.fs_id = write_bytes(bytes)
self.save()
def remove_from_fs(self):
delete_file(self.fs_id)