Пример #1
0
    def test_scan_file(self):
        """
        Tests the scan_file function.
        """
        exts = ('.shp', '.shx', '.sld', '.xml', '.prj', '.dbf')

        with create_files(map(lambda s: 'san_andres_y_providencia_location{0}'.format(s), exts)) as tests:
            shp = filter(lambda s: s.endswith('.shp'), tests)[0]
            spatial_files = scan_file(shp)
            self.assertTrue(isinstance(spatial_files, SpatialFiles))

            spatial_file = spatial_files[0]
            self.assertEqual(shp, spatial_file.base_file)
            self.assertTrue(spatial_file.file_type.matches('shp'))
            self.assertEqual(len(spatial_file.auxillary_files), 3)
            self.assertEqual(len(spatial_file.xml_files), 1)
            self.assertTrue(all(map(lambda s: s.endswith('xml'), spatial_file.xml_files)))
            self.assertEqual(len(spatial_file.sld_files), 1)
            self.assertTrue(all(map(lambda s: s.endswith('sld'), spatial_file.sld_files)))

        #  Test the scan_file function with a zipped spatial file that needs to be renamed.
        with create_files(['109029_23.shp', '109029_23.shx', '109029_23.dbf',
                           '109029_23.prj', '109029_23.xml'], zipped=True) as tests:
            spatial_files = scan_file(tests[0])
            self.assertTrue(isinstance(spatial_files, SpatialFiles))

            spatial_file = spatial_files[0]
            self.assertTrue(spatial_file.file_type.matches('shp'))
            self.assertEqual(len(spatial_file.auxillary_files), 3)
            self.assertEqual(len(spatial_file.xml_files), 1)
            self.assertEqual(len(spatial_file.sld_files), 0)
            self.assertTrue(all(map(lambda s: s.endswith('xml'), spatial_file.xml_files)))
Пример #2
0
    def test_scan_file(self):
        """
        Tests the scan_file function.
        """
        exts = ('.shp', '.shx', '.sld', '.xml', '.prj', '.dbf')

        with create_files(
                map(lambda s: 'san_andres_y_providencia_location{0}'.format(s),
                    exts)) as tests:
            shp = filter(lambda s: s.endswith('.shp'), tests)[0]
            spatial_files = scan_file(shp)
            self.assertTrue(isinstance(spatial_files, SpatialFiles))

            spatial_file = spatial_files[0]
            self.assertEqual(shp, spatial_file.base_file)
            self.assertTrue(spatial_file.file_type.matches('shp'))
            self.assertEqual(len(spatial_file.auxillary_files), 3)
            self.assertEqual(len(spatial_file.xml_files), 1)
            self.assertTrue(
                all(map(lambda s: s.endswith('xml'), spatial_file.xml_files)))
            self.assertEqual(len(spatial_file.sld_files), 1)
            self.assertTrue(
                all(map(lambda s: s.endswith('sld'), spatial_file.sld_files)))

        # Test the scan_file function with a zipped spatial file that needs to
        # be renamed.
        file_names = [
            '109029_23.shp', '109029_23.shx', '109029_23.dbf', '109029_23.prj',
            '109029_23.xml', '109029_23.sld'
        ]
        with create_files(file_names, zipped=True) as tests:
            spatial_files = scan_file(tests[0])
            self.assertTrue(isinstance(spatial_files, SpatialFiles))

            spatial_file = spatial_files[0]
            self.assertTrue(spatial_file.file_type.matches('shp'))
            self.assertEqual(len(spatial_file.auxillary_files), 3)
            self.assertEqual(len(spatial_file.xml_files), 1)
            self.assertEqual(len(spatial_file.sld_files), 1)
            self.assertTrue(
                all(map(lambda s: s.endswith('xml'), spatial_file.xml_files)))

            basedir = os.path.dirname(spatial_file.base_file)
            for f in file_names:
                path = os.path.join(basedir, '_%s' % f)
                self.assertTrue(os.path.exists(path))

        # Test the scan_file function with a raster spatial file takes SLD also.
        file_names = ['109029_24.tif', '109029_24.sld']
        with create_files(file_names) as tests:
            spatial_files = scan_file(tests[0])
            self.assertTrue(isinstance(spatial_files, SpatialFiles))

            spatial_file = spatial_files[0]
            self.assertTrue(spatial_file.file_type.matches('tif'))
            self.assertEqual(len(spatial_file.auxillary_files), 0)
            self.assertEqual(len(spatial_file.xml_files), 0)
            self.assertEqual(len(spatial_file.sld_files), 1)
