|
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 | | - user_permissions = user_details.get('permissions', []) |
29 | | - if user_permissions: |
30 | | - user.user_permissions.clear() |
31 | | - for permission_codename in user_details.get('permissions', []): |
32 | | - for permission in Permission.objects.filter(codename=permission_codename): |
33 | | - user.user_permissions.add(permission) |
34 | | - user.save() |
| 28 | + yaml_permissions = user_details.get('permissions', []) |
| 29 | + if yaml_permissions: |
| 30 | + subject = user.user_permissions |
| 31 | + subject.clear() |
| 32 | + for yaml_permission in yaml_permissions: |
| 33 | + if '*' in yaml_permission: |
| 34 | + permission_filter = '^' + yaml_permission.replace('*','.*') + '$' |
| 35 | + permissions = Permission.objects.filter(codename__iregex=permission_filter) |
| 36 | + print(" ⚿ Granting", permissions.count(), "permissions matching '" + yaml_permission + "'") |
| 37 | + else: |
| 38 | + permissions = Permission.objects.filter(codename=yaml_permission) |
| 39 | + print(" ⚿ Granting permission", yaml_permission) |
| 40 | + |
| 41 | + for permission in permissions: |
| 42 | + subject.add(permission) |
0 commit comments