def register(self, app, root_patterns=None, group_patterns=None, api_patterns=None, url_app_name_override=None): with self.lock: try: app_name = app_registry.get_name(app) except KeyError: raise ImproperlyConfigured('You need to register the app "%s" ' 'before you can use it to build URLs.' % app) if app in self._apps: return self._apps.add(app) # group patterns are added for each group model, using the url key of the group model, # setting to the group base url of that model, # and modifying the URL pattern name with the registered group model prefix! if group_patterns: url_app_name = url_app_name_override or app_name patterns_copy = [] for url_key in group_model_registry: url_base = r'^%s/(?P<group>[^/]+)/%s/' % (url_key, url_app_name) for patt in group_patterns: patterns_copy.append(url(url_base+patt.pattern._regex[1:], patt.callback, patt.default_args, name=group_model_registry.get_url_name_prefix(url_key, '') + patt.name)) self._urlpatterns += [ url('', include((patterns_copy, app_name), namespace=app_name)), ] if root_patterns: self._urlpatterns += [ url(r'', include(root_patterns)) ] if api_patterns: self._api_urlpatterns += [ url(r'^', include((api_patterns, app_name), namespace=app_name)), ]
def register(self, app, root_patterns=None, group_patterns=None, api_patterns=None): with self.lock: try: app_name = app_registry.get_name(app) except KeyError: raise ImproperlyConfigured( 'You need to register the app "%s" ' 'before you can use it to build URLs.' % app) if app in self._apps: return self._apps.add(app) if root_patterns: self._urlpatterns += patterns( '', url( r'', include(root_patterns, namespace=app_name, app_name=app))) if group_patterns: url_app_name = app_name url_base = r'^group/(?P<group>[^/]+)/%s/' % url_app_name self._urlpatterns += patterns( '', url( url_base, include(group_patterns, namespace=app_name, app_name=app)), ) if api_patterns: self._api_urlpatterns += patterns( '', url( r'^', include(api_patterns, namespace=app_name, app_name=app)), )
def get_context_data(self, **kwargs): context = super(GroupObjectCountMixin, self).get_context_data(**kwargs) object_counts = {} for app in app_registry: app_name = app_registry.get_name(app) if self.group.is_app_deactivated(app): continue if app in self.app_object_count_mappings: model = resolve_class(self.app_object_count_mappings[app]) # only for counting the objects, we use a fake superuser, so we get the actual # counts of the contents, and not the visible ones for current user fake_admin = AnonymousUser() fake_admin.is_superuser = True object_counts[app_name] = model.get_current( self.group, fake_admin).count() context.update({ 'object_counts': object_counts, }) return context