1
+ # encoding: utf-8
2
+ # from datetime import datetime
3
+ import sys
4
+ import traceback
5
+ import logging
6
+ from sets import Set
7
+ from django .contrib .auth .models import User , Group , Permission
8
+ from django .core .management .base import BaseCommand
9
+
10
+
11
+ only_print_errors = True
12
+
13
+ LOG = logging .getLogger (__name__ )
14
+
15
+ class Command (BaseCommand ):
16
+ help = u'Fix user roles permissions'
17
+
18
+ #dba has all permissions in role_reguler
19
+ groups_roles = {'role_dba' : [u'view_host' , u'change_enginetype' , u'delete_planattribute' , u'add_enginetype' ,
20
+ u'physical.view_databaseinfra' , u'change_databaseinfra' , u'change_host' ,
21
+ u'delete_auditrequest' , u'change_auditchange' , u'add_instance' ,
22
+ u'can_manage_quarantine_databases' , u'add_planattribute' ,
23
+ u'delete_plan' , u'add_databaseinfra' , u'view_planattribute' ,
24
+ u'change_planattribute' , u'change_auditrequest' , u'delete_host' ,
25
+ u'add_host' , u'change_plan' , u'view_plan' , u'change_audit' , u'delete_audit' ,
26
+ u'add_audit' , u'change_instance' , u'view_engine' , u'change_engine' ,
27
+ u'delete_databaseinfra' , u'add_auditchange' , u'add_auditrequest' ,
28
+ u'view_enginetype' , u'delete_auditchange' , u'add_engine' ,
29
+ u'delete_instance' , u'delete_enginetype' , u'view_instance' , u'delete_engine' , u'add_plan' ],
30
+ 'role_regular' : [u'add_credential' , u'change_credential' , u'delete_credential' , u'view_credential' ,
31
+ u'add_database' , u'change_database' , u'delete_database' , u'view_database' ,
32
+ u'add_project' , u'change_project' , u'delete_project' , u'view_project' ]}
33
+
34
+ def handle (self , * args , ** options ):
35
+
36
+ #print "groups_roles: %s" % Command.groups_roles
37
+ role_dba = Group .objects .get_or_create (name = "role_dba" )[0 ]
38
+ role_regular = Group .objects .get_or_create (name = "role_regular" )[0 ]
39
+
40
+ #clean permissions
41
+ self .remove_permissions (group = role_dba )
42
+ self .remove_permissions (group = role_regular )
43
+
44
+ #role_regular
45
+ codenames = Command .groups_roles ['role_regular' ]
46
+ permissions_regular = Permission .objects .filter (codename__in = codenames )
47
+ self .add_permissions (group = role_regular , permissions = permissions_regular )
48
+
49
+ #role_dba
50
+ codenames = codenames + Command .groups_roles ['role_dba' ]
51
+ permissions_dba = Permission .objects .filter (codename__in = codenames )
52
+ self .add_permissions (group = role_dba , permissions = permissions_dba )
53
+
54
+ def remove_permissions (self , group = None ):
55
+ print "removing permissions for group %s" % group
56
+ [group .permissions .remove (permission ) for permission in group .permissions .all ()]
57
+ print "*" * 50
58
+
59
+ def add_permissions (self , group = None , permissions = None ):
60
+ print "adding permissions %s to group %s" % (permissions , group )
61
+ [group .permissions .add (permission ) for permission in permissions ]
62
+ print "*" * 50
0 commit comments