Algorithm to find all legal moves in Reversi game
Iteration
This:
for row_idx, row in enumerate(board):
    for column_idx, column in enumerate(board):
        if board[row_idx][column_idx] == -1:

is effectively incorrect. Is your board in row-major or column-major order? Whichever is true, you cannot iterate over the outer index of the board and get both a row and a column. What you likely meant instead is:
for row_idx, row in enumerate(board):
    for column_idx, cell in enumerate(row):
        if cell == -1:

Another problematic iteration is this:
i2, j2 = i, j
for _ in range(8):
    # ...
    i2 += i
    j2 += j

should simply be
for delta in range(1, 8):
    # ... use i*delta instead of i2
    # ... use j*delta instead of j2

Combined range checking
if row_idx + i &lt; 0 or row_idx + 1 &gt; (len(board) - 1) or column_idx + j &lt; 0 or column_idx + j &gt; (len(board) - 1):
                

should be
if not (0 &lt;= row_idx + i &lt; len(board)) or not (0 &lt;= column_idx &lt; len(board)):