(template, table=None)
| 387 | return render_template('unload.html', selected=dataset) |
| 388 | |
| 389 | def _query_view(template, table=None): |
| 390 | dataset = get_dataset() |
| 391 | data = [] |
| 392 | data_description = error = row_count = sql = None |
| 393 | ordering = None |
| 394 | pk_index = None |
| 395 | |
| 396 | sql = qsql = request.values.get('sql') or '' |
| 397 | |
| 398 | if 'export_json' in request.values: |
| 399 | ordering = request.values.get('export_ordering') |
| 400 | export_format = 'json' |
| 401 | elif 'export_csv' in request.values: |
| 402 | ordering = request.values.get('export_ordering') |
| 403 | export_format = 'csv' |
| 404 | else: |
| 405 | ordering = request.values.get('ordering') |
| 406 | export_format = None |
| 407 | |
| 408 | if ordering: |
| 409 | ordering = int(ordering) |
| 410 | direction = 'DESC' if ordering < 0 else 'ASC' |
| 411 | qsql = ('SELECT * FROM (%s) AS _ ORDER BY %d %s' % |
| 412 | (sql.rstrip(' ;'), abs(ordering), direction)) |
| 413 | else: |
| 414 | ordering = None |
| 415 | |
| 416 | if table: |
| 417 | default_sql = 'SELECT * FROM "%s"' % table |
| 418 | model_class = dataset[table].model_class |
| 419 | pk = model_class._meta.primary_key |
| 420 | is_composite_pk = isinstance(pk, CompositeKey) |
| 421 | allow_edit = not dataset.is_readonly and pk is not False |
| 422 | allow_bulk = allow_edit and not is_composite_pk |
| 423 | else: |
| 424 | default_sql = '' |
| 425 | model_class = dataset._base_model |
| 426 | pk = None |
| 427 | is_composite_pk = False |
| 428 | allow_edit = False |
| 429 | allow_bulk = False |
| 430 | |
| 431 | if request.method == 'POST': |
| 432 | action = request.form.get('action') |
| 433 | pks = request.form.getlist('pk') |
| 434 | if action == 'bulk-delete': |
| 435 | if not allow_bulk: |
| 436 | flash('Cannot perform bulk operation on this table.', 'warning') |
| 437 | elif not pks: |
| 438 | flash('No rows were selected.', 'warning') |
| 439 | else: |
| 440 | n = (model_class.delete() |
| 441 | .where(model_class._meta.primary_key.in_(pks)) |
| 442 | .execute()) |
| 443 | flash('Successfully deleted %s row(s)' % n, 'success') |
| 444 | |
| 445 | page = page_next = page_prev = page_start = page_end = total_pages = 1 |
| 446 | total = -1 # Number of rows in query result. |
no test coverage detected