Esempio n. 1
0
    def _make_zipfile(self, project, obj, file_format, obj_generator, expanded=False):
        """Generate a ZIP of a certain type and upload it.

        :param project: A project object
        :param obj: The domain object to be exported
        :param file_format: The file format of the export
        :param obj_generator: A generator object containing
            the data to be written to file
        :param expanded: Boolean indicating whether or not
            relevant object metadata should be included
            in the export

        :return: The path where the .zip file is saved
        """
        name = self._project_name_latin_encoded(project)
        if obj_generator is not None:
            with tempfile.NamedTemporaryFile() as datafile:
                for line in obj_generator:
                    datafile.write(str(line))
                datafile.flush()
                obj_generator.close()

                with tempfile.NamedTemporaryFile() as zipped_datafile:
                    with self._zip_factory(zipped_datafile.name) as _zip:
                        _zip.write(datafile.name,
                                   secure_filename('{0}_{1}.{2}'
                                                   .format(name, obj, file_format)))
                        _zip.content_type = 'application/zip'

                    filename = self.download_name(project, obj)
                    zip_file = FileStorage(filename=filename,
                                           stream=zipped_datafile)

                    container = self._container(project)
                    if uploader.file_exists(filename, container):
                        assert uploader.delete_file(filename, container)
                    uploader.upload_file(zip_file, container=container)

                    if isinstance(uploader, local.LocalUploader):
                        path = uploader.get_file_path(container, filename)
                    else:
                        path = None

                    return path
Esempio n. 2
0
 def zip_existing(self, project, ty):
     """Check if exported ZIP is existing"""
     # TODO: Check ty
     filename = self.download_name(project, ty)
     return uploader.file_exists(filename, self._container(project))
Esempio n. 3
0
 def delete_existing_zip(self, project, ty):
     """Delete existing ZIP from uploads directory"""
     filename = self.download_name(project, ty)
     if uploader.file_exists(filename, self._container(project)):
         assert uploader.delete_file(filename, self._container(project))
Esempio n. 4
0
 def zip_existing(self, project, ty):
     """Check if exported ZIP is existing"""
     # TODO: Check ty
     filename = self.download_name(project, ty)
     return uploader.file_exists(filename, self._container(project))