def test_get_object(self): Entry.objects.create(name='entry', created_user=self.guest, schema=self.entity) params = { 'entities': self.entity.id, 'attrinfo': { 'name': 'foo', 'keyword': '' }, 'export_style': '"yaml"', } # check there is no job self.assertFalse(Job.get_job_with_params(self.guest, params).exists()) # create a new job job = Job.new_export(self.guest, text='hoge', params=params) self.assertEqual(job.target_type, Job.TARGET_UNKNOWN) self.assertEqual(job.operation, Job.OP_EXPORT) self.assertEqual(job.text, 'hoge') # check created job is got by specified params self.assertEqual( Job.get_job_with_params(self.guest, params).count(), 1) self.assertEqual( Job.get_job_with_params(self.guest, params).last(), job) # check the case when different params is specified then it returns None params['attrinfo']['name'] = '' self.assertFalse(Job.get_job_with_params(self.guest, params).exists())
def test_get_object(self): params = { "entities": self.entity.id, "attrinfo": { "name": "foo", "keyword": "" }, "export_style": '"yaml"', } # check there is no job self.assertFalse(Job.get_job_with_params(self.guest, params).exists()) # create a new job job = Job.new_export(self.guest, text="hoge", params=params) self.assertEqual(job.target_type, Job.TARGET_UNKNOWN) self.assertEqual(job.operation, JobOperation.EXPORT_ENTRY.value) self.assertEqual(job.text, "hoge") # check created job is got by specified params self.assertEqual( Job.get_job_with_params(self.guest, params).count(), 1) self.assertEqual( Job.get_job_with_params(self.guest, params).last(), job) # check the case when different params is specified then it returns None params["attrinfo"]["name"] = "" self.assertFalse(Job.get_job_with_params(self.guest, params).exists())
def export_search_result(request, recv_data): # additional validation if recv_data['export_style'] != 'yaml' and recv_data[ 'export_style'] != 'csv': return HttpResponse('Invalid "export_type" is specified', status=400) user = User.objects.get(id=request.user.id) # check whether same job is sent job_status_not_finished = [ Job.STATUS['PREPARING'], Job.STATUS['PROCESSING'] ] if Job.get_job_with_params( user, recv_data).filter(status__in=job_status_not_finished).exists(): return HttpResponse('Same export processing is under execution', status=400) # create a job to export search result and run it job = Job.new_export_search_result( user, **{ 'text': 'search_results.%s' % recv_data['export_style'], 'params': recv_data, }) job.run() return JsonResponse({ 'result': 'Succeed in registering export processing. ' + 'Please check Job list.' })
def post(self, request, entity_id: int): if not Entity.objects.filter(id=entity_id).exists(): return Response("Failed to get entity of specified id", status=status.HTTP_400_BAD_REQUEST) serializer = EntryExportSerializer(data=request.data) if not serializer.is_valid(): return Response("Parameters in post body is invalid", status=status.HTTP_400_BAD_REQUEST) job_params = { "export_format": serializer.validated_data["format"], "target_id": entity_id, } # check whether same job is sent job_status_not_finished = [ Job.STATUS["PREPARING"], Job.STATUS["PROCESSING"] ] if (Job.get_job_with_params(request.user, job_params).filter( status__in=job_status_not_finished).exists()): return Response("Same export processing is under execution", status=status.HTTP_400_BAD_REQUEST) entity = Entity.objects.get(id=entity_id) if not request.user.has_permission(entity, ACLType.Readable): return Response('Permission denied to _value "%s"' % entity.name, status=status.HTTP_400_BAD_REQUEST) # create a job to export search result and run it job = Job.new_export( request.user, **{ "text": "entry_%s.%s" % (entity.name, job_params["export_format"]), "target": entity, "params": job_params, }, ) job.run() return Response( { "result": "Succeed in registering export processing. " + "Please check Job list." }, status=status.HTTP_200_OK, )
def export(request, entity_id): user = User.objects.get(id=request.user.id) job_params = { 'export_format': 'yaml', 'target_id': entity_id, } if not Entity.objects.filter(id=entity_id).exists(): return HttpResponse('Failed to get entity of specified id', status=400) if 'format' in request.GET and request.GET.get('format') == 'CSV': job_params['export_format'] = 'csv' # check whether same job is sent job_status_not_finished = [ Job.STATUS['PREPARING'], Job.STATUS['PROCESSING'] ] if Job.get_job_with_params( user, job_params).filter(status__in=job_status_not_finished).exists(): return HttpResponse('Same export processing is under execution', status=400) entity = Entity.objects.get(id=entity_id) if not user.has_permission(entity, ACLType.Readable): return HttpResponse('Permission denied to export "%s"' % entity.name, status=400) # create a job to export search result job = Job.new_export( user, **{ 'text': 'entry_%s.%s' % (entity.name, job_params['export_format']), 'target': entity, 'params': job_params, }) # create a job to export search result export_entries.delay(job.id) return JsonResponse({ 'result': 'Succeed in registering export processing. ' + 'Please check Job list.' })
def export(request, entity_id, recv_data): job_params = { "export_format": "yaml", "target_id": entity_id, } if not Entity.objects.filter(id=entity_id).exists(): return HttpResponse("Failed to get entity of specified id", status=400) if "format" in recv_data and recv_data["format"] == "CSV": job_params["export_format"] = "csv" # check whether same job is sent job_status_not_finished = [ Job.STATUS["PREPARING"], Job.STATUS["PROCESSING"] ] if (Job.get_job_with_params( request.user, job_params).filter(status__in=job_status_not_finished).exists()): return HttpResponse("Same export processing is under execution", status=400) entity = Entity.objects.get(id=entity_id) if not request.user.has_permission(entity, ACLType.Readable): return HttpResponse('Permission denied to export "%s"' % entity.name, status=400) # create a job to export search result and run it job = Job.new_export( request.user, **{ "text": "entry_%s.%s" % (entity.name, job_params["export_format"]), "target": entity, "params": job_params, }) job.run() return JsonResponse({ "result": "Succeed in registering export processing. " + "Please check Job list." })
def export_search_result(request, recv_data): # check whether same job is sent job_status_not_finished = [ Job.STATUS["PREPARING"], Job.STATUS["PROCESSING"] ] if (Job.get_job_with_params( request.user, recv_data).filter(status__in=job_status_not_finished).exists()): return HttpResponse("Same export processing is under execution", status=400) # create a job to export search result and run it job = Job.new_export_search_result( request.user, **{ "text": "search_results.%s" % recv_data["export_style"], "params": recv_data, }) job.run() return JsonResponse({ "result": "Succeed in registering export processing. " + "Please check Job list." })