

def create_atomizer(model, fld, name):
    if isinstance(fld, fields.RemoteField):
        '\n        Hack: we create a StoreField based on the remote field,\n        then modify its behaviour.\n        '
        sf = create_atomizer(model, fld.field, fld.name)

        def value_from_object(sf, obj, ar):
            m = fld.func
            return m(obj, ar)

        def full_value_from_object(sf, obj, ar):
            m = fld.func
            v = m(obj, ar)
            return v
        sf.value_from_object = curry(value_from_object, sf)
        sf.full_value_from_object = curry(full_value_from_object, sf)
        return sf
    meth = getattr(fld, '_return_type_for_method', None)
    if (meth is not None):
        return MethodStoreField(fld, name)
    sf_class = getattr(fld, 'lino_atomizer_class', None)
    if (sf_class is not None):
        return sf_class(fld, name)
    if isinstance(fld, fields.DummyField):
        return None
    if isinstance(fld, fields.RequestField):
        delegate = create_atomizer(model, fld.return_type, fld.name)
        return RequestStoreField(fld, delegate, name)
    if isinstance(fld, fields.VirtualField):
        delegate = create_atomizer(fld, fld.return_type, fld.name)
        if (delegate is None):
            return None
        return VirtStoreField(fld, delegate, name)
    if isinstance(fld, models.FileField):
        return FileFieldStoreField(fld, name)
    if isinstance(fld, models.ManyToManyField):
        return StoreField(fld, name)
    if isinstance(fld, fields.PasswordField):
        return PasswordStoreField(fld, name)
    if isinstance(fld, models.OneToOneField):
        return OneToOneStoreField(fld, name)
    if settings.SITE.is_installed('contenttypes'):
        from lino.core.gfks import GenericForeignKey
        if isinstance(fld, GenericForeignKey):
            return GenericForeignKeyField(fld, name)
        from lino.modlib.gfks.fields import GenericForeignKeyIdField
        if isinstance(fld, GenericForeignKeyIdField):
            return ComboStoreField(fld, name)
    if isinstance(fld, models.ForeignKey):
        return ForeignKeyStoreField(fld, name)
    if isinstance(fld, models.TimeField):
        return TimeStoreField(fld, name)
    if isinstance(fld, models.DateTimeField):
        return DateTimeStoreField(fld, name)
    if isinstance(fld, fields.IncompleteDateField):
        return IncompleteDateStoreField(fld, name)
    if isinstance(fld, models.DateField):
        return DateStoreField(fld, name)
    if isinstance(fld, models.BooleanField):
        return BooleanStoreField(fld, name)
    if isinstance(fld, models.DecimalField):
        return DecimalStoreField(fld, name)
    if isinstance(fld, models.AutoField):
        return AutoStoreField(fld, name)
    if isinstance(fld, models.SmallIntegerField):
        return IntegerStoreField(fld, name)
    if isinstance(fld, fields.DisplayField):
        return DisplayStoreField(fld, name)
    if isinstance(fld, models.IntegerField):
        return IntegerStoreField(fld, name)
    kw = {
        
    }
    if choosers.uses_simple_values(model, fld):
        return StoreField(fld, name, **kw)
    else:
        return ComboStoreField(fld, name, **kw)

dataset/ETHPy150Open lsaffre/lino/lino/core/store.py create_atomizer/VarMisuse@259/363 `model`->`fld`