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)))
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)
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))
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)
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)))
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)
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)
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)