| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- from django.conf.urls import patterns
-
-
- class Application(object):
- name = None
-
- def __init__(self, app_name=None, **kwargs):
- self.app_name = app_name
- # Set all kwargs as object attributes
- for key, value in kwargs.iteritems():
- setattr(self, key, value)
-
- def get_urls(self):
- """
- Return the url patterns for this app, MUST be implemented in the
- subclass
- """
- return patterns('')
-
- def post_process_urls(self, urlpatterns):
- """
- Customise URL patterns.
-
- By default, this only allows custom decorators to be specified, but you
- could override this method to do anything you want.
- """
- for pattern in urlpatterns:
- if hasattr(pattern, 'url_patterns'):
- self.post_process_urls(pattern.url_patterns)
- if not hasattr(pattern, '_callback'):
- continue
- # Look for a custom decorator
- decorator = self.get_url_decorator(pattern)
- if decorator:
- # Nasty way of modifying a RegexURLPattern
- pattern._callback = decorator(pattern._callback)
- return urlpatterns
-
- def get_url_decorator(self, url_name):
- return None
-
- @property
- def urls(self):
- # We set the application and instance namespace here
- return self.get_urls(), self.app_name, self.name
|