def discretize(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) column_name = request.args.get('col-name') discretization = request.args.get('discretization') try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) if discretization == 'eq-width': num_intervals = int(request.args.get('num-intervals')) numerical_transformer.equal_width_interval(dataset_id, table_name, column_name, num_intervals) elif discretization == 'eq-freq': num_intervals = int(request.args.get('num-intervals')) numerical_transformer.equal_freq_interval(dataset_id, table_name, column_name, num_intervals) elif discretization == 'manual': intervals = [ int(n) for n in request.args.get('intervals').strip().split(',') ] numerical_transformer.manual_interval(dataset_id, table_name, column_name, intervals) else: flash(u"Data couldn't be discritized.", 'danger') return jsonify({'error': True}), 400 except ValueError: flash(u"Data couldn't be discritized.", 'danger') return jsonify({'error': True}), 400 flash(u"Data has been discritized.", 'success') return jsonify({'success': True}), 200
def get_table(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) start = request.args.get('start') length = request.args.get('length') order_column_idx = int(request.args.get('order[0][column]')) order_column_name = request.args.get( 'columns[{}][data]'.format(order_column_idx)) order_direction = request.args.get('order[0][dir]') ordering = (order_column_name, order_direction) search = request.args.get('search[value]') table = data_loader.get_table(dataset_id, table_name, offset=start, limit=length, ordering=ordering, search=search) # Make proper data dict out of table rows data = list() for r_ix in range(len(table.rows)): r = dict() for c_ix in range(len(table.columns)): r[table.columns[c_ix].name] = table.rows[r_ix][c_ix] data.append(r) return jsonify(draw=int(request.args.get('draw')), recordsTotal=table.total_size, recordsFiltered=table.total_size, data=data) # table.rows
def get_table(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) start = request.args.get('start') length = request.args.get('length') order_column_idx = int(request.args.get('order[0][column]')) order_column_name = request.args.get('columns[{}][data]'.format(order_column_idx)) order_direction = request.args.get('order[0][dir]') ordering = (order_column_name, order_direction) search = request.args.get('search[value]') table = data_loader.get_table(dataset_id, table_name, offset=start, limit=length, ordering=ordering, search=search) # Make proper data dict out of table rows data = list() for r_ix in range(len(table.rows)): r = dict() for c_ix in range(len(table.columns)): r[table.columns[c_ix].name] = table.rows[r_ix][c_ix] data.append(r) return jsonify(draw=int(request.args.get('draw')), recordsTotal=table.total_size, recordsFiltered=table.total_size, data=data) # table.rows
def find_and_replace(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) colomn = request.args.get('col-name') replacement_function = request.args.get('replacement-function') replacement_value = request.args.get('replacement-value') if replacement_function == "regex": regex = request.args.get('replacement-regex') data_transformer.find_and_replace_by_regex(dataset_id, table_name, colomn, regex, replacement_value) else: value_to_be_replaced = request.args.get('value-to-be-replaced') data_transformer.find_and_replace(dataset_id, table_name, colomn, value_to_be_replaced, replacement_value, replacement_function) flash(u"Find and replace was successful.", 'success') return jsonify({'success': True}), 200 except Exception: flash(u"Find and replace was unsuccessful.", 'danger') return jsonify({'error': True}), 400
def export_table(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) # Maybe later we might add other types, but for now this is hardcoded to export as CSV try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) filename = table_name + ".csv" path = UPLOAD_FOLDER + "/" + filename separator = request.args.get('separator') quote_char = request.args.get('quote_char') empty_char = request.args.get('empty_char') data_loader.export_table(path, dataset_id, table_name, separator=separator, quote_char=quote_char, empty_char=empty_char) flash(u"Data has been exported.", 'success') return send_from_directory(UPLOAD_FOLDER, filename, as_attachment=True) except Exception: flash(u"Data couldn't be exported.", 'danger') return jsonify({'error': True}), 400
def revert_to_raw_data(dataset_id, table_name): try: data_loader.revert_back_to_raw_data(dataset_id, table_name) active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) flash(u"Your data has been reverted to its raw state.", 'success') except Exception: flash(u"Your data couldn't be reverted to its raw state.", 'danger') return redirect(url_for('data_service.get_table', dataset_id=dataset_id, table_name=table_name), code=303)
def get_active_users(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) active_users = active_user_handler.get_active_users_in_table(dataset_id, table_name, current_user.username) return jsonify(data=active_users) except Exception: return jsonify({'error': True}), 400
def delete_backup(dataset_id, table_name, timestamp): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) data_loader.delete_backup(dataset_id, table_name, timestamp) return jsonify({'success': True}), 200 except Exception: return jsonify({'error': True}), 400
def delete_backup(dataset_id, table_name, timestamp): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) data_loader.delete_backup(dataset_id, table_name, timestamp) return jsonify({'success': True}), 200 except Exception: return jsonify({'error': True}), 400
def get_backup_info(dataset_id, table_name, timestamp): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) if timestamp == "DEFAULT": return "Select backup to display note..." note = data_loader.get_backup_info(dataset_id, table_name, timestamp) return note except Exception: return ""
def get_active_users(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) active_users = active_user_handler.get_active_users_in_table( dataset_id, table_name, current_user.username) return jsonify(data=active_users) except Exception: return jsonify({'error': True}), 400
def undo_action(dataset_id, table_name, action_id): if not data_loader.has_access(current_user.username, dataset_id): return abort(403) active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) try: _history.undo_action(dataset_id, table_name, action_id) flash(u"Action was undone", 'success') return jsonify({'success': True}), 200 except Exception as e: flash(u"Action could not be undone", 'danger') return jsonify({'error': True}), 400
def undo_action(dataset_id, table_name, action_id): if not data_loader.has_access(current_user.username, dataset_id): return abort(403) active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) try: _history.undo_action(dataset_id, table_name, action_id) flash(u"Action was undone", 'success') return jsonify({'success': True}), 200 except Exception as e: flash(u"Action could not be undone", 'danger') return jsonify({'error': True}), 400
def one_hot_encode(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) column_name = request.args.get('col-name') one_hot_encoder.encode(dataset_id, table_name, column_name) flash(u"One hot encoding was successful.", 'success') return jsonify({'success': True}), 200 except Exception: flash(u"One hot encoding was unsuccessful.", 'danger') return jsonify({'error': True}), 400
def delete_row(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) row_ids = [key.split('-')[1] for key in request.args] data_loader.delete_row(dataset_id, table_name, row_ids) flash(u"Rows have been deleted.", 'success') return jsonify({'success': True}), 200 except Exception: flash(u"Rows couldn't be deleted.", 'danger') return jsonify({'error': True}), 400
def get_backup_info(dataset_id, table_name, timestamp): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) if timestamp == "DEFAULT": return "Select backup to display note..." note = data_loader.get_backup_info(dataset_id, table_name, timestamp) return note except Exception: return ""
def normalize(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) column_name = request.args.get('col-name') numerical_transformer.normalize(dataset_id, table_name, column_name) flash(u"Data has been normalized.", 'success') return jsonify({'success': True}), 200 except Exception: flash(u"Data couldn't be normalized.", 'danger') return jsonify({'error': True}), 400
def delete_column(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) column_name = request.args.get('col-name') data_loader.delete_column(dataset_id, table_name, column_name) flash(u"Column has been deleted.", 'success') return jsonify({'success': True}), 200 except Exception: flash(u"Column couldn't be deleted.", 'danger') return jsonify({'error': True}), 400
def delete_column(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) column_name = request.args.get('col-name') data_loader.delete_column(dataset_id, table_name, column_name) flash(u"Column has been deleted.", 'success') return jsonify({'success': True}), 200 except Exception: flash(u"Column couldn't be deleted.", 'danger') return jsonify({'error': True}), 400
def normalize(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) column_name = request.args.get('col-name') numerical_transformer.normalize(dataset_id, table_name, column_name) flash(u"Data has been normalized.", 'success') return jsonify({'success': True}), 200 except Exception: flash(u"Data couldn't be normalized.", 'danger') return jsonify({'error': True}), 400
def delete_row(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) row_ids = [key.split('-')[1] for key in request.args] data_loader.delete_row(dataset_id, table_name, row_ids) flash(u"Rows have been deleted.", 'success') return jsonify({'success': True}), 200 except Exception: flash(u"Rows couldn't be deleted.", 'danger') return jsonify({'error': True}), 400
def transform_date_or_time(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) column_name = request.args.get('col-name') operation_name = request.args.get('operation-name') date_time_transformer.transform(dataset_id, table_name, column_name, operation_name) flash(u"Date/Time transformation was successful.", 'success') return jsonify({'success': True}), 200 except Exception: flash(u"Date/Time transformation was unsuccessful.", 'danger') return jsonify({'error': True}), 400
def one_hot_encode(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) column_name = request.args.get('col-name') one_hot_encoder.encode(dataset_id, table_name, column_name) flash(u"One hot encoding was successful.", 'success') return jsonify({'success': True}), 200 except Exception: flash(u"One hot encoding was unsuccessful.", 'danger') return jsonify({'error': True}), 400
def remove_rows_predicate(dataset_id, table_name): predicates = list() for entry in request.form.keys(): if entry.startswith('join'): p = request.form.getlist(entry) predicates.append(p) try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) data_loader.delete_row_predicate(dataset_id, table_name, predicates) flash(u"Removal of rows by predicate was successful.", 'success') except Exception: flash(u"Removal of rows by predicate was unsuccessful.", 'warning') return redirect(url_for('data_service.get_table', dataset_id=dataset_id, table_name=table_name))
def outliers(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) column_name = request.args.get('col-name') option = request.args.get('option') == 'less-than' value = float(request.args.get('value')) numerical_transformer.remove_outlier(dataset_id, table_name, column_name, value, option) except ValueError: flash(u"Outliers couldn't be removed.", 'danger') return jsonify({'error': True}), 400 flash(u"Outliers have been removed.", 'success') return jsonify({'success': True}), 200
def restore_backup(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) backup_ts = request.args.get('backup-timestamp') if backup_ts == "DEFAULT": return jsonify({'error': True}), 400 data_loader.restore_backup(dataset_id, table_name, backup_ts) flash(u"Succesfully restored backup.", 'success') return jsonify({'success': True}), 200 except Exception: flash(u"Failed to restore backup.", 'danger') return jsonify({'error': True}), 400
def chart(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) column_name = request.args.get('col-name') column_type = request.args.get('col-type') if column_type not in ['real', 'double', 'integer', 'timestamp']: return jsonify(numerical_transformer.chart_data_categorical(dataset_id, table_name, column_name)) else: return jsonify(numerical_transformer.chart_data_numerical(dataset_id, table_name, column_name)) except Exception: flash(u"Charts couldn't be produced.", 'danger') return jsonify({'error': True}), 400
def restore_backup(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) backup_ts = request.args.get('backup-timestamp') if backup_ts == "DEFAULT": return jsonify({'error': True}), 400 data_loader.restore_backup(dataset_id, table_name, backup_ts) flash(u"Succesfully restored backup.", 'success') return jsonify({'success': True}), 200 except Exception: flash(u"Failed to restore backup.", 'danger') return jsonify({'error': True}), 400
def rename_column(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) to_rename = request.args.get('col-name') new_name = request.args.get('new-name').replace('"', '') if not len(new_name) or new_name == to_rename: raise Exception('Column name is empty') data_loader.rename_column(dataset_id, table_name, to_rename, new_name) flash(u"Column has been renamed.", 'success') return jsonify({'success': True}), 200 except Exception: flash(u"Column couldn't be renamed.", 'danger') return jsonify({'error': True}), 400
def transform_date_or_time(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) column_name = request.args.get('col-name') operation_name = request.args.get('operation-name') date_time_transformer.transform(dataset_id, table_name, column_name, operation_name) flash(u"Date/Time transformation was successful.", 'success') return jsonify({'success': True}), 200 except Exception: flash(u"Date/Time transformation was unsuccessful.", 'danger') return jsonify({'error': True}), 400
def outliers(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) column_name = request.args.get('col-name') option = request.args.get('option') == 'less-than' value = float(request.args.get('value')) numerical_transformer.remove_outlier(dataset_id, table_name, column_name, value, option) except ValueError: flash(u"Outliers couldn't be removed.", 'danger') return jsonify({'error': True}), 400 flash(u"Outliers have been removed.", 'success') return jsonify({'success': True}), 200
def show_raw_data(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) start = request.args.get('start') length = request.args.get('length') order_column = int(request.args.get('order[0][column]')) order_direction = request.args.get('order[0][dir]') raw_table_name = "_raw_" + table_name ordering = (data_loader.get_column_names(dataset_id, raw_table_name)[order_column], order_direction) table = data_loader.get_table(dataset_id, raw_table_name, offset=start, limit=length, ordering=ordering) _table = data_loader.get_table(dataset_id, raw_table_name) return jsonify(draw=int(request.args.get('draw')), recordsTotal=len(_table.rows), recordsFiltered=len(_table.rows), data=table.rows)
def rename_column(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) to_rename = request.args.get('col-name') new_name = request.args.get('new-name').replace('"', '') if not len(new_name) or new_name == to_rename: raise Exception('Column name is empty') data_loader.rename_column(dataset_id, table_name, to_rename, new_name) flash(u"Column has been renamed.", 'success') return jsonify({'success': True}), 200 except Exception: flash(u"Column couldn't be renamed.", 'danger') return jsonify({'error': True}), 400
def show_raw_data(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) raw_table_name = "_raw_" + table_name raw_table_exists = data_loader.table_exists(raw_table_name, dataset_id) if not raw_table_exists: flash(u"Raw data does not exist.", 'warning') return redirect(url_for('data_service.get_table', dataset_id=dataset_id, table_name=table_name)) try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) table = data_loader.get_table(dataset_id, raw_table_name) title = "Raw data for " + table_name return render_template('data_service/raw-table-view.html', table=table, title=title) except Exception: flash(u"Raw data couldn't be shown.", 'danger') return redirect(url_for('data_service.get_table', dataset_id=dataset_id, table_name=table_name), code=303)
def impute_missing_data(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) column_name = request.args.get('col-name') function = request.args.get('function') if function == "CUSTOM": custom_value = request.args.get('custom-value') data_transformer.impute_missing_data(dataset_id, table_name, column_name, function, custom_value) else: data_transformer.impute_missing_data(dataset_id, table_name, column_name, function) flash(u"Missing data has been filled.", 'success') return jsonify({'success': True}), 200 except Exception: flash(u"Couldn't fill missing data.", 'danger') return jsonify({'error': True}), 400
def add_row(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) values = dict() columns = list() for key in request.args: if key.startswith('value-col'): col_name = key.split('-')[2] # Key is of the form "value-col-[name]" values[col_name] = request.args.get(key) columns.append(col_name) data_loader.insert_row(table_name, dataset_id, columns, values) flash(u"Rows have been added.", 'success') return jsonify({'success': True}), 200 except Exception: flash(u"Rows couldn't be added.", 'danger') return jsonify({'error': True}), 400
def get_history(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) start = request.args.get('start') length = request.args.get('length') search = request.args.get('search[value]') order_column = int(request.args.get('order[0][column]')) order_direction = request.args.get('order[0][dir]') ordering = (['date', 'action_desc'][order_column], order_direction) rows = _history.get_actions(dataset_id, table_name, offset=start, limit=length, ordering=ordering, search=search) _rows = _history.get_actions(dataset_id, table_name) return jsonify(draw=int(request.args.get('draw')), recordsTotal=len(_rows), recordsFiltered=len(_rows), data=rows)
def create_backup(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) if not data_loader.backup_available(dataset_id, table_name): flash(u"You have reached the limit amount of backups. You must remove a backup to create a new one.", 'danger') return jsonify({'error': True}), 400 note = request.args.get('backup-note') data_loader.make_backup(dataset_id, table_name, note) flash(u"Succesfully created backup.", 'success') return jsonify({'success': True}), 200 except Exception as e: if e.__str__() == "Backup limit reached.": flash(u"Can't create backup, limit reached.", 'danger') flash(u"Failed to create backup.", 'danger') return jsonify({'error': True}), 400
def get_table(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) try: table = data_loader.get_table(dataset_id, table_name) statistics = data_loader.get_statistics_for_all_columns(dataset_id, table_name, table.columns) time_date_transformations = date_time_transformer.get_transformations() backups = data_loader.get_backups(dataset_id, table_name) raw_table_name = "_raw_" + table_name raw_table_exists = data_loader.table_exists(raw_table_name,dataset_id) current_user.active_schema = dataset_id active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) return render_template('data_service/table-view.html', table=table, time_date_transformations=time_date_transformations, statistics=statistics, raw_table_exists=raw_table_exists, backups=backups) except Exception: flash(u"Table couldn't be shown.", 'danger') return redirect(url_for('data_service.get_dataset', dataset_id=dataset_id), code=303)
def create_backup(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) if not data_loader.backup_available(dataset_id, table_name): flash( u"You have reached the limit amount of backups. You must remove a backup to create a new one.", 'danger') return jsonify({'error': True}), 400 note = request.args.get('backup-note') data_loader.make_backup(dataset_id, table_name, note) flash(u"Succesfully created backup.", 'success') return jsonify({'success': True}), 200 except Exception as e: if e.__str__() == "Backup limit reached.": flash(u"Can't create backup, limit reached.", 'danger') flash(u"Failed to create backup.", 'danger') return jsonify({'error': True}), 400
def add_row(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) values = dict() columns = list() for key in request.args: if key.startswith('value-col'): col_name = key.split('-')[ 2] # Key is of the form "value-col-[name]" values[col_name] = request.args.get(key) columns.append(col_name) data_loader.insert_row(table_name, dataset_id, columns, values) flash(u"Rows have been added.", 'success') return jsonify({'success': True}), 200 except Exception: flash(u"Rows couldn't be added.", 'danger') return jsonify({'error': True}), 400
def chart(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) column_name = request.args.get('col-name') column_type = request.args.get('col-type') if column_type not in ['real', 'double', 'integer', 'timestamp']: return jsonify( numerical_transformer.chart_data_categorical( dataset_id, table_name, column_name)) else: return jsonify( numerical_transformer.chart_data_numerical( dataset_id, table_name, column_name)) except Exception: flash(u"Charts couldn't be produced.", 'danger') return jsonify({'error': True}), 400
def export_table(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) # Maybe later we might add other types, but for now this is hardcoded to export as CSV try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) filename = table_name + ".csv" path = UPLOAD_FOLDER + "/" + filename separator = request.args.get('separator') quote_char = request.args.get('quote_char') empty_char = request.args.get('empty_char') data_loader.export_table(path, dataset_id, table_name, separator=separator, quote_char=quote_char, empty_char=empty_char) flash(u"Data has been exported.", 'success') return send_from_directory(UPLOAD_FOLDER, filename, as_attachment=True) except Exception: flash(u"Data couldn't be exported.", 'danger') return jsonify({'error': True}), 400
def impute_missing_data(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) column_name = request.args.get('col-name') function = request.args.get('function') if function == "CUSTOM": custom_value = request.args.get('custom-value') data_transformer.impute_missing_data(dataset_id, table_name, column_name, function, custom_value) else: data_transformer.impute_missing_data(dataset_id, table_name, column_name, function) flash(u"Missing data has been filled.", 'success') return jsonify({'success': True}), 200 except Exception: flash(u"Couldn't fill missing data.", 'danger') return jsonify({'error': True}), 400
def find_and_replace(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) colomn = request.args.get('col-name') replacement_function = request.args.get('replacement-function') replacement_value = request.args.get('replacement-value') if replacement_function == "regex": regex = request.args.get('replacement-regex') data_transformer.find_and_replace_by_regex(dataset_id, table_name, colomn, regex, replacement_value) else: value_to_be_replaced = request.args.get('value-to-be-replaced') data_transformer.find_and_replace(dataset_id, table_name, colomn, value_to_be_replaced, replacement_value, replacement_function) flash(u"Find and replace was successful.", 'success') return jsonify({'success': True}), 200 except Exception: flash(u"Find and replace was unsuccessful.", 'danger') return jsonify({'error': True}), 400
def show_raw_data(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) start = request.args.get('start') length = request.args.get('length') order_column = int(request.args.get('order[0][column]')) order_direction = request.args.get('order[0][dir]') raw_table_name = "_raw_" + table_name ordering = (data_loader.get_column_names(dataset_id, raw_table_name)[order_column], order_direction) table = data_loader.get_table(dataset_id, raw_table_name, offset=start, limit=length, ordering=ordering) _table = data_loader.get_table(dataset_id, raw_table_name) return jsonify(draw=int(request.args.get('draw')), recordsTotal=len(_table.rows), recordsFiltered=len(_table.rows), data=table.rows)
def get_history(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) start = request.args.get('start') length = request.args.get('length') search = request.args.get('search[value]') order_column = int(request.args.get('order[0][column]')) order_direction = request.args.get('order[0][dir]') ordering = (['date', 'action_desc'][order_column], order_direction) rows = _history.get_actions(dataset_id, table_name, offset=start, limit=length, ordering=ordering, search=search) _rows = _history.get_actions(dataset_id, table_name) return jsonify(draw=int(request.args.get('draw')), recordsTotal=len(_rows), recordsFiltered=len(_rows), data=rows)
def discretize(dataset_id, table_name): if (data_loader.has_access(current_user.username, dataset_id)) is False: return abort(403) column_name = request.args.get('col-name') discretization = request.args.get('discretization') try: active_user_handler.make_user_active_in_table(dataset_id, table_name, current_user.username) if discretization == 'eq-width': num_intervals = int(request.args.get('num-intervals')) numerical_transformer.equal_width_interval(dataset_id, table_name, column_name, num_intervals) elif discretization == 'eq-freq': num_intervals = int(request.args.get('num-intervals')) numerical_transformer.equal_freq_interval(dataset_id, table_name, column_name, num_intervals) elif discretization == 'manual': intervals = [int(n) for n in request.args.get('intervals').strip().split(',')] numerical_transformer.manual_interval(dataset_id, table_name, column_name, intervals) else: flash(u"Data couldn't be discritized.", 'danger') return jsonify({'error': True}), 400 except ValueError: flash(u"Data couldn't be discritized.", 'danger') return jsonify({'error': True}), 400 flash(u"Data has been discritized.", 'success') return jsonify({'success': True}), 200