def urlpatterns(self): '''load and decorate urls from all modules then store it as cached property for less loading ''' if not hasattr(self, '_urlspatterns'): urlpatterns = [] # load all urls # support .urls file and urls_conf = 'elephantblog.urls' on default module # decorate all url patterns if is not explicitly excluded for mod in leonardo.modules: # TODO this not work if is_leonardo_module(mod): conf = get_conf_from_module(mod) if module_has_submodule(mod, 'urls'): urls_mod = import_module('.urls', mod.__name__) if hasattr(urls_mod, 'urlpatterns'): # if not public decorate all if conf['public']: urlpatterns += urls_mod.urlpatterns else: _decorate_urlconf(urls_mod.urlpatterns, require_auth) urlpatterns += urls_mod.urlpatterns # avoid circural dependency # TODO use our loaded modules instead this property from django.conf import settings for urls_conf, conf in six.iteritems(getattr(settings, 'MODULE_URLS', {})): # is public ? try: if conf['is_public']: urlpatterns += \ patterns('', url(r'', include(urls_conf)), ) else: _decorate_urlconf( url(r'', include(urls_conf)), require_auth) urlpatterns += patterns('', url(r'', include(urls_conf))) except Exception as e: raise Exception('raised %s during loading %s' % (str(e), urls_conf)) self._urlpatterns = urlpatterns return self._urlpatterns
def urlpatterns(self): '''load and decorate urls from all modules then store it as cached property for less loading ''' if not hasattr(self, '_urlspatterns'): urlpatterns = [] # load all urls # support .urls file and urls_conf = 'elephantblog.urls' on default module # decorate all url patterns if is not explicitly excluded for mod in leonardo.modules: # TODO this not work if is_leonardo_module(mod): conf = get_conf_from_module(mod) if module_has_submodule(mod, 'urls'): urls_mod = import_module('.urls', mod.__name__) if hasattr(urls_mod, 'urlpatterns'): # if not public decorate all if conf['public']: urlpatterns += urls_mod.urlpatterns else: _decorate_urlconf(urls_mod.urlpatterns, require_auth) urlpatterns += urls_mod.urlpatterns # avoid circural dependency # TODO use our loaded modules instead this property from django.conf import settings for urls_conf, conf in six.iteritems( getattr(settings, 'MODULE_URLS', {})): # is public ? try: if conf['is_public']: urlpatterns += \ patterns('', url(r'', include(urls_conf)), ) else: _decorate_urlconf(url(r'', include(urls_conf)), require_auth) urlpatterns += patterns('', url(r'', include(urls_conf))) except Exception as e: raise Exception('raised %s during loading %s' % (str(e), urls_conf)) self._urlpatterns = urlpatterns return self._urlpatterns
def check_versions(only_leonardo=False): '''returns dictionary of modules with versions to could be updated return:: { 'name': { 'old': '1.0.1', 'new': '1.0.2', 'type': wheel } } ''' global LEONARDO_ENV global GLOBAL_ENV if only_leonardo: if LEONARDO_ENV: return LEONARDO_ENV else: if GLOBAL_ENV: return GLOBAL_ENV listing = ListCommand() options, args = listing.parse_args([]) update = {} for dist, version, typ in listing.find_packages_latest_versions(options): if only_leonardo: pkg_names = [k for k in dist._get_metadata("top_level.txt")] for pkg_name in pkg_names: try: mod = import_module(pkg_name) except: pass else: if is_leonardo_module(mod): if version > dist.parsed_version: update.update({ dist.project_name: { 'old': dist.version, 'new': version, 'type': typ } }) else: if version > dist.parsed_version: update.update({ dist.project_name: { 'old': dist.version, 'new': version, 'type': typ } }) if only_leonardo: LEONARDO_ENV = update else: GLOBAL_ENV = update return update