def post(self, dataset): '''Upload a new resource''' args = upload_parser.parse_args() storage = storages.resources prefix = self.get_prefix(dataset) file = args['file'] filename = storage.save(file, prefix=prefix) extension = fileutils.extension(filename) file.seek(0) sha1 = storages.utils.sha1(file) size = os.path.getsize(storage.path(filename)) if storage.root else None resource = Resource( title=os.path.basename(filename), url=storage.url(filename, external=True), checksum=Checksum(value=sha1), format=extension, mime=storages.utils.mime(filename), size=size ) dataset.add_resource(resource) return resource, 201
def post(self, dataset): if not 'file' in request.files: return jsonify({ 'success': False, 'error': '"file" should be set' }), 400 storage = storages.resources prefix = self.get_prefix(dataset) file = request.files['file'] filename = storage.save(file, prefix=prefix) extension = fileutils.extension(filename) file.seek(0) sha1 = storages.utils.sha1(file) size = os.path.getsize( storage.path(filename)) if storage.root else None return jsonify({ 'success': True, 'url': storage.url(filename, external=True), 'filename': filename, 'sha1': sha1, 'format': extension, 'size': size, 'mime': storages.utils.mime(filename), })
def post(self, dataset): if 'file' not in request.files: return jsonify({ 'success': False, 'error': '"file" should be set'}), 400 storage = storages.resources prefix = self.get_prefix(dataset) file = request.files['file'] filename = storage.save(file, prefix=prefix) extension = fileutils.extension(filename) file.seek(0) sha1 = storages.utils.sha1(file) size = (os.path.getsize(storage.path(filename)) if storage.root else None) return jsonify({ 'success': True, 'url': storage.url(filename, external=True), 'filename': filename, 'sha1': sha1, 'format': extension, 'size': size, 'mime': storages.utils.mime(filename), })
def extract_infos_from_args(self, args, dataset): prefix = '/'.join( (dataset.slug, datetime.now().strftime('%Y%m%d-%H%M%S'))) storage = storages.resources uploaded_file = args['file'] filename = storage.save(uploaded_file, prefix=prefix) extension = fileutils.extension(filename) uploaded_file.seek(0) sha1 = storages.utils.sha1(uploaded_file) filesize = (os.path.getsize(storage.path(filename)) if storage.root else None) return { 'title': os.path.basename(filename), 'url': storage.url(filename, external=True), 'checksum': Checksum(value=sha1), 'format': extension, 'mime': storages.utils.mime(filename), 'filesize': filesize }
def extract_infos_from_args(self, args, dataset): prefix = '/'.join((dataset.slug, datetime.now().strftime('%Y%m%d-%H%M%S'))) storage = storages.resources uploaded_file = args['file'] filename = storage.save(uploaded_file, prefix=prefix) extension = fileutils.extension(filename) uploaded_file.seek(0) sha1 = storages.utils.sha1(uploaded_file) filesize = (os.path.getsize(storage.path(filename)) if storage.root else None) return { 'title': os.path.basename(filename), 'url': storage.url(filename, external=True), 'checksum': Checksum(value=sha1), 'format': extension, 'mime': storages.utils.mime(filename), 'filesize': filesize }
def test_default(self): self.assertEqual(fileutils.extension('test.txt'), 'txt') self.assertEqual(fileutils.extension('prefix/test.txt'), 'txt') self.assertEqual(fileutils.extension('prefix.with.dot/test.txt'), 'txt')
def test_no_extension(self): self.assertEqual(fileutils.extension('test'), None) self.assertEqual(fileutils.extension('prefix/test'), None)
def test_compound(self): self.assertEqual(fileutils.extension('test.tar.gz'), 'tar.gz') self.assertEqual(fileutils.extension('prefix.with.dot/test.tar.gz'), 'tar.gz')