def data_edit(request, hash): chart = Chart.get_by_id(pretty_decode(hash)) if chart.user != request.g_app_user: return HttpResponse("nacho chart") if request.method == "POST": old_dataset = chart.data or None if chart.data: fs = DataRowFormSet(data=request.POST, instances=chart.data.data_rows) else: fs = DataRowFormSet(data=request.POST) if fs.is_valid(): keys = [] for form in fs.forms: if hasattr(form, "cleaned_data"): dr = DataRow(**form.cleaned_data) keys.append(dr.save()) version = old_dataset.version + 1 if old_dataset else 1 cds = ChartDataSet(version=version, previous_version=old_dataset, data_rows=keys) cds.save() chart.data = cds chart.has_data = True chart.save() return HttpResponseRedirect(reverse("chart-detail", args=(chart.get_hash(),))) else: if chart.data: fs = DataRowFormSet(instances=chart.data.data_rows) else: fs = DataRowFormSet() return render_to_response("charter/data_edit.html", {"formset": fs, "user": request.g_app_user})