def post(self, batch_id): """ Adds a page (really any type of file) to the batch identified by *batch_id*. ** Request ** POST /batch/:batch/pages ** Response ** HTTP/1.1 201 OK [ { "name": "0033.tif", "url": "/pages/63ca3ec7-2592-4c7d-9009-913aac42535d/0033.tif" } ] :form scans: file(s) to add to the batch :status 201: task created :status 403: file couldn't be created :status 404: batch not found """ args = self.parser.parse_args() log.debug('Routing to pages {} of {} (POST)'.format( [x.filename for x in args['scans']], batch_id)) try: batch = SimpleBatch(batch_id) except: return {'message': 'Batch Not Found: {}'.format(batch_id)}, 404 data = [] for file in args['scans']: try: fp = storage.StorageFile(batch_id, file.filename, 'wb') except NidabaStorageViolationException as e: log.debug('Failed to write file {}'.format(file.filename), exc_info=True) return {'message': str(e)}, 403 else: with fp: file.save(fp) file.close() if args['auxiliary'] is False: log.debug('Adding {}/{} to {}'.format( fp.storage_path[0], fp.storage_path[1], batch_id)) batch.add_document(fp.storage_path) data.append({ 'name': file.filename, 'url': url_for('api.page', batch=batch_id, file=file.filename) }) return data, 201
def post(self, batch_id): """ Adds a page (really any type of file) to the batch identified by *batch_id*. ** Request ** POST /batch/:batch/pages ** Response ** HTTP/1.1 201 OK [ { "name": "0033.tif", "url": "/pages/63ca3ec7-2592-4c7d-9009-913aac42535d/0033.tif" } ] :form scans: file(s) to add to the batch :status 201: task created :status 403: file couldn't be created :status 404: batch not found """ args = self.parser.parse_args() log.debug('Routing to pages {} of {} (POST)'.format( [x.filename for x in args['scans']], batch_id)) try: batch = SimpleBatch(batch_id) except: return {'message': 'Batch Not Found: {}'.format(batch_id)}, 404 data = [] for file in args['scans']: try: fp = storage.StorageFile(batch_id, file.filename, 'wb') except NidabaStorageViolationException as e: log.debug('Failed to write file {}'.format(file.filename), exc_info=True) return {'message': str(e)}, 403 else: with fp: file.save(fp) file.close() if args['auxiliary'] is False: log.debug('Adding {}/{} to {}'.format(fp.storage_path[0], fp.storage_path[1], batch_id)) batch.add_document(fp.storage_path) data.append({'name': file.filename, 'url': url_for('api.page', batch=batch_id, file=file.filename)}) return data, 201