'Returns the columns that can be ordered
:param list_columns: optional list of columns name, if provided will
use this list only.'

def get_order_columns_list(self, list_columns=None):

    ret_lst = list()
    list_columns = (list_columns or self.get_columns_list())
    for col_name in list_columns:
        if hasattr(self.obj, col_name):
            if (not hasattr(getattr(self.obj, col_name), '__call__')):
                ret_lst.append(col_name)
        else:
            ret_lst.append(col_name)
    return ret_lst
