hive_sales_sync_costarica/orm/fields/common.py
Marvin Vallecillo a2663d15be First commit
2024-07-17 04:19:28 -06:00

71 lines
2.1 KiB
Python

from .base import AttributeGetter
from utils import timezone
class FixedValue(AttributeGetter):
mandatory = ['value']
def __init__(self, value=None, *args, **kwargs):
self.value = value
super().__init__(*args, **kwargs)
class NullValue(AttributeGetter):
pass
class ThisModelValue(AttributeGetter):
mandatory = ['db_column']
def __init__(self, db_column=None, db_alias=None, *args, **kwargs):
self.db_column = db_column
self.db_alias = db_column if not db_alias else db_alias
super().__init__(*args, **kwargs)
def get_column(self):
if self.db_column != self.db_alias:
return f'{self.db_column} AS {self.db_alias}'
return self.db_column
class ThisModelDateTimeValue(ThisModelValue):
def get_value_serialized(self):
return timezone.make_aware(self.value).isoformat()
class ThisModelDecimalValue(ThisModelValue):
mandatory = ['db_column', 'decimal_places']
def __init__(self, db_column=None, decimal_places=None, *args, **kwargs):
self.db_column = db_column
self.decimal_places = decimal_places
super().__init__(db_column=db_column, *args, **kwargs)
def get_value_serialized(self):
return round(float(self.value or 0), self.decimal_places)
class ThisModelValueCustomSerializer(ThisModelValue):
mandatory = ['db_column', 'value_serialized']
def __init__(self, db_column=None, value_serialized=None, *args, **kwargs):
self.db_column = db_column
self.value_serialized = value_serialized
super().__init__(db_column=db_column, *args, **kwargs)
def get_value_serialized(self):
return self.value_serialized(self.value)
class ThisModelRawResultCustomSerializer(ThisModelValue):
mandatory = ['db_column', 'value_serialized']
def __init__(self, db_column=None, value_serialized=None, *args, **kwargs):
self.raw_result = None
self.db_column = db_column
self.value_serialized = value_serialized
super().__init__(db_column=db_column, *args, **kwargs)
def get_value_serialized(self):
return self.value_serialized(self.raw_result)