Пример #3
0
    def test_scan_file(self):
        """
        Tests the scan_file function.
        """
        exts = (".shp", ".shx", ".sld", ".xml", ".prj", ".dbf")

        with create_files(map(lambda s: "san_andres_y_providencia_location{0}".format(s), exts)) as tests:
            shp = filter(lambda s: s.endswith(".shp"), tests)[0]
            spatial_files = scan_file(shp)
            self.assertTrue(isinstance(spatial_files, SpatialFiles))

            spatial_file = spatial_files[0]
            self.assertEqual(shp, spatial_file.base_file)
            self.assertTrue(spatial_file.file_type.matches("shp"))
            self.assertEqual(len(spatial_file.auxillary_files), 3)
            self.assertEqual(len(spatial_file.xml_files), 1)
            self.assertTrue(all(map(lambda s: s.endswith("xml"), spatial_file.xml_files)))
            self.assertEqual(len(spatial_file.sld_files), 1)
            self.assertTrue(all(map(lambda s: s.endswith("sld"), spatial_file.sld_files)))

        # Test the scan_file function with a zipped spatial file that needs to
        # be renamed.
        file_names = [
            "109029_23.shp",
            "109029_23.shx",
            "109029_23.dbf",
            "109029_23.prj",
            "109029_23.xml",
            "109029_23.sld",
        ]
        with create_files(file_names, zipped=True) as tests:
            spatial_files = scan_file(tests[0])
            self.assertTrue(isinstance(spatial_files, SpatialFiles))

            spatial_file = spatial_files[0]
            self.assertTrue(spatial_file.file_type.matches("shp"))
            self.assertEqual(len(spatial_file.auxillary_files), 3)
            self.assertEqual(len(spatial_file.xml_files), 1)
            self.assertEqual(len(spatial_file.sld_files), 1)
            self.assertTrue(all(map(lambda s: s.endswith("xml"), spatial_file.xml_files)))

            basedir = os.path.dirname(spatial_file.base_file)
            for f in file_names:
                path = os.path.join(basedir, "_%s" % f)
                self.assertTrue(os.path.exists(path))
Пример #4
0
def save_step_view(req, session):
    if req.method == 'GET':
        return render_to_response(
            'upload/layer_upload.html',
            RequestContext(
                req,
                {
                    'async_upload': _ASYNC_UPLOAD,
                    'incomplete': Upload.objects.get_incomplete_uploads(
                        req.user),
                    'charsets': CHARSETS}))

    assert session is None

    form = LayerUploadForm(req.POST, req.FILES)
    tempdir = None

    if form.is_valid():
        tempdir, base_file = form.write_files()
        logger.debug('Tempdir: {0}, basefile: {1}'.format(tempdir, base_file))
        name, ext = os.path.splitext(os.path.basename(base_file))
        logger.debug('Name: {0}, ext: {1}'.format(name, ext))
        base_file = files.scan_file(base_file)
        logger.debug(base_file)
        import_session = upload.save_step(
            req.user,
            name,
            base_file,
            overwrite=False)
        sld = None

        if base_file[0].sld_files:
            sld = base_file[0].sld_files[0]

        logger.info('provided sld is %s' % sld)
        # upload_type = get_upload_type(base_file)
        upload_session = req.session[_SESSION_KEY] = upload.UploaderSession(
            tempdir=tempdir,
            base_file=base_file,
            name=name,
            import_session=import_session,
            layer_abstract=form.cleaned_data["abstract"],
            layer_title=form.cleaned_data["layer_title"],
            permissions=form.cleaned_data["permissions"],
            import_sld_file=sld,
            upload_type=base_file[0].file_type.code,
            geogig=form.cleaned_data['geogig'],
            geogig_store=form.cleaned_data['geogig_store'],
            time=form.cleaned_data['time']
        )
        return _next_step_response(req, upload_session, force_ajax=True)
    else:
        errors = []
        for e in form.errors.values():
            errors.extend([escape(v) for v in e])
        return _error_response(req, errors=errors)
