|
20 | 20 | username = username,
|
21 | 21 | password = user_details.get('password', 0) or User.objects.make_random_password)
|
22 | 22 |
|
23 |
| - print("👤 Created user ",username) |
| 23 | + print("👤 Created user",username) |
24 | 24 |
|
25 | 25 | if user_details.get('api_token', 0):
|
26 | 26 | Token.objects.create(user=user, key=user_details['api_token'])
|
27 | 27 |
|
28 | 28 | yaml_permissions = user_details.get('permissions', [])
|
29 |
| - permission_object = user |
| 29 | + subject = user.user_permissions |
30 | 30 | if yaml_permissions:
|
31 |
| - permission_object.permissions.clear() |
| 31 | + subject.clear() |
32 | 32 | for yaml_permission in yaml_permissions:
|
33 | 33 | if '*' in yaml_permission:
|
34 |
| - permission_codename_function = 'codename__iregex' |
35 |
| - permission_codename = '^' + yaml_permission.replace('*','.*') + '$' |
| 34 | + permission_filter = '^' + yaml_permission.replace('*','.*') + '$' |
| 35 | + permissions = Permission.objects.filter(codename__iregex=permission_filter) |
| 36 | + print(" ⚿ Granting", permissions.count(), "permissions matching '" + yaml_permission + "'") |
36 | 37 | else:
|
37 |
| - permission_codename_function = 'codename' |
38 |
| - permission_codename = yaml_permission |
| 38 | + permissions = Permission.objects.filter(codename=yaml_permission) |
| 39 | + print(" ⚿ Granting permission", yaml_permission) |
39 | 40 |
|
40 |
| - # supports non-unique permission codenames |
41 |
| - for permission in eval('Permission.objects.filter(' + permission_codename_function + '=permission_codename)'): |
42 |
| - permission_object.permissions.add(permission) |
43 |
| - |
44 |
| - permission_object.save() |
| 41 | + for permission in permissions: |
| 42 | + subject.add(permission) |
0 commit comments