MCPcopy Index your code
hub / github.com/MongoEngine/mongoengine / _clear_changed_fields

Method _clear_changed_fields

mongoengine/base/document.py:548–584  ·  view source on GitHub ↗

Using _get_changed_fields iterate and remove any fields that are marked as changed.

(self)

Source from the content-addressed store, hash-verified

546 remove(field)
547
548 def _clear_changed_fields(self):
549 """Using _get_changed_fields iterate and remove any fields that
550 are marked as changed.
551 """
552 ReferenceField = _import_class("ReferenceField")
553 GenericReferenceField = _import_class("GenericReferenceField")
554
555 for changed in self._get_changed_fields():
556 parts = changed.split(".")
557 data = self
558 for part in parts:
559 if isinstance(data, list):
560 try:
561 data = data[int(part)]
562 except IndexError:
563 data = None
564 elif isinstance(data, dict):
565 data = data.get(part, None)
566 else:
567 field_name = data._reverse_db_field_map.get(part, part)
568 data = getattr(data, field_name, None)
569
570 if not isinstance(data, LazyReference) and hasattr(
571 data, "_changed_fields"
572 ):
573 if getattr(data, "_is_document", False):
574 continue
575
576 data._changed_fields = []
577 elif isinstance(data, (list, tuple, dict)):
578 if hasattr(data, "field") and isinstance(
579 data.field, (ReferenceField, GenericReferenceField)
580 ):
581 continue
582 BaseDocument._nestable_types_clear_changed_fields(data)
583
584 self._changed_fields = []
585
586 @staticmethod
587 def _nestable_types_clear_changed_fields(data):

Calls 4

_get_changed_fieldsMethod · 0.95
_import_classFunction · 0.90
getMethod · 0.45