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