def test_export(self): job = TestJob.from_yaml_and_user(self.factory.make_job_yaml(), self.user) test_suite = TestSuite.objects.get_or_create(name="lava", job=job)[0] test_case = TestCase(id=1, name="name", suite=test_suite, result=TestCase.RESULT_FAIL) self.assertTrue( any( map( lambda v: v in testcase_export_fields(), export_testcase(test_case).keys(), )))
def get_testjob_results_csv(self, job_id): """ Name ---- `get_testjob_results_csv` (`job_id`) Description ----------- Get the job results of given job id in CSV format. Arguments --------- `job_id`: string Job id for which the results are required. Return value ------------ This function returns an XML-RPC structures of job results in CSV format, provided the user is authenticated with an username and token. """ self._authenticate() if not job_id: raise xmlrpc.client.Fault( 400, "Bad request: TestJob id was not specified.") try: job = TestJob.get_by_job_number(job_id) if not job.can_view(self.user): raise xmlrpc.client.Fault( 401, "Permission denied for user to job %s" % job_id) output = io.StringIO() writer = csv.DictWriter( output, quoting=csv.QUOTE_ALL, extrasaction="ignore", fieldnames=testcase_export_fields(), ) writer.writeheader() for test_suite in job.testsuite_set.all(): for row in test_suite.testcase_set.all(): writer.writerow(export_testcase(row)) except TestJob.DoesNotExist: raise xmlrpc.client.Fault(404, "Specified job not found.") return output.getvalue()
def suite_csv(request, job, pk): job = get_object_or_404(TestJob, pk=job) check_request_auth(request, job) test_suite = get_object_or_404(TestSuite, name=pk, job=job) querydict = request.GET offset = querydict.get('offset', default=None) limit = querydict.get('limit', default=None) response = HttpResponse(content_type='text/csv') filename = "lava_%s.csv" % test_suite.name response['Content-Disposition'] = 'attachment; filename="%s"' % filename writer = csv.DictWriter(response, quoting=csv.QUOTE_ALL, extrasaction='ignore', fieldnames=testcase_export_fields()) writer.writeheader() testcases = get_testcases_with_limit(test_suite, limit, offset) for row in testcases: writer.writerow(export_testcase(row)) return response
def csv(self, request, **kwargs): limit = request.query_params.get("limit", None) offset = request.query_params.get("offset", None) output = io.StringIO() writer = csv.DictWriter( output, quoting=csv.QUOTE_ALL, extrasaction="ignore", fieldnames=testcase_export_fields(), ) writer.writeheader() for row in get_testcases_with_limit(self.get_object(), limit, offset): writer.writerow(export_testcase(row)) response = HttpResponse(output.getvalue(), content_type="application/csv") response["Content-Disposition"] = ( "attachment; filename=suite_%s.csv" % self.get_object().name) return response