def report_valid(request, report_id=0, **kwargs): if report_id: report = Report.objects.get(pk=str(report_id)) report_form = ReportForm(request.POST, instance=report) report_contextelement_formset = ContextElementFormset(request.POST, instance=report) else: report_form = ReportForm(request.POST) report_contextelement_formset = ContextElementFormset(request.POST) errors = {} if report_form.is_valid() and report_contextelement_formset.is_valid(): validator = ReportValidator(report_form.cleaned_data['template'], report_contextelement_formset.context_queries()) if validator.is_valid(): report = report_form.save() report_contextelement_formset.instance = report report_contextelement_formset.save() # TODO: the history should be updated here I guess return success(message='report saved', data={"parent_id": getattr(report.parent, "id", 0), "current_id": report.id, "link": report.link}) else: errors.update(validator.errors) errors = report_form.errors_list(additional=errors.items()) errors.extend(report_contextelement_formset._errors_list()) return failed(message="Validation errors: %s" % report_form.error_message(), data=errors)
def test_able_to_validate_queryset(self): validator = ReportValidator( "{% for e in elements %}<p>{{ e.name }}</p>{% endfor %}", {"elements": store.TestCase.objects.all()} ) self.assertTrue(validator.is_valid())
def test_able_to_validate_query_strings(self): validator = ReportValidator( "{% for e in elements %}<p>{{ e.name }}</p>{% endfor %}", {"elements": "TestCase.all()"} ) self.assertTrue(validator.is_valid())