code: def update(self, datmo_entity):
      # translate datmo_entity to a standard dictionary (document) to be stored
      if hasattr(datmo_entity, "to_dictionary"):
          dict_obj = datmo_entity.to_dictionary()
      else:
          if "id" not in list(datmo_entity) or not datmo_entity["id"]:
              raise InputError(__("error", "storage.local.dal.update"))
          # Aggregate original object and new object into dict_obj var
          new_dict_obj = datmo_entity
          original_datmo_entity = self.get_by_id(datmo_entity["id"])
          dict_obj = {}
          for (
              key,
              value,
          ) in original_datmo_entity.to_dictionary().items():
              if key in list(new_dict_obj):
                  dict_obj[key] = new_dict_obj[key]
              else:
                  dict_obj[key] = getattr(original_datmo_entity, key)
  
      # set updated_at always
      dict_obj["updated_at"] = datetime.utcnow()
      response = self.driver.set(self.collection, dict_obj)
      entity_instance = self.entity_class(response)
      return entity_instance
  
imports: import os
  from kids.cache import cache
  from datetime import datetime
  from datmo.core.util.i18n import get
  from datmo.core.entity.model import Model
  from datmo.core.entity.code import Code
  from datmo.core.entity.environment import Environment
  from datmo.core.entity.file_collection import FileCollection
  from datmo.core.entity.task import Task
  from datmo.core.entity.snapshot import Snapshot
  from datmo.core.entity.user import User
  from datmo.core.util.exceptions import InputError, EntityNotFound, MoreThanOneEntityFound, DALNotInitialized
  from datmo.core.util.misc_functions import create_unique_hash
  from datmo.core.storage.driver.blitzdb_dal_driver import BlitzDBDALDriver
label_desc: Use image node_id 5 for calling the EntityMethodsCRUD obj's underlying member method code with example usage: obj.update(datmo_entity) and returns: entity_instance