Пример #5
0
    def test_scan_file(self):
        """
        Tests the scan_file function.
        """
        exts = ('.shp', '.shx', '.sld', '.xml', '.prj', '.dbf')

        with create_files(
                map(lambda s: 'san_andres_y_providencia_location{0}'.format(s),
                    exts)) as tests:
            shp = filter(lambda s: s.endswith('.shp'), tests)[0]
            spatial_files = scan_file(shp)
            self.assertTrue(isinstance(spatial_files, SpatialFiles))

            spatial_file = spatial_files[0]
            self.assertEqual(shp, spatial_file.base_file)
            self.assertTrue(spatial_file.file_type.matches('shp'))
            self.assertEqual(len(spatial_file.auxillary_files), 3)
            self.assertEqual(len(spatial_file.xml_files), 1)
            self.assertTrue(
                all(map(lambda s: s.endswith('xml'), spatial_file.xml_files)))
            self.assertEqual(len(spatial_file.sld_files), 1)
            self.assertTrue(
                all(map(lambda s: s.endswith('sld'), spatial_file.sld_files)))

        # Test the scan_file function with a zipped spatial file that needs to
        # be renamed.
        with create_files([
                '109029_23.shp', '109029_23.shx', '109029_23.dbf',
                '109029_23.prj', '109029_23.xml'
        ],
                          zipped=True) as tests:
            spatial_files = scan_file(tests[0])
            self.assertTrue(isinstance(spatial_files, SpatialFiles))

            spatial_file = spatial_files[0]
            self.assertTrue(spatial_file.file_type.matches('shp'))
            self.assertEqual(len(spatial_file.auxillary_files), 3)
            self.assertEqual(len(spatial_file.xml_files), 1)
            self.assertEqual(len(spatial_file.sld_files), 0)
            self.assertTrue(
                all(map(lambda s: s.endswith('xml'), spatial_file.xml_files)))
Пример #6
0
def save_step_view(req, session):
    if req.method == "GET":
        return render_to_response(
            "upload/layer_upload.html",
            RequestContext(
                req,
                {
                    "async_upload": _ASYNC_UPLOAD,
                    "incomplete": Upload.objects.get_incomplete_uploads(req.user),
                    "charsets": CHARSETS,
                },
            ),
        )

    assert session is None

    form = LayerUploadForm(req.POST, req.FILES)
    tempdir = None

    if form.is_valid():
        tempdir, base_file = form.write_files()
        logger.debug("Tempdir: {0}, basefile: {1}".format(tempdir, base_file))
        name, ext = os.path.splitext(os.path.basename(base_file))
        logger.debug("Name: {0}, ext: {1}".format(name, ext))
        base_file = files.scan_file(base_file)
        logger.debug(base_file)
        import_session = upload.save_step(
            req.user,
            name,
            base_file,
            overwrite=False,
            mosaic=form.cleaned_data["mosaic"],
            append_to_mosaic_opts=form.cleaned_data["append_to_mosaic_opts"],
            append_to_mosaic_name=form.cleaned_data["append_to_mosaic_name"],
            mosaic_time_regex=form.cleaned_data["mosaic_time_regex"],
            mosaic_time_value=form.cleaned_data["mosaic_time_value"],
            time_presentation=form.cleaned_data["time_presentation"],
            time_presentation_res=form.cleaned_data["time_presentation_res"],
            time_presentation_default_value=form.cleaned_data["time_presentation_default_value"],
            time_presentation_reference_value=form.cleaned_data["time_presentation_reference_value"],
        )

        sld = None

        if base_file[0].sld_files:
            sld = base_file[0].sld_files[0]

        logger.info("provided sld is %s" % sld)
        # upload_type = get_upload_type(base_file)
        upload_session = upload.UploaderSession(
            tempdir=tempdir,
            base_file=base_file,
            name=name,
            import_session=import_session,
            layer_abstract=form.cleaned_data["abstract"],
            layer_title=form.cleaned_data["layer_title"],
            permissions=form.cleaned_data["permissions"],
            import_sld_file=sld,
            upload_type=base_file[0].file_type.code,
            geogig=form.cleaned_data["geogig"],
            geogig_store=form.cleaned_data["geogig_store"],
            time=form.cleaned_data["time"],
            mosaic=form.cleaned_data["mosaic"],
            append_to_mosaic_opts=form.cleaned_data["append_to_mosaic_opts"],
            append_to_mosaic_name=form.cleaned_data["append_to_mosaic_name"],
            mosaic_time_regex=form.cleaned_data["mosaic_time_regex"],
            mosaic_time_value=form.cleaned_data["mosaic_time_value"],
            user=req.user,
        )
        req.session[str(upload_session.import_session.id)] = upload_session
        return _next_step_response(req, upload_session, force_ajax=True)
    else:
        errors = []
        for e in form.errors.values():
            errors.extend([escape(v) for v in e])
        return _error_response(req, errors=errors)
