def is_query_resultset_updatable(conn, sql_path): """ This function is used to check whether the last successful query produced editable results. Args: conn: Connection object. sql_path: the path to the sql templates primary_keys.sql & columns.sql. """ columns_info = conn.get_column_info() if columns_info is None or len(columns_info) < 1: return return_not_updatable() table_oid = _check_single_table(columns_info) if table_oid is None: return return_not_updatable() if conn.connected(): # Get all the table columns table_columns = _get_table_columns(conn=conn, table_oid=table_oid, sql_path=sql_path) # Editable column: A column selected directly from a table, that is # neither renamed nor is a duplicate of another selected column _check_editable_columns(table_columns=table_columns, results_columns=columns_info) primary_keys, pk_names = \ _check_primary_keys(conn=conn, columns_info=columns_info, table_oid=table_oid, sql_path=sql_path) has_oids = _check_oids(conn=conn, columns_info=columns_info, table_oid=table_oid, sql_path=sql_path) is_resultset_updatable = has_oids or (primary_keys is not None and len(primary_keys) != 0) if is_resultset_updatable: column_types = get_columns_types(columns_info=columns_info, table_oid=table_oid, conn=conn, has_oids=has_oids, is_query_tool=True) return True, has_oids, primary_keys, \ pk_names, table_oid, column_types else: _set_all_columns_not_editable(columns_info=columns_info) return return_not_updatable() else: raise Exception( gettext('Not connected to server or connection with the ' 'server has been closed.'))
def get_columns_types(self, conn): columns_info = conn.get_column_info() has_oids = self.has_oids() table_oid = self.obj_id return get_columns_types(conn=conn, columns_info=columns_info, has_oids=has_oids, table_oid=table_oid, is_query_tool=False)