(table)
| 569 | @app.route('/<table>/add-column/', methods=['GET', 'POST']) |
| 570 | @require_table |
| 571 | def add_column(table): |
| 572 | dataset = get_dataset() |
| 573 | |
| 574 | class JsonField(TextField): |
| 575 | field_type = 'JSON' |
| 576 | column_mapping = OrderedDict(( |
| 577 | ('TEXT', TextField), |
| 578 | ('INTEGER', IntegerField), |
| 579 | ('REAL', FloatField), |
| 580 | ('BLOB', BlobField), |
| 581 | ('JSON', JsonField), |
| 582 | ('BOOL', BooleanField), |
| 583 | ('DATETIME', DateTimeField), |
| 584 | ('DATE', DateField), |
| 585 | ('DECIMAL', DecimalField), |
| 586 | ('TIME', TimeField), |
| 587 | ('VARCHAR', CharField))) |
| 588 | |
| 589 | request_data = get_request_data() |
| 590 | col_type = request_data.get('type') |
| 591 | name = request_data.get('name', '') |
| 592 | |
| 593 | if request.method == 'POST': |
| 594 | name = re.sub(r'[^\w]+', '_', name.strip()) |
| 595 | if name and col_type in column_mapping: |
| 596 | try: |
| 597 | migrate( |
| 598 | dataset._migrator.add_column( |
| 599 | table, |
| 600 | name, |
| 601 | column_mapping[col_type](null=True))) |
| 602 | except Exception as exc: |
| 603 | flash('Error attempting to add column "%s": %s' % (name, exc), |
| 604 | 'danger') |
| 605 | app.logger.exception('Error attempting to add column.') |
| 606 | else: |
| 607 | flash('Column "%s" was added successfully!' % name, 'success') |
| 608 | dataset.update_cache(table) |
| 609 | return redirect(url_for('table_structure', table=table)) |
| 610 | else: |
| 611 | flash('Name and column type are required.', 'danger') |
| 612 | |
| 613 | return render_template( |
| 614 | 'add_column.html', |
| 615 | col_type=col_type, |
| 616 | column_mapping=column_mapping, |
| 617 | name=name, |
| 618 | table=table, |
| 619 | table_sql=dataset.get_table_sql(table)) |
| 620 | |
| 621 | @app.route('/<table>/drop-column/', methods=['GET', 'POST']) |
| 622 | @require_table |
nothing calls this directly
no test coverage detected