Source code for dk.findapps

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# FIXME: this module doesn't belong in dk ).


"""Module for finding all apps folders.
"""

import os
from dk.utils import root as dkroot


[docs]def is_appfolder(path): """Is the ``path`` an app folder? """ if os.path.isdir(path): if os.path.exists(os.path.join(path, 'urls.py')): return True if os.path.exists(os.path.join(path, 'models.py')): return True if os.path.exists(os.path.join(path, 'models')): return True return False
[docs]def appfolders(): """Find all django app folders, yield absolute paths to the folders. """ for dirname in os.listdir(dkroot()): if dirname in ('.svn', 'settings'): continue folder_path = os.path.join(dkroot(), dirname) if is_appfolder(folder_path): yield folder_path
[docs]def appfolder(appname): """Return app folder for ``appname``. """ folder_path = os.path.join(dkroot(), appname) if is_appfolder(folder_path): return folder_path raise ValueError("No such app: %r." % appname)
[docs]def appname(folder): """Return the app name for the (app)folder). """ _, app = os.path.split(folder) return app
[docs]def appnames(): """Find the name of all the apps. """ for folder in appfolders(): _, app = os.path.split(folder) yield app
if __name__ == "__main__": import sys if len(sys.argv) != 2: print "Usage: %s appfolders | appnames" % __file__ sys.exit(1) for item in globals()[sys.argv[1]](): print item