726 base = settings.pop('base') |
726 base = settings.pop('base') |
727 new_class = type('AJAX' + ob.__name__, (base, ob), cdict) |
727 new_class = type('AJAX' + ob.__name__, (base, ob), cdict) |
728 try: |
728 try: |
729 # check if current form is overriding "get_ajax_output" method |
729 # check if current form is overriding "get_ajax_output" method |
730 if base not in (AJAXAddForm, AJAXEditForm): # custom base |
730 if base not in (AJAXAddForm, AJAXEditForm): # custom base |
731 basename = base.__qualname__ |
731 ob_ajax_parent, _ = ob.get_ajax_output.__qualname__.split('.') |
732 baseklassname, _ = base.get_ajax_output.__qualname__.split('.') |
732 base_ajax_parent, _ = base.get_ajax_output.__qualname__.split('.') |
733 if baseklassname != basename: # overriden method |
733 if (ob_ajax_parent != base_ajax_parent) and \ |
734 new_class.get_ajax_output = ob.get_ajax_output |
734 (ob_ajax_parent in ('AJAXForm', 'AJAXAddForm', 'AJAXEditForm')): |
|
735 new_class.get_ajax_output = base.get_ajax_output |
735 else: |
736 else: |
736 baseklassname, _ = ob.get_ajax_output.__qualname__.split('.') |
737 base_ajax_parent, _ = ob.get_ajax_output.__qualname__.split('.') |
737 if baseklassname not in ('AJAXForm', 'AJAXEditForm'): # overriden method |
738 if base_ajax_parent not in ('AJAXForm', 'AJAXAddForm', 'AJAXEditForm'): # overriden method |
738 new_class.get_ajax_output = ob.get_ajax_output |
739 new_class.get_ajax_output = ob.get_ajax_output |
739 except AttributeError: |
740 except AttributeError: |
740 pass |
741 pass |
741 |
742 |
742 if 'implementer' in settings: |
743 if 'implementer' in settings: |