Skip to content

Instantly share code, notes, and snippets.

@carlosrberto
Created April 3, 2012 12:19
Show Gist options
  • Save carlosrberto/2291532 to your computer and use it in GitHub Desktop.
Save carlosrberto/2291532 to your computer and use it in GitHub Desktop.
from django.conf import settings
from django.contrib import admin
from django.utils.safestring import mark_safe
from django.utils.text import capfirst
site = admin.site
def applist(request):
app_dict = {}
user = request.user
for model, model_admin in site._registry.items():
app_label = model._meta.app_label
has_module_perms = user.has_module_perms(app_label)
if has_module_perms:
perms = model_admin.get_model_perms(request)
if True in perms.values():
model_dict = {
'name': capfirst(model._meta.verbose_name_plural),
'admin_url': mark_safe('/admin/%s/%s/' % (app_label, model.__name__.lower())),
'perms': perms,
}
if app_label in app_dict:
app_dict[app_label]['models'].append(model_dict)
else:
app_dict[app_label] = {
'name': app_label.title(),
'app_url': app_label + '/',
'has_module_perms': has_module_perms,
'models': [model_dict],
}
app_list = app_dict.values()
app_list.sort(lambda x, y: cmp(x['name'], y['name']))
return {'adm_app_list': app_list}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment