Here is how I would do it.
I'll just show a workflow for doing it with constraints and blender operators.
I assume you will manage to code the same process in python?
I add an empty which is the point you want to track. I had a child cone for consistency with your image ;-).
I add another empty with a set of contraints :
And then I add a constraint to the plane's object :
It is over, the plane is like you want.
Now you can either leave it as is. You can move the first empty, and the plane will follow it.
Or, you can select your plane, and "Apply visual transform". And then you can delete everything you don't want anymore.
Now you can do these steps in python ! I guess it is slower than computing directly the good rotation with some trigonometry, but it has the avantage og being simple, plus you can still move your point at the end !