fields.Function no requiere getter
FossilOrigin-Name: 47f9b9427ef55c688678001361260e5d00ea53d82977ea13e3414ed04878fb36
This commit is contained in:
parent
0216d0141a
commit
a015a9361b
@ -2,7 +2,7 @@ from .field import Field
|
|||||||
from .model import Model
|
from .model import Model
|
||||||
|
|
||||||
class Function(Field):
|
class Function(Field):
|
||||||
def __init__(self, getter, setter=None, field=None):
|
def __init__(self, getter=None, setter=None, field=None):
|
||||||
self.field = field
|
self.field = field
|
||||||
self.getter = getter
|
self.getter = getter
|
||||||
self.setter = setter
|
self.setter = setter
|
||||||
@ -12,6 +12,12 @@ class Function(Field):
|
|||||||
return self
|
return self
|
||||||
assert self.name is not None
|
assert self.name is not None
|
||||||
|
|
||||||
|
if self.getter is None and self.field is None:
|
||||||
|
return None
|
||||||
|
|
||||||
|
if self.getter is None and self.field is not None:
|
||||||
|
return Model(self.field)
|
||||||
|
|
||||||
if self.field is None:
|
if self.field is None:
|
||||||
return self._call(inst, self.getter, self.name)
|
return self._call(inst, self.getter, self.name)
|
||||||
else:
|
else:
|
||||||
|
@ -257,4 +257,18 @@ def test_field_function_setter():
|
|||||||
person = Person()
|
person = Person()
|
||||||
person.password = 'calculate'
|
person.password = 'calculate'
|
||||||
assert '<Person hash="calculate+2"/>' == person.to_xml()
|
assert '<Person hash="calculate+2"/>' == person.to_xml()
|
||||||
|
|
||||||
|
def test_field_function_only_setter():
|
||||||
|
class Person(facho.model.Model):
|
||||||
|
__name__ = 'Person'
|
||||||
|
|
||||||
|
hash = fields.Attribute('hash')
|
||||||
|
password = fields.Function(setter='set_hash')
|
||||||
|
|
||||||
|
def set_hash(self, name, value):
|
||||||
|
self.hash = "%s+2" % (value)
|
||||||
|
|
||||||
|
person = Person()
|
||||||
|
person.password = 'calculate'
|
||||||
|
assert '<Person hash="calculate+2"/>' == person.to_xml()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user