Example #1
0
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)
Example #2
0
 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())
Example #3
0
 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())