Beispiel #1
0
 def test_long_error_message(self):
     report = self.build2.delayed_reports.create()
     prepared_report = prepare_report(report.pk)
     data = {"lineno": 1234, "message": LONG_ERROR_MESSAGE}
     update_delayed_report(prepared_report, data, 400)
     self.assertEqual(
         yaml.load(prepared_report.error_message)['message'],
         LONG_ERROR_MESSAGE)
    def __return_delayed_report(self, request):
        output_format = request.query_params.get("output", "text/plain")
        template_id = request.query_params.get("template", None)
        baseline_id = request.query_params.get("baseline", None)
        email_recipient = request.query_params.get("email_recipient", None)
        callback = request.query_params.get("callback", None)
        callback_token = request.query_params.get("callback_token", None)
        # keep the cached reports for 1 day by default
        data_retention_days = request.query_params.get("keep", 1)
        if request.method == "POST":
            output_format = request.data.get("output", "text/plain")
            template_id = request.data.get("template", None)
            baseline_id = request.data.get("baseline", None)
            email_recipient = request.data.get("email_recipient", None)
            callback = request.data.get("callback", None)
            callback_token = request.data.get("callback_token", None)
            # keep the cached reports for 1 day by default
            data_retention_days = request.data.get("keep", 1)

        template = None
        if template_id != "default":
            template = self.get_object().project.custom_email_template
        if template_id is not None:
            try:
                template = EmailTemplate.objects.get(pk=template_id)
            except EmailTemplate.DoesNotExist:
                pass

        baseline = None
        delayed_report, created = self.get_object(
        ).delayed_reports.get_or_create(
            baseline=baseline,
            template=template,
            output_format=output_format,
            email_recipient=email_recipient,
            callback=callback,
            callback_token=callback_token,
            data_retention_days=data_retention_days)
        if baseline_id is not None:
            try:
                previous_build = Build.objects.get(pk=baseline_id)
                baseline = previous_build.status
                delayed_report.baseline = baseline
                delayed_report.save()
            except Build.DoesNotExist:
                data = {
                    "message": "Baseline build %s does not exist" % baseline_id
                }
                # return created=False to avoid running prepare_report
                return update_delayed_report(
                    delayed_report, data, status.HTTP_400_BAD_REQUEST), False
            except ProjectStatus.DoesNotExist:
                data = {"message": "Build %s has no status" % baseline_id}
                # return created=False to avoid running prepare_report
                return update_delayed_report(
                    delayed_report, data, status.HTTP_400_BAD_REQUEST), False

        return delayed_report, created
Beispiel #3
0
 def test_long_error_message(self):
     report = self.build2.delayed_reports.create()
     prepared_report = prepare_report(report.pk)
     data = {
         "lineno": 1234,
         "message": LONG_ERROR_MESSAGE
     }
     update_delayed_report(prepared_report, data, 400)
     self.assertEqual(yaml.load(prepared_report.error_message)['message'], LONG_ERROR_MESSAGE)
Beispiel #4
0
    def __return_delayed_report(self, request):
        output_format = request.query_params.get("output", "text/plain")
        template_id = request.query_params.get("template", None)
        baseline_id = request.query_params.get("baseline", None)
        email_recipient = request.query_params.get("email_recipient", None)
        callback = request.query_params.get("callback", None)
        callback_token = request.query_params.get("callback_token", None)
        # keep the cached reports for 1 day by default
        data_retention_days = request.query_params.get("keep", 1)
        if request.method == "POST":
            output_format = request.data.get("output", "text/plain")
            template_id = request.data.get("template", None)
            baseline_id = request.data.get("baseline", None)
            email_recipient = request.data.get("email_recipient", None)
            callback = request.data.get("callback", None)
            callback_token = request.data.get("callback_token", None)
            # keep the cached reports for 1 day by default
            data_retention_days = request.data.get("keep", 1)

        template = None
        if template_id != "default":
            template = self.get_object().project.custom_email_template
        if template_id is not None:
            try:
                template = EmailTemplate.objects.get(pk=template_id)
            except EmailTemplate.DoesNotExist:
                pass

        baseline = None

        report_kwargs = {
            "baseline": baseline,
            "template": template,
            "output_format": output_format,
            "email_recipient": email_recipient,
            "callback": callback,
            "callback_token": callback_token,
            "data_retention_days": data_retention_days
        }
        if baseline_id is not None:
            try:
                previous_build = Build.objects.get(pk=baseline_id)
                report_kwargs["baseline"] = previous_build.status
            except Build.DoesNotExist:
                data = {
                    "message": "Baseline build %s does not exist" % baseline_id
                }
                report_kwargs.update({"build": self.get_object()})
                # return created=False to avoid running prepare_report
                return update_delayed_report(None, data, status.HTTP_400_BAD_REQUEST, **report_kwargs), False
            except ProjectStatus.DoesNotExist:
                data = {
                    "message": "Build %s has no status" % baseline_id
                }
                report_kwargs.update({"build": self.get_object()})
                # return created=False to avoid running prepare_report
                return update_delayed_report(None, data, status.HTTP_400_BAD_REQUEST, **report_kwargs), False
        try:
            delayed_report, created = self.get_object().delayed_reports.get_or_create(**report_kwargs)
        except core_exceptions.MultipleObjectsReturned:
            delayed_report = self.get_object().delayed_reports.all()[0]  # return first available object
            created = False

        return delayed_report, created