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})
def pop_data(request): import time, random chart_types = ["pie", "bar", "line"] dr = DataRow(data_key="asdf", data_value=str(random.randint(0, 1000))) dr_key = dr.put() dr2 = DataRow(data_key="asdf2", data_value=str(random.randint(0, 1000))) dr2_key = dr2.put() dr3 = DataRow(data_key="asdf2", data_value=str(random.randint(0, 1000))) dr3_key = dr3.put() cds = ChartDataSet(version=1, data_rows=[dr_key, dr2_key]) cds.put() cds2 = ChartDataSet(version=2, previous_version=cds, data_rows=[dr_key, dr3_key]) cds2.put() c = Chart(name="%s" % time.time(), chart_type=chart_types[random.randint(0, 2)], data=cds2, user=request.g_app_user) c.put() return HttpResponseRedirect(reverse("chart-detail", args=(c.get_hash(),)))