diff -r 547681592765 -r 402e8a8b1d6a web/formfields.py --- a/web/formfields.py Thu Mar 26 18:58:14 2009 +0100 +++ b/web/formfields.py Thu Mar 26 18:59:01 2009 +0100 @@ -307,7 +307,7 @@ return RelationField(widget=Select(multiple=card in '*+'), **kwargs) def vocabulary(self, form): - entity = form.entity + entity = form.edited_entity req = entity.req # first see if its specified by __linkto form parameters linkedto = entity.linked_to(self.name, self.role) @@ -334,8 +334,8 @@ field = None for cstr in constraints: if isinstance(cstr, StaticVocabularyConstraint): - return StringField(widget=Select(vocabulary=cstr.vocabulary), - **kwargs) + kwargs.setdefault('widget', Select(vocabulary=cstr.vocabulary)) + return StringField(**kwargs) if isinstance(cstr, SizeConstraint) and cstr.max is not None: if cstr.max > 257: rows_cols_from_constraint(cstr, kwargs) @@ -375,7 +375,8 @@ if fieldclass is StringField: if targetschema == 'Password': # special case for Password field: specific PasswordInput widget - return StringField(widget=PasswordInput(), **kwargs) + kwargs.setdefault('widget', PasswordInput()) + return StringField(**kwargs) if eschema.has_metadata(rschema, 'format'): # use RichTextField instead of StringField if the attribute has # a "format" metadata. But getting information from constraints