source: asadb/util/migrations.py

space-accessstablestagetest-hooks
Last change on this file was f73118b, checked in by Alex Dehnert <adehnert@…>, 14 years ago

Library to make groups or permissions in migrations

  • Property mode set to 100644
File size: 2.6 KB
Line 
1import sys
2
3def migrate_perms_forwards(orm, perms, ):
4    for app_name, model_name, codename, verbose_name in perms:
5        ct, created = orm['contenttypes.ContentType'].objects.get_or_create(model=model_name, app_label=app_name) # model must be lowercase!
6        perm, created = orm['auth.permission'].objects.get_or_create(
7            content_type=ct,
8            codename=codename,
9            defaults={'name':verbose_name},
10        )
11
12def migrate_perms_backwards(orm, perms, ):
13    for app_name, model_name, codename, verbose_name in perms:
14        try:
15            ct = orm['contenttypes.ContentType'].objects.get(model=model_name, app_label=app_name) # model must be lowercase!
16            orm['auth.permission'].objects.get(
17                content_type=ct,
18                codename=codename,
19            ).delete()
20        except orm['contenttypes.ContentType'].DoesNotExist:
21            print >>sys.stderr, "ContentType %s.%s does not exist while backwards migrating adding the %s permission on it." % (app_name, model_name, codename, )
22        except orm['auth.permission'].DoesNotExist:
23            print >>sys.stderr, "Permission %s does not exist on content type %s (%s.%s) while backwards migrating its addition." % (codename, ct, app_name, model_name, )
24           
25
26def migrate_groups_forwards(orm, groups, ):
27    for group_name, perms in groups:
28        group_obj, created = orm['auth.Group'].objects.get_or_create(name=group_name)
29        for app_name, model_name, codename in perms:
30            try:
31                ct = orm['contenttypes.ContentType'].objects.get(model=model_name, app_label=app_name)
32                group_obj.permissions.add(orm['auth.permission'].objects.get(
33                    content_type=ct,
34                    codename=codename,
35                ))
36            except orm['contenttypes.ContentType'].DoesNotExist:
37                print >>sys.stderr, "ContentType %s.%s does not exist while adding %s permission to %s group." % (app_name, model_name, codename, group_name, )
38                raise
39            except orm['auth.permission'].DoesNotExist:
40                print >>sys.stderr, "Permission %s does not exist on content type %s (%s.%s) while adding it to group %s." % (codename, ct, app_name, model_name, group_name, )
41                raise
42        group_obj.save()
43
44def migrate_groups_backwards(orm, groups, ):
45    for group_name, perms in groups:
46        try:
47            orm['auth.Group'].objects.get(name=group_name).delete()
48        except orm['auth.Group'].DoesNotExist:
49            print >>sys.stderr, "Group %s does not exist while backwards migrating its addition." % (group_name, )
Note: See TracBrowser for help on using the repository browser.