From a015a9361b8b5b2e2120398db07134e8978debb5 Mon Sep 17 00:00:00 2001 From: bit4bit Date: Thu, 24 Jun 2021 01:28:07 +0000 Subject: [PATCH] fields.Function no requiere getter FossilOrigin-Name: 47f9b9427ef55c688678001361260e5d00ea53d82977ea13e3414ed04878fb36 --- facho/model/fields/function.py | 8 +++++++- tests/test_model.py | 14 ++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/facho/model/fields/function.py b/facho/model/fields/function.py index 34e3195..9ea2ac3 100644 --- a/facho/model/fields/function.py +++ b/facho/model/fields/function.py @@ -2,7 +2,7 @@ from .field import Field from .model import Model class Function(Field): - def __init__(self, getter, setter=None, field=None): + def __init__(self, getter=None, setter=None, field=None): self.field = field self.getter = getter self.setter = setter @@ -12,6 +12,12 @@ class Function(Field): return self 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: return self._call(inst, self.getter, self.name) else: diff --git a/tests/test_model.py b/tests/test_model.py index fa92e9f..cfcd65c 100644 --- a/tests/test_model.py +++ b/tests/test_model.py @@ -257,4 +257,18 @@ def test_field_function_setter(): person = Person() person.password = 'calculate' assert '' == 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.to_xml()