summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--devel/management/commands/update_types_permissions.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/devel/management/commands/update_types_permissions.py b/devel/management/commands/update_types_permissions.py
new file mode 100644
index 0000000..bbe8dc4
--- /dev/null
+++ b/devel/management/commands/update_types_permissions.py
@@ -0,0 +1,25 @@
+from django.core.management.base import BaseCommand
+from django.db.models import get_models, get_app
+from django.contrib.auth.management import create_permissions
+from django.contrib.contenttypes.management import update_contenttypes
+
+
+class Command(BaseCommand):
+ args = '<app app ...>'
+ help = 'reloads permissions for specified apps, or all apps if no args are specified'
+
+ def handle(self, *args, **options):
+ if not args:
+ apps = []
+ for model in get_models():
+ apps.append(get_app(model._meta.app_label))
+ else:
+ apps = []
+ for arg in args:
+ apps.append(get_app(arg))
+
+ for app in apps:
+ update_contenttypes(app, None, options.get('verbosity', 2), interactive=True)
+ create_permissions(app, get_models(), options.get('verbosity', 0))
+
+# vim: set ts=4 sw=4 et: