Ejemplo n.º 1
0
    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())
Ejemplo n.º 2
0
    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())
Ejemplo n.º 3
0
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.'
    })
Ejemplo n.º 4
0
    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,
        )
Ejemplo n.º 5
0
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.'
    })
Ejemplo n.º 6
0
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."
    })
Ejemplo n.º 7
0
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."
    })