Fix setting CF data if CF object is missing
This commit is contained in:
parent
91ab616cc5
commit
81d9e4f560
22 changed files with 73 additions and 44 deletions
|
@ -1,9 +1,38 @@
|
|||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.core.exceptions import ObjectDoesNotExist
|
||||
from extras.models import CustomField
|
||||
|
||||
|
||||
def set_custom_fields_values(entity, custom_field_data):
|
||||
if not custom_field_data:
|
||||
return
|
||||
|
||||
entity.custom_field_data = custom_field_data
|
||||
return entity.save()
|
||||
missing_cfs = []
|
||||
save = False
|
||||
for key, value in custom_field_data.items():
|
||||
try:
|
||||
cf = CustomField.objects.get(name=key)
|
||||
except ObjectDoesNotExist:
|
||||
missing_cfs.append(key)
|
||||
else:
|
||||
ct = ContentType.objects.get_for_model(entity)
|
||||
if ct not in cf.content_types.all():
|
||||
print(
|
||||
f"⚠️ Custom field {key} is not enabled for {entity}'s model!"
|
||||
"Please check the 'on_objects' for that custom field in custom_fields.yml"
|
||||
)
|
||||
elif key not in entity.custom_field_data:
|
||||
entity.custom_field_data[key] = value
|
||||
save = True
|
||||
|
||||
if missing_cfs:
|
||||
raise Exception(
|
||||
f"⚠️ Custom field(s) '{missing_cfs}' requested for {entity} but not found in Netbox!"
|
||||
"Please chceck the custom_fields.yml"
|
||||
)
|
||||
|
||||
if save:
|
||||
entity.save()
|
||||
|
||||
|
||||
def pop_custom_fields(params):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue