282 return val |
282 return val |
283 |
283 |
284 # XXX deprecates |
284 # XXX deprecates |
285 def values_and_attributes(self, form, field): |
285 def values_and_attributes(self, form, field): |
286 return self.values(form, field), self.attributes(form, field) |
286 return self.values(form, field), self.attributes(form, field) |
287 |
|
288 @deprecated('[3.6] use values_and_attributes') |
|
289 def _render_attrs(self, form, field): |
|
290 """return html tag name, attributes and a list of values for the field |
|
291 """ |
|
292 values, attrs = self.values_and_attributes(form, field) |
|
293 return field.input_name(form, self.suffix), values, attrs |
|
294 |
287 |
295 |
288 |
296 class Input(FieldWidget): |
289 class Input(FieldWidget): |
297 """abstract widget class for <input> tag based widgets""" |
290 """abstract widget class for <input> tag based widgets""" |
298 type = None |
291 type = None |
732 default_settings = {} |
725 default_settings = {} |
733 |
726 |
734 def __init__(self, *args, **kwargs): |
727 def __init__(self, *args, **kwargs): |
735 self.autocomplete_settings = kwargs.pop('autocomplete_settings', |
728 self.autocomplete_settings = kwargs.pop('autocomplete_settings', |
736 self.default_settings) |
729 self.default_settings) |
737 try: |
730 self.autocomplete_initfunc = kwargs.pop('autocomplete_initfunc') |
738 self.autocomplete_initfunc = kwargs.pop('autocomplete_initfunc') |
|
739 except KeyError: |
|
740 warn('[3.6] use autocomplete_initfunc argument of %s constructor ' |
|
741 'instead of relying on autocomplete_initfuncs dictionary on ' |
|
742 'the entity class' % self.__class__.__name__, |
|
743 DeprecationWarning) |
|
744 self.autocomplete_initfunc = None |
|
745 super(AutoCompletionWidget, self).__init__(*args, **kwargs) |
731 super(AutoCompletionWidget, self).__init__(*args, **kwargs) |
746 |
732 |
747 def values(self, form, field): |
733 def values(self, form, field): |
748 values = super(AutoCompletionWidget, self).values(form, field) |
734 values = super(AutoCompletionWidget, self).values(form, field) |
749 if not values: |
735 if not values: |
761 % (domid, json_dumps(data), |
747 % (domid, json_dumps(data), |
762 json_dumps(self.autocomplete_settings))) |
748 json_dumps(self.autocomplete_settings))) |
763 return super(AutoCompletionWidget, self)._render(form, field, renderer) |
749 return super(AutoCompletionWidget, self)._render(form, field, renderer) |
764 |
750 |
765 def _get_url(self, entity, field): |
751 def _get_url(self, entity, field): |
766 if self.autocomplete_initfunc is None: |
752 fname = self.autocomplete_initfunc |
767 # XXX for bw compat |
|
768 fname = entity.autocomplete_initfuncs[field.name] |
|
769 else: |
|
770 fname = self.autocomplete_initfunc |
|
771 return entity._cw.build_url('json', fname=fname, mode='remote', |
753 return entity._cw.build_url('json', fname=fname, mode='remote', |
772 pageid=entity._cw.pageid) |
754 pageid=entity._cw.pageid) |
773 |
755 |
774 |
756 |
775 |
757 |
776 class StaticFileAutoCompletionWidget(AutoCompletionWidget): |
758 class StaticFileAutoCompletionWidget(AutoCompletionWidget): |
777 """XXX describe me""" |
759 """XXX describe me""" |
778 wdgtype = 'StaticFileSuggestField' |
760 wdgtype = 'StaticFileSuggestField' |
779 |
761 |
780 def _get_url(self, entity, field): |
762 def _get_url(self, entity, field): |
781 if self.autocomplete_initfunc is None: |
763 return entity._cw.data_url(self.autocomplete_initfunc) |
782 # XXX for bw compat |
|
783 fname = entity.autocomplete_initfuncs[field.name] |
|
784 else: |
|
785 fname = self.autocomplete_initfunc |
|
786 return entity._cw.data_url(fname) |
|
787 |
764 |
788 |
765 |
789 class RestrictedAutoCompletionWidget(AutoCompletionWidget): |
766 class RestrictedAutoCompletionWidget(AutoCompletionWidget): |
790 """XXX describe me""" |
767 """XXX describe me""" |
791 default_settings = {'mustMatch': True} |
768 default_settings = {'mustMatch': True} |