Пример #7
0
def save_step_view(req, session):
    if req.method == 'GET':
        return render_to_response(
            'upload/layer_upload.html',
            RequestContext(
                req,
                {
                    'async_upload': _ASYNC_UPLOAD,
                    'incomplete': Upload.objects.get_incomplete_uploads(
                        req.user),
                    'charsets': CHARSETS}))

    assert session is None

    form = LayerUploadForm(req.POST, req.FILES)
    tempdir = None

    if form.is_valid():
        tempdir, base_file = form.write_files()
        logger.debug('Tempdir: {0}, basefile: {1}'.format(tempdir, base_file))
        name, ext = os.path.splitext(os.path.basename(base_file))
        logger.debug('Name: {0}, ext: {1}'.format(name, ext))
        base_file = files.scan_file(base_file)
        logger.debug(base_file)
        import_session = upload.save_step(
            req.user,
            name,
            base_file,
            overwrite=False,
            mosaic=form.cleaned_data['mosaic'],
            append_to_mosaic_opts=form.cleaned_data['append_to_mosaic_opts'],
            append_to_mosaic_name=form.cleaned_data['append_to_mosaic_name'],
            mosaic_time_regex=form.cleaned_data['mosaic_time_regex'],
            mosaic_time_value=form.cleaned_data['mosaic_time_value'],
            time_presentation=form.cleaned_data['time_presentation'],
            time_presentation_res=form.cleaned_data['time_presentation_res'],
            time_presentation_default_value=form.cleaned_data['time_presentation_default_value'],
            time_presentation_reference_value=form.cleaned_data['time_presentation_reference_value']
        )

        sld = None

        if base_file[0].sld_files:
            sld = base_file[0].sld_files[0]

        logger.info('provided sld is %s' % sld)
        geogig_store = form.cleaned_data.get('geogig_store')

        if not geogig_store:
            geogig_store = slugify(' '.join([req.user.username, name]))

        if form.cleaned_data.get('is_private', False):
            permissions = {u'users': {u'AnonymousUser': []}, u'groups': {}}
        else:
            # Use default permissions
            permissions = None



        # upload_type = get_upload_type(base_file)
        upload_session = upload.UploaderSession(
            tempdir=tempdir,
            base_file=base_file,
            name=name,
            import_session=import_session,
            layer_abstract=form.cleaned_data["abstract"],
            layer_title=form.cleaned_data["layer_title"],
            permissions=permissions,
            import_sld_file=sld,
            upload_type=base_file[0].file_type.code,
            geogig=form.cleaned_data['geogig'],
            geogig_store=geogig_store,
            time=form.cleaned_data['time']
        )
        req.session[str(upload_session.import_session.id)] = upload_session
        return _next_step_response(req, upload_session, force_ajax=True)
    else:
        errors = []
        for e in form.errors.values():
            errors.extend([escape(v) for v in e])
        return _error_response(req, errors=errors)
Пример #8
0
def save_step_view(req, session):
    if req.method == "GET":
        return render_to_response(
            "upload/layer_upload.html",
            RequestContext(
                req,
                {
                    "async_upload": _ASYNC_UPLOAD,
                    "incomplete": Upload.objects.get_incomplete_uploads(req.user),
                    "charsets": CHARSETS,
                },
            ),
        )

    assert session is None

    form = LayerUploadForm(req.POST, req.FILES)
    tempdir = None

    if form.is_valid():
        tempdir, base_file = form.write_files()
        logger.debug("Tempdir: {0}, basefile: {1}".format(tempdir, base_file))
        name, ext = os.path.splitext(os.path.basename(base_file))
        logger.debug("Name: {0}, ext: {1}".format(name, ext))
        base_file = files.scan_file(base_file)
        logger.debug(base_file)
        import_session = upload.save_step(req.user, name, base_file, overwrite=False)
        sld = None

        if base_file[0].sld_files:
            sld = base_file[0].sld_files[0]

        logger.info("provided sld is %s" % sld)
        geogig_store = form.cleaned_data.get("geogig_store")

        if not geogig_store:
            geogig_store = slugify(" ".join([req.user.username, name]))

        if form.cleaned_data.get("is_private", False):
            permissions = {u"users": {u"AnonymousUser": []}, u"groups": {}}
        else:
            # Use default permissions
            permissions = None

        # upload_type = get_upload_type(base_file)
        upload_session = req.session[_SESSION_KEY] = upload.UploaderSession(
            tempdir=tempdir,
            base_file=base_file,
            name=name,
            import_session=import_session,
            layer_abstract=form.cleaned_data["abstract"],
            layer_title=form.cleaned_data["layer_title"],
            permissions=permissions,
            import_sld_file=sld,
            upload_type=base_file[0].file_type.code,
            geogig=form.cleaned_data["geogig"],
            geogig_store=geogig_store,
            time=form.cleaned_data["time"],
        )
        return _next_step_response(req, upload_session, force_ajax=True)
    else:
        errors = []
        for e in form.errors.values():
            errors.extend([escape(v) for v in e])
        return _error_response(req, errors=errors)