Newer
Older
netbox-docker / startup_scripts / 280_custom_links.py
@Christian Mäder Christian Mäder on 8 Feb 2021 866 bytes Adjust to repository standards
from django.contrib.contenttypes.models import ContentType
from extras.models import CustomLink
from startup_script_utils import load_yaml
import sys


custom_links = load_yaml('/opt/netbox/initializers/custom_links.yml')

if custom_links is None:
  sys.exit()


def get_content_type_id(content_type):
  try:
    return ContentType.objects.get(model=content_type).id
  except ContentType.DoesNotExist:
    pass


for link in custom_links:
  content_type = link.pop('content_type')
  link['content_type_id'] = get_content_type_id(content_type)
  if link['content_type_id'] is None:
    print("⚠️ Unable to create Custom Link '{0}': The content_type '{1}' is unknown".format(link.name, content_type))
    continue

  custom_link, created = CustomLink.objects.get_or_create(**link)
  if created:
    print("🔗 Created Custom Link '{0}'".format(custom_link.name))