(enable_load, enable_filesystem)
| 318 | error=error) |
| 319 | |
| 320 | def _add_dataset(enable_load, enable_filesystem): |
| 321 | mode = request.form.get('mode') |
| 322 | if mode == 'upload': |
| 323 | if not enable_load: |
| 324 | return None, 'Uploading databases is not allowed.' |
| 325 | |
| 326 | database = request.files.get('database') |
| 327 | if not database: |
| 328 | return None, 'Database file is required.' |
| 329 | |
| 330 | if app.config['DB_UPLOAD_DIR']: |
| 331 | dirname = app.config['DB_UPLOAD_DIR'] |
| 332 | os.makedirs(dirname, exist_ok=True) |
| 333 | else: |
| 334 | dirname = tempfile.mkdtemp(prefix='sqlite-web') |
| 335 | filename = secure_filename(database.filename) or 'database.db' |
| 336 | path = os.path.join(dirname, filename) |
| 337 | database.save(path) |
| 338 | elif mode == 'filesystem': |
| 339 | if not enable_filesystem: |
| 340 | return None, 'Loading databases from the filesystem is not allowed.' |
| 341 | path = request.form.get('filename') |
| 342 | if not path: |
| 343 | return None, 'Filename is required.' |
| 344 | if not os.path.exists(path): |
| 345 | return None, 'File "%s" not found.' % path |
| 346 | else: |
| 347 | return None, 'Error: unrecognized mode "%s".' % mode |
| 348 | |
| 349 | try: |
| 350 | dataset = initialize_dataset(path) |
| 351 | except Exception as exc: |
| 352 | return None, 'Unable to load database: %s' % exc |
| 353 | else: |
| 354 | basename = os.path.basename(path) |
| 355 | datasets[basename] = dataset |
| 356 | session['dataset'] = basename |
| 357 | |
| 358 | return dataset, None |
| 359 | |
| 360 | @app.route('/unload/', methods=['GET', 'POST']) |
| 361 | def unload(): |
no test coverage detected