def handle(self, *args, **kwargs): infiles = kwargs.get('files') self.verbosity = kwargs.get('verbosity') self.dry_run = kwargs.get('dry_run') # Attempt to parse additional attributes raw_attrs = kwargs.get('attributes') self.attributes = self._create_attributes(raw_attrs) if raw_attrs else {} if self.verbosity > 1: self.stdout.write(self.style.NOTICE('3D geometries will be flattened!')) for f in infiles: path, filename = os.path.split(f) fname, fext = os.path.splitext(filename) self.stdout.write("Processing '{}'".format(fname)) self.attributes['source'] = clean_string(filename) try: geo_store = geostore_from_file( f, fname, verbosity=self.verbosity, geo_attributes=self.attributes, create=True if not self.dry_run else False ) if geo_store: self.stdout.write(self.style.SUCCESS("Created '{}'".format(geo_store.identifier))) else: self.stderr.write(self.style.ERROR("Unable to create Geostore for '{}'".format(filename))) except Exception as e: raise CommandError(e)
def form_valid(self, form): tempfp = NamedTemporaryFile(delete=False) uploaded_file = form.files['geo_file'] tempfp.write(uploaded_file.read()) tempfp.close() label = form.cleaned_data.get('label') or uploaded_file.name project = form.cleaned_data.get('project', None) try: geo = geostore_from_file(tempfp.name, label) if project: project.geo = geo project.save() self.success_url = reverse('admin:locations_geometrystore_change', args=(geo.id,)) return super(GeoUploadView, self).form_valid(form) except Exception as e: logger.error(e) err_msg = "Unable to create geodata from uploaded file!" error_response = '<h1>{}</h1><p>{}</p>'.format(err_msg, str(e)) return HttpResponseServerError(error_response)
def handle(self, *args, **kwargs): infiles = kwargs.get('files') self.verbosity = kwargs.get('verbosity') self.dry_run = kwargs.get('dry_run') # Attempt to parse additional attributes raw_attrs = kwargs.get('attributes') self.attributes = self._create_attributes( raw_attrs) if raw_attrs else {} if self.verbosity > 1: self.stdout.write( self.style.NOTICE('3D geometries will be flattened!')) for f in infiles: path, filename = os.path.split(f) fname, fext = os.path.splitext(filename) self.stdout.write("Processing '{}'".format(fname)) self.attributes['source'] = clean_string(filename) try: geo_store = geostore_from_file( f, fname, verbosity=self.verbosity, geo_attributes=self.attributes, create=True if not self.dry_run else False) if geo_store: self.stdout.write( self.style.SUCCESS("Created '{}'".format( geo_store.identifier))) else: self.stderr.write( self.style.ERROR( "Unable to create Geostore for '{}'".format( filename))) except Exception as e: raise CommandError(e)