app/django/core/management/commands/adminindex.py
changeset 54 03e267d67478
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/django/core/management/commands/adminindex.py	Fri Jul 18 18:22:23 2008 +0000
@@ -0,0 +1,34 @@
+from django.core.management.base import AppCommand
+from django.utils.encoding import force_unicode
+from django.utils.text import capfirst
+
+MODULE_TEMPLATE = '''    {%% if perms.%(app)s.%(addperm)s or perms.%(app)s.%(changeperm)s %%}
+    <tr>
+        <th>{%% if perms.%(app)s.%(changeperm)s %%}<a href="%(app)s/%(mod)s/">{%% endif %%}%(name)s{%% if perms.%(app)s.%(changeperm)s %%}</a>{%% endif %%}</th>
+        <td class="x50">{%% if perms.%(app)s.%(addperm)s %%}<a href="%(app)s/%(mod)s/add/" class="addlink">{%% endif %%}Add{%% if perms.%(app)s.%(addperm)s %%}</a>{%% endif %%}</td>
+        <td class="x75">{%% if perms.%(app)s.%(changeperm)s %%}<a href="%(app)s/%(mod)s/" class="changelink">{%% endif %%}Change{%% if perms.%(app)s.%(changeperm)s %%}</a>{%% endif %%}</td>
+    </tr>
+    {%% endif %%}'''
+
+class Command(AppCommand):
+    help = 'Prints the admin-index template snippet for the given app name(s).'
+
+    def handle_app(self, app, **options):
+        from django.db.models import get_models
+        output = []
+        app_models = get_models(app)
+        app_label = app_models[0]._meta.app_label
+        output.append('{%% if perms.%s %%}' % app_label)
+        output.append('<div class="module"><h2>%s</h2><table>' % app_label.title())
+        for model in app_models:
+            if model._meta.admin:
+                output.append(MODULE_TEMPLATE % {
+                    'app': app_label,
+                    'mod': model._meta.module_name,
+                    'name': force_unicode(capfirst(model._meta.verbose_name_plural)),
+                    'addperm': model._meta.get_add_permission(),
+                    'changeperm': model._meta.get_change_permission(),
+                })
+        output.append('</table></div>')
+        output.append('{% endif %}')
+        return '\n'.join(output)