blob: c8f83804702e93f67c491085c114c219961f509e [file] [log] [blame]
mblighe8819cd2008-02-15 16:48:40 +00001# use some undocumented Django tricks to execute custom logic after syncdb
2
3from django.dispatch import dispatcher
4from django.db.models import signals
5import frontend.afe.models
6from django.contrib import auth
7
8BASIC_ADMIN = 'Basic admin'
9
10def create_admin_group(app, created_models, verbosity, **kwargs):
11 """\
12 Create a basic admin group with permissions for managing basic autotest
13 objects.
14 """
15 admin_group, created = auth.models.Group.objects.get_or_create(
16 name=BASIC_ADMIN)
17 admin_group.save() # must save before adding permissions
18 PermissionModel = auth.models.Permission
19 have_permissions = list(admin_group.permissions.all())
20 for model_name in ('host', 'label', 'test', 'acl_group'):
21 for permission_type in ('add', 'change', 'delete'):
22 codename = permission_type + '_' + model_name
23 permissions = list(PermissionModel.objects.filter(
24 codename=codename))
25 if len(permissions) == 0:
26 print ' No permission ' + codename
27 continue
28 for permission in permissions:
29 if permission not in have_permissions:
30 print ' Adding permission ' + codename
31 admin_group.permissions.add(permission)
32 if created:
33 print 'Created group "%s"' % BASIC_ADMIN
34 else:
35 print 'Group "%s" already exists' % BASIC_ADMIN
36
37
38dispatcher.connect(create_admin_group, sender=frontend.afe.models,
39 signal=signals.post_syncdb)