def maketable(request): table_list = FileTable.DataTableList(CUR_DB) if request.method == 'POST': tablename = request.POST['tablename'] table_list.remove(tablename) table_list.insert(0, tablename) # Make sure it's the default # Create a form instance and populate it with data from the request: display_form = TableForm(request.POST) # check whether it's valid: if display_form.is_valid(): numrows = GetFieldFromForm(display_form, 'numrows') lastrow = GetFieldFromForm(display_form, 'lastrow') dba = DBAccess() if not dba.IsTablePresent(tablename): raise TableviewUserError("Cannot find table %s" % tablename) headers = dba.GetSchema(tablename) sql_str = 'SELECT * FROM %s' % tablename all_rows, _ = dba.ExecuteQuery(sql_str) if 'Next' in request.POST: firstrow = lastrow + 1 else: firstrow = lastrow - 2*numrows lastrow = firstrow + numrows - 1 rows = all_rows[firstrow-1:lastrow-1] new_display_form = TableForm(initial={ 'numrows': numrows, 'lastrow': lastrow}) ctx_dict = {'rows':rows, 'display_form': new_display_form, 'tablename': tablename, 'headers': headers, 'table_list': table_list, } return render_to_response('table_view.html', ctx_dict, context_instance=RequestContext(request)) else: pass # if a GET (or any other method) we'll create a blank form else: display_form = TableForm() return render(request, 'table_request.html', {'display_form': display_form, 'table_list': table_list})
def query(request): dba = DBAccess() if request.method == 'POST': # Create a form instance and populate it with data from the request: query_form = QueryForm(request.POST) # check whether it's valid: if query_form.is_valid(): query_string = GetFieldFromForm(query_form, 'query_string') if len(query_string) > 0: rows,_ = dba.ExecuteQuery(query_string) headers = dba.GetSchemaFromSelect(query_string) if len(rows[0]) != len(headers): raise TableviewInternalError("header length doesn't match row length") else: # Used in test rows = [] headers = [] ctx_dict = {'rows':rows, 'query_string': query_string, 'headers': headers, } return render_to_response('query_result.html', ctx_dict, context_instance=RequestContext(request)) else: pass # if a GET (or any other method) we'll create a blank form # Extend by including the schemas with types else: query_form = QueryForm() table_list = FileTable.DataTableList(CUR_DB) rows = [] dba = DBAccess() for table in table_list: row = [table, ", ".join(dba.GetSchema(table))] rows.append(row) return render(request, 'query_request.html', {'rows': rows, 'query_form': query_form, })