lazycontract/extra.py
from __future__ import absolute_import
from .contract import LazyProperty
import uuid
class AliasProperty(LazyProperty):
def __init__(self, aliased_property, *args, **kwargs):
super(AliasProperty, self).__init__(*args, **kwargs)
self.aliased_property = aliased_property
def __get__(self, obj, objtype=None):
return getattr(obj, self.aliased_property)
def __set__(self, obj, value):
setattr(obj, self.aliased_property, value)
class UUIDProperty(LazyProperty):
_type = uuid.UUID
def deserialize(self, obj):
return obj if isinstance(obj, self._type) else uuid.UUID(obj)
def serialize(self, obj):
return str(obj).lower()
class UUIDStringProperty(LazyProperty):
_type = str
def deserialize(self, obj):
if isinstance(obj, uuid.UUID):
return str(obj).lower()
else:
return str(uuid.UUID(obj)).lower()
def serialize(self, obj):
return obj.lower()