Newer
Older
netbox-docker / startup_scripts / 280_custom_links.py
@Schylar Utley Schylar Utley on 8 Feb 2021 884 bytes Update startup_scripts/280_custom_links.py
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_str):
  try:
    return ContentType.objects.get(model=content_type_str).id
  except ContentType.DoesNotExist:
    print("⚠️ Error determining content type id for user declared var: {0}".format(content_type_str))

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 not None:
    custom_link = CustomLink(**link)
    if not CustomLink.objects.filter(name=custom_link.name):
      custom_link.save()
      print("🖥️  Created Custom Link {0}".format(custom_link.name))