Exemple #1
0
def source_upload_metadata(request, pk):
    """ allow to import datasets metadatada from a csv file
    """
    if not 'upload_csv_file' in request.FILES:
        return HttpResponseBadRequest()

    source = get_object_or_404(Source, pk=pk)
    filedata = request.FILES['upload_csv_file']
    if not filedata.name.endswith('.csv'):
        messages.error(request, 'The uploaded file is of the wrong type')
        return redirect(source)

    report = MetadataImporter.read_csv(source, filedata)

    if report['errors'] != 0:
        messages.error(
            request, "Created {0} out of {1} datasets, some errors "
                     "occurred: {2}".format(report['total'] - report['errors'],
                                            report['total'],
                                            report['report'])
        )
    else:
        messages.success(
            request, "Succesfully added {0} datasets".format(report['total'])
        )

    return redirect(source)
Exemple #2
0
    def test_read_csv(self):
        source = Source.objects.all()[0]
        csv_stream = cStringIO.StringIO(
            "url\tdownload\tname\tdescription\ttags\tcurator\tlicense\t"
            "bounding_box\tother_meta\n"
            "http://path.to/url/1\thttp://path.to/download/1\tName 1\tDesc 1\t"
            "t11,t12\tCurator Name 1\tLic 1\t1,2,3,4\t{\"k11\":\"v11\"}\n"
            "http://path.to/url/2\thttp://path.to/download/2\tName 2\tDesc 2\t"
            "t21,t22\tCurator Name 2\tLic 2\t5,6,7,8\t{\"k12\":\"v12\"}\n")

        self.assertEqual(
            {'total': 2, 'errors': 0, 'report': []},
            MetadataImporter.read_csv(source, csv_stream)
        )
Exemple #3
0
def source_upload_metadata(request, pk):
    """ allow to import datasets metadatada from a csv file
    """
    if not 'upload_csv_file' in request.FILES:
        return HttpResponseBadRequest()

    source = get_object_or_404(Source, pk=pk)
    filedata = request.FILES['upload_csv_file']
    if not filedata.name.endswith('.csv'):
        messages.error(request, 'The uploaded file is of the wrong type')
        return redirect(source)

    report = MetadataImporter.read_csv(source, filedata)

    if report['errors'] != 0:
        messages.error(
            request, "Created {0} out of {1} datasets, some errors "
            "occurred: {2}".format(report['total'] - report['errors'],
                                   report['total'], report['report']))
    else:
        messages.success(
            request, "Succesfully added {0} datasets".format(report['total']))

    return redirect(source)