def post(self, request, table_name): db_config = DBConfig.objects.get(id=request.POST['database_id']) table_schema = request.POST['table_schema'] table_extractor = TableExtractor(db_config, table_name, table_schema) table_columns = table_extractor.get_columns(special_columns=False, limit=3) data = table_extractor.get_data(table_columns, 5) if len(table_extractor.get_special_columns()) > 1: has_secondary = True else: has_secondary = False columns = list() for item in data[0]: column = {'name': item, 'verbose_name': util.verbose_name(item)} columns.append(column) PARAMETERS = { 'database': db_config, 'table_name': table_name, 'verbose_table_name': util.verbose_name(table_name), 'table_schema': table_schema, 'primary_key': table_extractor.get_primary_key_name(), 'columns': columns, 'data': data, 'has_secondary': has_secondary, } return render(request, self.template_name, PARAMETERS)
def post(self, request, table_name): db_config = DBConfig.objects.get(id=request.POST['database_id']) table_schema = request.POST['table_schema'] table_extractor = TableExtractor(db_config, table_name, table_schema) fk_tables = table_extractor.get_special_columns(only_fk=True) tables = list() for fk_table in fk_tables: temp_table_extractor = TableExtractor(db_config, fk_table.get('table_name'), fk_table.get('table_schema')) table_columns = temp_table_extractor.get_columns( special_columns=False) data = temp_table_extractor.get_data(table_columns, 5) columns = list() for table_column in table_columns: column = { 'name': table_column.get('column_name'), 'verbose_name': util.verbose_name(table_column.get('column_name')) } columns.append(column) table = { 'table_name': fk_table.get('table_name'), 'table_name_verbose': util.verbose_name(fk_table.get('table_name')), 'table_schema': fk_table.get('table_schema'), 'table_primary_key': temp_table_extractor.get_primary_key_name(), 'table_fk_column': fk_table.get('column_name'), 'columns': columns, 'data': data, } tables.append(table) PARAMETERS = { 'database': db_config, 'table_name': table_name, 'table_schema': table_schema, 'tables': tables, 'primary_key': request.POST['primary_key'], 'columns': util.get_items_post(request.POST, 'column_'), } return render(request, self.template_name, PARAMETERS)
def get(self, request, resource_id): resource = Resource.objects.get(id=resource_id) try: data_dictionary = ResourceDataDictionary.objects.get( resource=resource) except Exception: data_dictionary = None data = DBColumn.objects.filter(db_table=resource.table) columns = list() for item in data: column = { 'id': item.id, 'name': item.name, 'dd_description': item.dd_description, 'verbose_name': util.verbose_name(item.name) } columns.append(column) for temp_table in DBTable.objects.filter(db_table=resource.table): data_fk = DBColumn.objects.filter(db_table=temp_table) for item in data_fk: column = { 'id': item.id, 'name': item.name, 'dd_description': item.dd_description, 'verbose_name': util.verbose_name(temp_table.name) + " - " + util.verbose_name(item.name) } columns.append(column) PARAMETERS = { 'resource': resource, 'data_dictionary': data_dictionary, 'columns': columns, } return render(request, self.template_name, PARAMETERS)
def post(self, request): search = util_search.create_search_list(request.POST['search']) db_config = DBConfig.objects.get(id=request.POST['database_id']) user_databases = self.get_user_databases(request.user) user_schemas = DBSchema.objects.filter( userschema__user_id=request.user.id) extractor = DatabaseExtractor(db_config) tables = extractor.get_tables_by_words(search, user_schemas) for table in tables: table_extractor = TableExtractor(db_config, table.get('table_name'), table.get('table_schema')) table['verbose_name'] = util.verbose_name(table.get('table_name')) table_columns = table_extractor.get_columns(special_columns=False, limit=3) verbose_columns = [] for column in table_columns: verbose_columns.append( util.verbose_name(column.get('column_name'))) table['columns'] = verbose_columns table_data_sample = table_extractor.get_data(table_columns, 2) table['sample'] = table_data_sample PARAMETERS = { 'search_word': request.POST['search'], 'search': search, 'user_databases': user_databases, 'database': db_config, 'tables': tables, } return render( request, self.template_name, PARAMETERS, )