MCPcopy
hub / github.com/django/django / construct_change_message

Function construct_change_message

django/contrib/admin/utils.py:562–617  ·  view source on GitHub ↗

Construct a JSON structure describing changes from a changed object. Translations are deactivated so that strings are stored untranslated. Translation happens later on LogEntry access.

(form, formsets, add)

Source from the content-addressed store, hash-verified

560
561
562def construct_change_message(form, formsets, add):
563 """
564 Construct a JSON structure describing changes from a changed object.
565 Translations are deactivated so that strings are stored untranslated.
566 Translation happens later on LogEntry access.
567 """
568 change_message = []
569 if add:
570 change_message.append({"added": {}})
571 # Evaluating `form.changed_data` prior to disabling translations is
572 # required to avoid fields affected by localization from being included
573 # incorrectly, e.g. where date formats differ such as MM/DD/YYYY vs
574 # DD/MM/YYYY.
575 elif changed_data := form.changed_data:
576 with translation_override(None):
577 # Deactivate translations while fetching verbose_name for form
578 # field labels and using `field_name`, if verbose_name is not
579 # provided. Translations will happen later on LogEntry access.
580 changed_field_labels = _get_changed_field_labels_from_form(
581 form, changed_data
582 )
583 change_message.append({"changed": {"fields": changed_field_labels}})
584 if formsets:
585 with translation_override(None):
586 for formset in formsets:
587 for added_object in formset.new_objects:
588 change_message.append(
589 {
590 "added": {
591 "name": str(added_object._meta.verbose_name),
592 "object": str(added_object),
593 }
594 }
595 )
596 for changed_object, changed_fields in formset.changed_objects:
597 change_message.append(
598 {
599 "changed": {
600 "name": str(changed_object._meta.verbose_name),
601 "object": str(changed_object),
602 "fields": _get_changed_field_labels_from_form(
603 formset.forms[0], changed_fields
604 ),
605 }
606 }
607 )
608 for deleted_object in formset.deleted_objects:
609 change_message.append(
610 {
611 "deleted": {
612 "name": str(deleted_object._meta.verbose_name),
613 "object": str(deleted_object),
614 }
615 }
616 )
617 return change_message
618
619

Callers 1

Calls 2

appendMethod · 0.45

Tested by

no test coverage detected