135 raise |
135 raise |
136 rschema = cls_or_self.schema.rschema(name) |
136 rschema = cls_or_self.schema.rschema(name) |
137 # XXX use a sample target type. Document this. |
137 # XXX use a sample target type. Document this. |
138 tschemas = rschema.targets(eschema, role) |
138 tschemas = rschema.targets(eschema, role) |
139 fieldcls = cls_or_self.rfields.etype_get(eschema, rschema, role, tschemas[0]) |
139 fieldcls = cls_or_self.rfields.etype_get(eschema, rschema, role, tschemas[0]) |
|
140 kwargs = cls_or_self.rfields_kwargs.etype_get(eschema, rschema, role, tschemas[0]) |
|
141 if kwargs is None: |
|
142 kwargs = {} |
140 if fieldcls: |
143 if fieldcls: |
141 return fieldcls(name=name, role=role, eidparam=True) |
144 return fieldcls(name=name, role=role, eidparam=True, **kwargs) |
142 kwargs = cls_or_self.rfields_kwargs.etype_get(eschema, rschema, role, tschemas[0]) |
145 field = guess_field(eschema, rschema, role, eidparam=True, **kwargs) |
143 if kwargs: |
|
144 field = guess_field(eschema, rschema, role, |
|
145 eidparam=True, **kwargs) |
|
146 else: |
|
147 field = guess_field(eschema, rschema, role, eidparam=True) |
|
148 if field is None: |
146 if field is None: |
149 raise |
147 raise |
150 return field |
148 return field |
151 |
149 |
152 def __init__(self, *args, **kwargs): |
150 def __init__(self, *args, **kwargs): |