diff -r 48b26bfd6f02 -r 06bced8edddf web/views/autoform.py --- a/web/views/autoform.py Sat Sep 26 11:44:35 2009 +0200 +++ b/web/views/autoform.py Mon Sep 28 12:37:01 2009 +0200 @@ -111,6 +111,11 @@ @property def form_needs_multipart(self): """true if the form needs enctype=multipart/form-data""" + return self._subform_needs_multipart() + + def _subform_needs_multipart(self, _tested=None): + if _tested is None: + _tested = set() if super(AutomaticEntityForm, self).form_needs_multipart: return True # take a look at inlined forms to check (recursively) if they @@ -129,11 +134,18 @@ if len(targettypes) != 1: continue targettype = targettypes[0] + if targettype in _tested: + continue + _tested.add(targettype) if self.should_inline_relation_form(rschema, targettype, role): entity = self._cw.vreg['etypes'].etype_class(targettype)(self._cw) subform = self._cw.vreg['forms'].select('edition', self._cw, entity=entity) - if subform.form_needs_multipart: + if hasattr(subform, '_subform_needs_multipart'): + needs_multipart = subform._subform_needs_multipart(_tested) + else: + needs_multipart = subform.form_needs_multipart + if needs_multipart: return True return False