|
|
@@ -4,6 +4,7 @@ from copy import deepcopy
|
|
|
|
|
|
from django.contrib import messages
|
|
|
from django.contrib.contenttypes.fields import GenericRel
|
|
|
+from django.contrib.contenttypes.models import ContentType
|
|
|
from django.core.exceptions import FieldDoesNotExist, ObjectDoesNotExist, ValidationError
|
|
|
from django.db import transaction, IntegrityError
|
|
|
from django.db.models import ManyToManyField, ProtectedError, RestrictedError
|
|
|
@@ -17,7 +18,8 @@ from django.utils.translation import gettext as _
|
|
|
from django_tables2.export import TableExport
|
|
|
|
|
|
from core.models import ObjectType
|
|
|
-from extras.models import ExportTemplate
|
|
|
+from extras.choices import CustomFieldUIEditableChoices
|
|
|
+from extras.models import CustomField, ExportTemplate
|
|
|
from extras.signals import clear_events
|
|
|
from utilities.error_handlers import handle_protectederror
|
|
|
from utilities.exceptions import AbortRequest, AbortTransaction, PermissionsViolation
|
|
|
@@ -415,6 +417,17 @@ class BulkImportView(GetReturnURLMixin, BaseMultiObjectView):
|
|
|
if instance.pk and hasattr(instance, 'snapshot'):
|
|
|
instance.snapshot()
|
|
|
|
|
|
+ else:
|
|
|
+ # For newly created objects, apply any default custom field values
|
|
|
+ custom_fields = CustomField.objects.filter(
|
|
|
+ object_types=ContentType.objects.get_for_model(self.queryset.model),
|
|
|
+ ui_editable=CustomFieldUIEditableChoices.YES
|
|
|
+ )
|
|
|
+ for cf in custom_fields:
|
|
|
+ field_name = f'cf_{cf.name}'
|
|
|
+ if field_name not in record:
|
|
|
+ record[field_name] = cf.default
|
|
|
+
|
|
|
# Instantiate the model form for the object
|
|
|
model_form_kwargs = {
|
|
|
'data': record,
|