diff --git a/nested_inline/__init__.py b/nested_inline/__init__.py
index c197406..bb501ac 100644
--- a/nested_inline/__init__.py
+++ b/nested_inline/__init__.py
@@ -1 +1 @@
-__version__ = (0, 3, 5)
+__version__ = (0, 3, 5, 1)
diff --git a/nested_inline/admin.py b/nested_inline/admin.py
index 6793771..eb155f1 100644
--- a/nested_inline/admin.py
+++ b/nested_inline/admin.py
@@ -44,8 +44,9 @@ def get_inline_instances(self, request, obj=None):
def save_formset(self, request, form, formset, change):
"""
Given an inline formset save it to the database.
+ self.saved_related_instances can be used in child class overridden save_formset().
"""
- instances = formset.save()
+ self.saved_related_instances = formset.save()
for form in formset.forms:
if hasattr(form, 'nested_formsets') and form not in formset.deleted_forms:
@@ -155,7 +156,7 @@ def add_view(self, request, form_url='', extra_context=None):
ModelForm = self.get_form(request)
formsets = []
- inline_instances = self.get_inline_instances(request, None)
+ inline_instances = []
if request.method == 'POST':
form = ModelForm(request.POST, request.FILES)
if form.is_valid():
@@ -165,7 +166,7 @@ def add_view(self, request, form_url='', extra_context=None):
form_validated = False
new_object = self.model()
prefixes = {}
- for FormSet, inline in zip(self.get_formsets(request), inline_instances):
+ for FormSet, inline in self.get_formsets_with_inlines(request):
prefix = FormSet.get_default_prefix()
prefixes[prefix] = prefixes.get(prefix, 0) + 1
if prefixes[prefix] != 1 or not prefix:
@@ -175,6 +176,7 @@ def add_view(self, request, form_url='', extra_context=None):
save_as_new="_saveasnew" in request.POST,
prefix=prefix, queryset=inline.get_queryset(request))
formsets.append(formset)
+ inline_instances.append(inline)
if inline.inlines:
self.add_nested_inline_formsets(request, inline, formset)
if self.all_valid_with_nesting(formsets) and form_validated:
@@ -195,7 +197,7 @@ def add_view(self, request, form_url='', extra_context=None):
initial[k] = initial[k].split(",")
form = ModelForm(initial=initial)
prefixes = {}
- for FormSet, inline in zip(self.get_formsets(request), inline_instances):
+ for FormSet, inline in self.get_formsets_with_inlines(request):
prefix = FormSet.get_default_prefix()
prefixes[prefix] = prefixes.get(prefix, 0) + 1
if prefixes[prefix] != 1 or not prefix:
@@ -203,6 +205,7 @@ def add_view(self, request, form_url='', extra_context=None):
formset = FormSet(instance=self.model(), prefix=prefix,
queryset=inline.get_queryset(request))
formsets.append(formset)
+ inline_instances.append(inline)
if hasattr(inline, 'inlines') and inline.inlines:
self.add_nested_inline_formsets(request, inline, formset)
@@ -227,7 +230,7 @@ def add_view(self, request, form_url='', extra_context=None):
context = {
'title': _('Add %s') % force_text(opts.verbose_name),
'adminform': adminForm,
- 'is_popup': "_popup" in request.REQUEST,
+ 'is_popup': "_popup" in request.GET or "_popup" in request.POST,
'show_delete': False,
'media': media,
'inline_admin_formsets': inline_admin_formsets,
@@ -259,7 +262,7 @@ def change_view(self, request, object_id, form_url='', extra_context=None):
ModelForm = self.get_form(request, obj)
formsets = []
- inline_instances = self.get_inline_instances(request, obj)
+ inline_instances = []
if request.method == 'POST':
form = ModelForm(request.POST, request.FILES, instance=obj)
if form.is_valid():
@@ -269,7 +272,7 @@ def change_view(self, request, object_id, form_url='', extra_context=None):
form_validated = False
new_object = obj
prefixes = {}
- for FormSet, inline in zip(self.get_formsets(request, new_object), inline_instances):
+ for FormSet, inline in self.get_formsets_with_inlines(request, new_object):
prefix = FormSet.get_default_prefix()
prefixes[prefix] = prefixes.get(prefix, 0) + 1
if prefixes[prefix] != 1 or not prefix:
@@ -278,6 +281,7 @@ def change_view(self, request, object_id, form_url='', extra_context=None):
instance=new_object, prefix=prefix,
queryset=inline.get_queryset(request))
formsets.append(formset)
+ inline_instances.append(inline)
if hasattr(inline, 'inlines') and inline.inlines:
self.add_nested_inline_formsets(request, inline, formset)
@@ -291,7 +295,7 @@ def change_view(self, request, object_id, form_url='', extra_context=None):
else:
form = ModelForm(instance=obj)
prefixes = {}
- for FormSet, inline in zip(self.get_formsets(request, obj), inline_instances):
+ for FormSet, inline in self.get_formsets_with_inlines(request, obj):
prefix = FormSet.get_default_prefix()
prefixes[prefix] = prefixes.get(prefix, 0) + 1
if prefixes[prefix] != 1 or not prefix:
@@ -299,6 +303,7 @@ def change_view(self, request, object_id, form_url='', extra_context=None):
formset = FormSet(instance=obj, prefix=prefix,
queryset=inline.get_queryset(request))
formsets.append(formset)
+ inline_instances.append(inline)
if hasattr(inline, 'inlines') and inline.inlines:
self.add_nested_inline_formsets(request, inline, formset)
@@ -325,7 +330,7 @@ def change_view(self, request, object_id, form_url='', extra_context=None):
'adminform': adminForm,
'object_id': object_id,
'original': obj,
- 'is_popup': "_popup" in request.REQUEST,
+ 'is_popup': "_popup" in request.GET or "_popup" in request.POST,
'media': media,
'inline_admin_formsets': inline_admin_formsets,
'errors': helpers.AdminErrorList(form, formsets),
@@ -364,8 +369,12 @@ def get_inline_instances(self, request, obj=None):
inline_instances.append(inline)
return inline_instances
+ def get_formsets_with_inlines(self, request, obj=None):
+ for inline in self.get_inline_instances(request, obj):
+ yield inline.get_formset(request, obj), inline
+
def get_formsets(self, request, obj=None):
- for inline in self.get_inline_instances(request):
+ for inline in self.get_inline_instances(request, obj):
yield inline.get_formset(request, obj)
diff --git a/nested_inline/static/admin/js/inlines-nested.js b/nested_inline/static/admin/js/inlines-nested.js
index 1f4a949..a853883 100644
--- a/nested_inline/static/admin/js/inlines-nested.js
+++ b/nested_inline/static/admin/js/inlines-nested.js
@@ -100,6 +100,7 @@
// If a post-delete callback was provided, call it with the deleted form:
if (options.removed) {
options.removed(formset_to_update);
+ $(document).trigger('formset:removed', [row, options.prefix]);
}
});
if (row.is("tr")) {
@@ -131,6 +132,7 @@
// If a post-add callback was supplied, call it with the added form:
if (options.added) {
options.added(row);
+ $(document).trigger('formset:added', [row, options.prefix]);
}
nextIndex = nextIndex + 1;
});
diff --git a/nested_inline/static/admin/js/inlines-nested.min.js b/nested_inline/static/admin/js/inlines-nested.min.js
index bfdd991..391e571 100644
--- a/nested_inline/static/admin/js/inlines-nested.min.js
+++ b/nested_inline/static/admin/js/inlines-nested.min.js
@@ -1 +1 @@
-(function(e){function t(r,i,s,o){var u=e(false);var a=r.replace(/[-][0-9][-]/g,"-0-");var f=e("#"+a+"-group ."+a+"-0-nested-inline").not(".cloned");if(!f.length){f=e("#"+a+"-group ."+a+"-nested-inline").not(".cloned")}f.each(function(f,l){var c=e(this).attr("id").split("-group")[0];var h=c.replace(a+"-0",r+"-"+i);var p=e(l).clone();p.addClass("cloned");if(p.children().first().hasClass("tabular")){p.find(".form-row").not(".empty-form").remove();p.find(".nested-inline-row").remove();template_form=p.find("#"+c+"-empty");new_form=template_form.clone().removeClass(s.emptyCssClass).addClass("dynamic-"+h);new_form.insertBefore(template_form);var d=new_form.find("input");d.each(function(){var t=e(this);if(t.val()){t.removeAttr("value")}});n(p,c,h);p.find("#id_"+h+"-TOTAL_FORMS").val(1);p.find("#id_"+h+"-INITIAL_FORMS").val(0);var v=p.find(".add-row").text();p.find(".add-row").remove();p.find(".tabular.inline-related tbody tr."+h+"-not-nested").tabularFormset({prefix:h,adminStaticPrefix:s.adminStaticPrefix,addText:v,deleteText:s.deleteText});var m=t(h,0,s,false);if(m.length){p.find(".form-row").addClass("no-bottom-border")}m.each(function(){if(!e(this).next()){border_class=""}else{border_class=" no-bottom-border"}p.find("#"+h+"-empty").before(e('
').html(e("",{colspan:"100%"}).html(e(this))))})}else{var m=t(h,0,s,true);p.find(".inline-related").not(".empty-form").remove();template_form=p.find("#"+c+"-empty");new_form=template_form.clone().removeClass(s.emptyCssClass).addClass("dynamic-"+h);new_form.insertBefore(template_form);var d=new_form.find("input");d.each(function(){var t=e(this);if(t.val()){t.removeAttr("value")}});new_form.find(".inline_label").text("#1");n(p,c,h);p.find("#id_"+h+"-TOTAL_FORMS").val(1);p.find("#id_"+h+"-INITIAL_FORMS").val(0);var v=p.find(".add-row").text();p.find(".add-row").remove();p.find(".inline-related").stackedFormset({prefix:h,adminStaticPrefix:s.adminStaticPrefix,addText:v,deleteText:s.deleteText});m.each(function(){new_form.append(e(this))})}if(o){p=p.add(e(''))}if(u.length){u=u.add(p)}else{u=p}});return u}function n(t,n,i){t.attr("id",t.attr("id").replace(n,i));t.find("*").each(function(){if(e(this).attr("for")){e(this).attr("for",e(this).attr("for").replace(n,i))}if(e(this).attr("class")){e(this).attr("class",e(this).attr("class").replace(n,i))}if(this.id){this.id=this.id.replace(n,i)}if(this.name){this.name=this.name.replace(n,i)}});prefix_fix=t.find(".inline-related").first();nextIndex=r(i);if(prefix_fix.hasClass("tabular")){prefix_fix=prefix_fix.find(".form-row").first();prefix_fix.attr("id",prefix_fix.attr("id").replace("-empty","-"+nextIndex))}else{prefix_fix.attr("id",prefix_fix.attr("id").replace("-empty","-"+nextIndex))}prefix_fix.find("*").each(function(){if(e(this).attr("for")){e(this).attr("for",e(this).attr("for").replace("__prefix__","0"))}if(e(this).attr("class")){e(this).attr("class",e(this).attr("class").replace("__prefix__","0"))}if(this.id){this.id=this.id.replace("__prefix__","0")}if(this.name){this.name=this.name.replace("__prefix__","0")}})}function r(t){formset_prop=e("#id_"+t+"-TOTAL_FORMS");if(!formset_prop.length){return 0}return parseInt(formset_prop.attr("autocomplete","off").val())}function i(t,n){var i=r(t);if(n){e("#id_"+t+"-TOTAL_FORMS").attr("autocomplete","off").val(parseInt(i)+1)}else{e("#id_"+t+"-TOTAL_FORMS").attr("autocomplete","off").val(parseInt(i)-1)}}function s(t){var n=e("#id_"+t+"-MAX_NUM_FORMS").attr("autocomplete","off").val();if(typeof n=="undefined"){return""}return parseInt(n)}e.fn.formset=function(n){var o=e.extend({},e.fn.formset.defaults,n);var u=e(this);var a=u.parent();var f=function(t,n,r){var i=new RegExp("("+n+"-(\\d+|__prefix__))");var s=n+"-"+r;if(e(t).attr("for")){e(t).attr("for",e(t).attr("for").replace(i,s))}if(t.id){t.id=t.id.replace(i,s)}if(t.name){t.name=t.name.replace(i,s)}};var l=r(o.prefix);u.each(function(t){e(this).not("."+o.emptyCssClass).addClass(o.formCssClass)});var c=s(o.prefix)===""||s(o.prefix)-r(o.prefix)>0;if(u.length&&c){var h;if(u.attr("tagName")=="TR"){var p=this.eq(-1).children().length;a.append(' '+o.addText+" | ");h=a.find("tr:last a")}else{u.filter(":last").after(' ");h=u.filter(":last").next().find("a")}h.click(function(n){n.preventDefault();var u=r(o.prefix);var a=e("#"+o.prefix+"-empty");var l=a.clone(true);l.removeClass(o.emptyCssClass).addClass(o.formCssClass).attr("id",o.prefix+"-"+u);if(l.is("tr")){l.children(":last").append(' ")}else if(l.is("ul")||l.is("ol")){l.append(' '+o.deleteText+"")}else{l.children(":first").append(' '+o.deleteText+"")}l.find("*").each(function(){f(this,o.prefix,u)});l.insertBefore(e(a));i(o.prefix,true);if(s(o.prefix)!==""&&s(o.prefix)-r(o.prefix)<=0){h.parent().hide()}l.find("a."+o.deleteCssClass).click(function(t){t.preventDefault();var n=e(this).parents("."+o.formCssClass);var r=n.parent();while(n.next().hasClass("nested-inline-row")){n.next().remove()}n.remove();i(o.prefix,false);if(o.removed){o.removed(r)}});if(l.is("tr")){nested_formsets=t(o.prefix,u,o,false);if(nested_formsets.length){l.addClass("no-bottom-border")}nested_formsets.each(function(){if(!e(this).next()){border_class=""}else{border_class=" no-bottom-border"}e(' ').html(e("",{colspan:"100%"}).html(e(this))).insertBefore(e(a))})}else{nested_formsets=t(o.prefix,u,o,true);nested_formsets.each(function(){l.append(e(this))})}if(o.added){o.added(l)}u=u+1})}return this};e.fn.formset.defaults={prefix:"form",addText:"add another",deleteText:"remove",addCssClass:"add-row",deleteCssClass:"delete-row",emptyCssClass:"empty-row",formCssClass:"dynamic-form",added:null,removed:null};e.fn.tabularFormset=function(t){var n=e(this);var r=function(t){row_number=0;e(n.selector).not(".add-row").removeClass("row1 row2").each(function(){e(this).addClass("row"+(row_number%2+1));next=e(this).next();while(next.hasClass("nested-inline-row")){next.addClass("row"+(row_number%2+1));next=next.next()}row_number=row_number+1})};var i=function(){if(typeof DateTimeShortcuts!="undefined"){e(".datetimeshortcuts").remove();DateTimeShortcuts.init()}};var s=function(){if(typeof SelectFilter!="undefined"){e(".selectfilter").each(function(e,n){var r=n.name.split("-");SelectFilter.init(n.id,r[r.length-1],false,t.adminStaticPrefix)});e(".selectfilterstacked").each(function(e,n){var r=n.name.split("-");SelectFilter.init(n.id,r[r.length-1],true,t.adminStaticPrefix)})}};var o=function(t){t.find(".prepopulated_field").each(function(){var n=e(this),r=n.find("input, select, textarea"),i=r.data("dependency_list")||[],s=[];e.each(i,function(e,n){s.push("#"+t.find(".field-"+n).find("input, select, textarea").attr("id"))});if(s.length){r.prepopulate(s,r.attr("maxlength"))}})};n.formset({prefix:t.prefix,addText:t.addText,formCssClass:"dynamic-"+t.prefix,deleteCssClass:"inline-deletelink",deleteText:t.deleteText,emptyCssClass:"empty-form",removed:r,added:function(e){o(e);i();s();r(e)}});return n};e.fn.stackedFormset=function(t){var n=e(this);var r=function(t){t.children(".inline-related").not(".empty-form").children("h3").find(".inline_label").each(function(t){var n=t+1;e(this).html(e(this).html().replace(/(#\d+)/g,"#"+n))})};var i=function(){if(typeof DateTimeShortcuts!="undefined"){e(".datetimeshortcuts").remove();DateTimeShortcuts.init()}};var s=function(){if(typeof SelectFilter!="undefined"){e(".selectfilter").each(function(e,n){var r=n.name.split("-");SelectFilter.init(n.id,r[r.length-1],false,t.adminStaticPrefix)});e(".selectfilterstacked").each(function(e,n){var r=n.name.split("-");SelectFilter.init(n.id,r[r.length-1],true,t.adminStaticPrefix)})}};var o=function(t){t.find(".prepopulated_field").each(function(){var n=e(this),r=n.find("input, select, textarea"),i=r.data("dependency_list")||[],s=[];e.each(i,function(e,n){s.push("#"+t.find(".form-row .field-"+n).find("input, select, textarea").attr("id"))});if(s.length){r.prepopulate(s,r.attr("maxlength"))}})};n.formset({prefix:t.prefix,addText:t.addText,formCssClass:"dynamic-"+t.prefix,deleteCssClass:"inline-deletelink",deleteText:t.deleteText,emptyCssClass:"empty-form",removed:r,added:function(e){o(e);i();s();r(e.parent())}});return n};})(django.jQuery)
+(function(e){function t(r,i,s,o){var u=e(!1),a=r.replace(/[-][0-9][-]/g,"-0-"),f=e("#"+a+"-group ."+a+"-0-nested-inline").not(".cloned");return f.length||(f=e("#"+a+"-group ."+a+"-nested-inline").not(".cloned")),f.each(function(f,l){var c=e(this).attr("id").split("-group")[0],h=c.replace(a+"-0",r+"-"+i),p=e(l).clone();p.addClass("cloned");if(p.children().first().hasClass("tabular")){p.find(".form-row").not(".empty-form").remove(),p.find(".nested-inline-row").remove(),template_form=p.find("#"+c+"-empty"),new_form=template_form.clone().removeClass(s.emptyCssClass).addClass("dynamic-"+h),new_form.insertBefore(template_form);var d=new_form.find("input");d.each(function(){var t=e(this);t.val()&&t.removeAttr("value")}),n(p,c,h),p.find("#id_"+h+"-TOTAL_FORMS").val(1),p.find("#id_"+h+"-INITIAL_FORMS").val(0);var v=p.find(".add-row").text();p.find(".add-row").remove(),p.find(".tabular.inline-related tbody tr."+h+"-not-nested").tabularFormset({prefix:h,adminStaticPrefix:s.adminStaticPrefix,addText:v,deleteText:s.deleteText});var m=t(h,0,s,!1);m.length&&p.find(".form-row").addClass("no-bottom-border"),m.each(function(){e(this).next()?border_class=" no-bottom-border":border_class="",p.find("#"+h+"-empty").before(e(' | ').html(e("",{colspan:"100%"}).html(e(this))))})}else{var m=t(h,0,s,!0);p.find(".inline-related").not(".empty-form").remove(),template_form=p.find("#"+c+"-empty"),new_form=template_form.clone().removeClass(s.emptyCssClass).addClass("dynamic-"+h),new_form.insertBefore(template_form);var d=new_form.find("input");d.each(function(){var t=e(this);t.val()&&t.removeAttr("value")}),new_form.find(".inline_label").text("#1"),n(p,c,h),p.find("#id_"+h+"-TOTAL_FORMS").val(1),p.find("#id_"+h+"-INITIAL_FORMS").val(0);var v=p.find(".add-row").text();p.find(".add-row").remove(),p.find(".inline-related").stackedFormset({prefix:h,adminStaticPrefix:s.adminStaticPrefix,addText:v,deleteText:s.deleteText}),m.each(function(){new_form.append(e(this))})}o&&(p=p.add(e(''))),u.length?u=u.add(p):u=p}),u}function n(t,n,i){t.attr("id",t.attr("id").replace(n,i)),t.find("*").each(function(){e(this).attr("for")&&e(this).attr("for",e(this).attr("for").replace(n,i)),e(this).attr("class")&&e(this).attr("class",e(this).attr("class").replace(n,i)),this.id&&(this.id=this.id.replace(n,i)),this.name&&(this.name=this.name.replace(n,i))}),prefix_fix=t.find(".inline-related").first(),nextIndex=r(i),prefix_fix.hasClass("tabular")?(prefix_fix=prefix_fix.find(".form-row").first(),prefix_fix.attr("id",prefix_fix.attr("id").replace("-empty","-"+nextIndex))):prefix_fix.attr("id",prefix_fix.attr("id").replace("-empty","-"+nextIndex)),prefix_fix.find("*").each(function(){e(this).attr("for")&&e(this).attr("for",e(this).attr("for").replace("__prefix__","0")),e(this).attr("class")&&e(this).attr("class",e(this).attr("class").replace("__prefix__","0")),this.id&&(this.id=this.id.replace("__prefix__","0")),this.name&&(this.name=this.name.replace("__prefix__","0"))})}function r(t){return formset_prop=e("#id_"+t+"-TOTAL_FORMS"),formset_prop.length?parseInt(formset_prop.attr("autocomplete","off").val()):0}function i(t,n){var i=r(t);n?e("#id_"+t+"-TOTAL_FORMS").attr("autocomplete","off").val(parseInt(i)+1):e("#id_"+t+"-TOTAL_FORMS").attr("autocomplete","off").val(parseInt(i)-1)}function s(t){var n=e("#id_"+t+"-MAX_NUM_FORMS").attr("autocomplete","off").val();return typeof n=="undefined"?"":parseInt(n)}e.fn.formset=function(n){var o=e.extend({},e.fn.formset.defaults,n),u=e(this),a=u.parent(),f=function(t,n,r){var i=new RegExp("("+n+"-(\\d+|__prefix__))"),s=n+"-"+r;e(t).attr("for")&&e(t).attr("for",e(t).attr("for").replace(i,s)),t.id&&(t.id=t.id.replace(i,s)),t.name&&(t.name=t.name.replace(i,s))},l=r(o.prefix);u.each(function(t){e(this).not("."+o.emptyCssClass).addClass(o.formCssClass)});var c=s(o.prefix)===""||s(o.prefix)-r(o.prefix)>0;if(u.length&&c){var h;if(u.attr("tagName")=="TR"){var p=this.eq(-1).children().length;a.append(' '+o.addText+" | "),h=a.find("tr:last a")}else u.filter(":last").after(' "),h=u.filter(":last").next().find("a");h.click(function(n){n.preventDefault();var u=r(o.prefix),a=e("#"+o.prefix+"-empty"),l=a.clone(!0);l.removeClass(o.emptyCssClass).addClass(o.formCssClass).attr("id",o.prefix+"-"+u),l.is("tr")?l.children(":last").append(' "):l.is("ul")||l.is("ol")?l.append(' '+o.deleteText+""):l.children(":first").append(' '+o.deleteText+""),l.find("*").each(function(){f(this,o.prefix,u)}),l.insertBefore(e(a)),i(o.prefix,!0),s(o.prefix)!==""&&s(o.prefix)-r(o.prefix)<=0&&h.parent().hide(),l.find("a."+o.deleteCssClass).click(function(t){t.preventDefault();var n=e(this).parents("."+o.formCssClass),r=n.parent();while(n.next().hasClass("nested-inline-row"))n.next().remove();n.remove(),i(o.prefix,!1),o.removed&&(o.removed(r),e(document).trigger("formset:removed",[n,o.prefix]))}),l.is("tr")?(nested_formsets=t(o.prefix,u,o,!1),nested_formsets.length&&l.addClass("no-bottom-border"),nested_formsets.each(function(){e(this).next()?border_class=" no-bottom-border":border_class="",e(' ').html(e("",{colspan:"100%"}).html(e(this))).insertBefore(e(a))})):(nested_formsets=t(o.prefix,u,o,!0),nested_formsets.each(function(){l.append(e(this))})),o.added&&(o.added(l),e(document).trigger("formset:added",[l,o.prefix])),u+=1})}return this},e.fn.formset.defaults={prefix:"form",addText:"add another",deleteText:"remove",addCssClass:"add-row",deleteCssClass:"delete-row",emptyCssClass:"empty-row",formCssClass:"dynamic-form",added:null,removed:null},e.fn.tabularFormset=function(t){var n=e(this),r=function(t){row_number=0,e(n.selector).not(".add-row").removeClass("row1 row2").each(function(){e(this).addClass("row"+(row_number%2+1)),next=e(this).next();while(next.hasClass("nested-inline-row"))next.addClass("row"+(row_number%2+1)),next=next.next();row_number+=1})},i=function(){typeof DateTimeShortcuts!="undefined"&&(e(".datetimeshortcuts").remove(),DateTimeShortcuts.init())},s=function(){typeof SelectFilter!="undefined"&&(e(".selectfilter").each(function(e,n){var r=n.name.split("-");SelectFilter.init(n.id,r[r.length-1],!1,t.adminStaticPrefix)}),e(".selectfilterstacked").each(function(e,n){var r=n.name.split("-");SelectFilter.init(n.id,r[r.length-1],!0,t.adminStaticPrefix)}))},o=function(t){t.find(".prepopulated_field").each(function(){var n=e(this),r=n.find("input, select, textarea"),i=r.data("dependency_list")||[],s=[];e.each(i,function(e,n){s.push("#"+t.find(".field-"+n).find("input, select, textarea").attr("id"))}),s.length&&r.prepopulate(s,r.attr("maxlength"))})};return n.formset({prefix:t.prefix,addText:t.addText,formCssClass:"dynamic-"+t.prefix,deleteCssClass:"inline-deletelink",deleteText:t.deleteText,emptyCssClass:"empty-form",removed:r,added:function(e){o(e),i(),s(),r(e)}}),n},e.fn.stackedFormset=function(t){var n=e(this),r=function(t){t.children(".inline-related").not(".empty-form").children("h3").find(".inline_label").each(function(t){var n=t+1;e(this).html(e(this).html().replace(/(#\d+)/g,"#"+n))})},i=function(){typeof DateTimeShortcuts!="undefined"&&(e(".datetimeshortcuts").remove(),DateTimeShortcuts.init())},s=function(){typeof SelectFilter!="undefined"&&(e(".selectfilter").each(function(e,n){var r=n.name.split("-");SelectFilter.init(n.id,r[r.length-1],!1,t.adminStaticPrefix)}),e(".selectfilterstacked").each(function(e,n){var r=n.name.split("-");SelectFilter.init(n.id,r[r.length-1],!0,t.adminStaticPrefix)}))},o=function(t){t.find(".prepopulated_field").each(function(){var n=e(this),r=n.find("input, select, textarea"),i=r.data("dependency_list")||[],s=[];e.each(i,function(e,n){s.push("#"+t.find(".form-row .field-"+n).find("input, select, textarea").attr("id"))}),s.length&&r.prepopulate(s,r.attr("maxlength"))})};return n.formset({prefix:t.prefix,addText:t.addText,formCssClass:"dynamic-"+t.prefix,deleteCssClass:"inline-deletelink",deleteText:t.deleteText,emptyCssClass:"empty-form",removed:r,added:function(e){o(e),i(),s(),r(e.parent())}}),n}})(django.jQuery);
\ No newline at end of file
| | |