+ if first_master or not need_fixing:
+ choose_master = False
+
+ if request.method == "POST":
+ form = forms.ChooseMasterForm(request.POST)
+ if not choose_master or form.is_valid():
+ if choose_master:
+ first_master = form.cleaned_data['master']
+
+ # do the actual fixing
+ for c in chunks:
+ if not c['fix']:
+ continue
+
+ text = c['chunk'].materialize()
+ for fix in c['fix']:
+ if fix == 'bad-master':
+ text = xml_tools.change_master(text, first_master)
+ elif fix == 'trim-begin':
+ text = xml_tools.add_trim_begin(text)
+ elif fix == 'trim-end':
+ text = xml_tools.add_trim_end(text)
+ elif fix == 'wl':
+ text = xml_tools.basic_structure(text, first_master)
+ author = request.user if request.user.is_authenticated() else None
+ description = "auto-fix: " + ", ".join(c['fix'])
+ c['chunk'].commit(text=text, author=author,
+ description=description)
+
+ return http.HttpResponseRedirect(book.get_absolute_url())
+ elif choose_master:
+ form = forms.ChooseMasterForm()
+ else:
+ form = None
+