mirror of
https://github.com/netbox-community/netbox-docker.git
synced 2024-12-14 02:31:11 +01:00
50ade7bce1
This commit starts to remove some code redundancy from the startup scripts for easier maintenance.
38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
from django.contrib.auth.models import Permission, Group, User
|
|
from users.models import Token
|
|
|
|
from startup_script_utils import load_yaml
|
|
import sys
|
|
|
|
users = load_yaml('/opt/netbox/initializers/users.yml')
|
|
|
|
if users is None:
|
|
sys.exit()
|
|
|
|
for username, user_details in users.items():
|
|
if not User.objects.filter(username=username):
|
|
user = User.objects.create_user(
|
|
username = username,
|
|
password = user_details.get('password', 0) or User.objects.make_random_password)
|
|
|
|
print("👤 Created user",username)
|
|
|
|
if user_details.get('api_token', 0):
|
|
Token.objects.create(user=user, key=user_details['api_token'])
|
|
|
|
yaml_permissions = user_details.get('permissions', [])
|
|
if yaml_permissions:
|
|
subject = user.user_permissions
|
|
subject.clear()
|
|
for yaml_permission in yaml_permissions:
|
|
if '*' in yaml_permission:
|
|
permission_filter = '^' + yaml_permission.replace('*','.*') + '$'
|
|
permissions = Permission.objects.filter(codename__iregex=permission_filter)
|
|
print(" ⚿ Granting", permissions.count(), "permissions matching '" + yaml_permission + "'")
|
|
else:
|
|
permissions = Permission.objects.filter(codename=yaml_permission)
|
|
print(" ⚿ Granting permission", yaml_permission)
|
|
|
|
for permission in permissions:
|
|
subject.add(permission)
|