Question

I'm designing something similar to Admin.Autodiscover() of Django.

The first hurdle that I'm facing is getting the path of the file from which admin.autodiscover() is called, so that I can traverse the apps/libraries in that folder and figure out which models should be kept in admin.

How do I do that?

Was it helpful?

Solution

The Zen of Python says: Explicit is better than implicit.

Why not call it like this: your.autodiscover(__file__), or even your.autodiscover(dirname(__file__)). That way, someone who reads your code doesn't have to look for the magic in your autodiscover function, or look it up in the documentation.

OTHER TIPS

Using traceback.

Here's one way I found to do that:

import traceback
def get_caller_filename():
   # last element ([-1]) is me, the one before ([-2]) is my caller. The first element in caller's data is the filename
   return traceback.extract_stack()[-2][0]
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top