コード例 #1
0
ファイル: test_field.py プロジェクト: joshmarshall/norm
    def test_populate_defaults(self):
        class Foo(dict):
            field = Field(default="foo")

        foo = Foo()
        populate_defaults(foo)
        self.assertEqual("foo", foo.field)
        self.assertEqual("foo", foo["field"])
コード例 #2
0
ファイル: test_field.py プロジェクト: joshmarshall/norm
    def test_serialize_none_value(self):
        class Model(dict):
            field = Field(serialize=lambda x, y: str(y), default=None)

        model = Model()
        populate_defaults(model)
        self.assertEqual(None, model["field"])
        self.assertEqual(None, model.field)

        # but falsy values should still be serialized...
        model.field = 0
        self.assertEqual('0', model["field"])
コード例 #3
0
ファイル: model.py プロジェクト: nod/norm
    def __new__(cls, *args, **kwargs):
        # caching fields and required fields on the model
        # so we don't have to discover every time.
        if not hasattr(cls, "_fields"):
            fields = []
            required_fields = []
            for field_name, field in get_all_fields(cls):
                fields.append(field_name)
                if field.required:
                    required_fields.append(field_name)
            cls._fields = set(fields)
            cls._required_fields = set(required_fields)

        instance = super(Model, cls).__new__(cls)
        instance._data = {}
        populate_defaults(instance)
        return instance