fields.Model se adiciona __default_set__ para remplaza comportamiento de asignacion directa
FossilOrigin-Name: 436c5483cf534c8d457fb403302e511e7aad4b220d66569612f7ceb2da8d8cf8
This commit is contained in:
parent
a015a9361b
commit
58e7387292
@ -31,6 +31,12 @@ class ModelBase(object, metaclass=ModelMeta):
|
|||||||
def __before_xml__(self):
|
def __before_xml__(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def __default_set__(self, value):
|
||||||
|
return str(value)
|
||||||
|
|
||||||
|
def _set_content(self, value):
|
||||||
|
self._text = str(self.__default_set__(value))
|
||||||
|
|
||||||
def _hook_before_xml(self):
|
def _hook_before_xml(self):
|
||||||
self.__before_xml__()
|
self.__before_xml__()
|
||||||
for field in self._fields.values():
|
for field in self._fields.values():
|
||||||
|
@ -29,7 +29,7 @@ class Many2One(Field):
|
|||||||
if callable(setter):
|
if callable(setter):
|
||||||
setter(inst_model, value)
|
setter(inst_model, value)
|
||||||
else:
|
else:
|
||||||
inst_model._text = str(value)
|
inst_model._set_content(value)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ class Model(Field):
|
|||||||
|
|
||||||
def __set__(self, inst, value):
|
def __set__(self, inst, value):
|
||||||
obj = self._create_model(inst)
|
obj = self._create_model(inst)
|
||||||
obj._text = str(value)
|
obj._set_content(value)
|
||||||
|
|
||||||
def _create_model(self, inst):
|
def _create_model(self, inst):
|
||||||
try:
|
try:
|
||||||
|
@ -272,3 +272,19 @@ def test_field_function_only_setter():
|
|||||||
person.password = 'calculate'
|
person.password = 'calculate'
|
||||||
assert '<Person hash="calculate+2"/>' == person.to_xml()
|
assert '<Person hash="calculate+2"/>' == person.to_xml()
|
||||||
|
|
||||||
|
|
||||||
|
def test_model_set_default_setter():
|
||||||
|
class Hash(facho.model.Model):
|
||||||
|
__name__ = 'Hash'
|
||||||
|
|
||||||
|
def __default_set__(self, value):
|
||||||
|
return "%s+3" % (value)
|
||||||
|
|
||||||
|
class Person(facho.model.Model):
|
||||||
|
__name__ = 'Person'
|
||||||
|
|
||||||
|
hash = fields.Many2One(Hash)
|
||||||
|
|
||||||
|
person = Person()
|
||||||
|
person.hash = 'hola'
|
||||||
|
assert '<Person><Hash>hola+3</Hash></Person>' == person.to_xml()
|
||||||
|
Loading…
Reference in New Issue
Block a user