Skip to content

Commit 69ef7b7

Browse files
committed
Removed the eval from the code
... and changed it to make it work with the latest Netbox version.
1 parent ba3176f commit 69ef7b7

File tree

2 files changed

+20
-22
lines changed

2 files changed

+20
-22
lines changed

startup_scripts/000_users.py

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,25 +20,23 @@
2020
username = username,
2121
password = user_details.get('password', 0) or User.objects.make_random_password)
2222

23-
print("👤 Created user ",username)
23+
print("👤 Created user",username)
2424

2525
if user_details.get('api_token', 0):
2626
Token.objects.create(user=user, key=user_details['api_token'])
2727

2828
yaml_permissions = user_details.get('permissions', [])
29-
permission_object = user
29+
subject = user.user_permissions
3030
if yaml_permissions:
31-
permission_object.permissions.clear()
31+
subject.clear()
3232
for yaml_permission in yaml_permissions:
3333
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 + "'")
3637
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)
3940

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)

startup_scripts/010_groups.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,17 @@
2525
user.groups.add(group)
2626

2727
yaml_permissions = group_details.get('permissions', [])
28-
permission_object = group
28+
subject = group.permissions
2929
if yaml_permissions:
30-
permission_object.permissions.clear()
30+
subject.clear()
3131
for yaml_permission in yaml_permissions:
3232
if '*' in yaml_permission:
33-
permission_codename_function = 'codename__iregex'
34-
permission_codename = '^' + yaml_permission.replace('*','.*') + '$'
33+
permission_filter = '^' + yaml_permission.replace('*','.*') + '$'
34+
permissions = Permission.objects.filter(codename__iregex=permission_filter)
35+
print(" ⚿ Granting", permissions.count(), "permissions matching '" + yaml_permission + "'")
3536
else:
36-
permission_codename_function = 'codename'
37-
permission_codename = yaml_permission
38-
39-
# supports non-unique permission codenames
40-
for permission in eval('Permission.objects.filter(' + permission_codename_function + '=permission_codename)'):
41-
permission_object.permissions.add(permission)
37+
permissions = Permission.objects.filter(codename=yaml_permission)
38+
print(" ⚿ Granting permission", yaml_permission)
39+
40+
for permission in permissions:
41+
subject.add(permission)

0 commit comments

Comments
 (0)