Source code for gpp.model.fields

from django import VERSION as DJANGO_VERSION
if DJANGO_VERSION >= (4, 0):
    from django.utils.translation import gettext_lazy as _
else:
    from django.utils.translation import ugettext_lazy as _  # pragma: no cover
from django.db import models
import lzma


[docs]def decompress_data(s): """ 압축 해제 Args: s: Returns: """ if isinstance(s, (bytes, bytearray)): return lzma.decompress(s).decode('utf-8') return s
[docs]def compress_data(s): """ 압축 Args: s: Returns: """ if isinstance(s, str): return lzma.compress(s.encode('utf-8')) if isinstance(s, (bytes, bytearray)): return lzma.compress(s) return s
[docs]class CompressedTextField(models.BinaryField): description = _("LZMA Compressed Text for BinaryFields") empty_values = [None, b'']
[docs] def get_prep_value(self, value): return compress_data(value)
[docs] def from_db_value(self, value, *args, **kwargs): return self.to_python(value)
[docs] def value_to_string(self, obj): return decompress_data(self.value_from_object(obj))
[docs] def to_python(self, value): if value is not None and type(value) in (bytes, bytearray): return decompress_data(value) return value # pragma: no cover