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)
Example #2
0
 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)
Example #3
0
 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)
Example #4
0
    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)