code: def get_node_model(manager, handle_id=None, node=None):
      
      bundle = get_node_bundle(manager, handle_id, node)
      for label in bundle.get('labels'):
          try:
              classname = '{meta_type}{base}Model'.format(meta_type=bundle.get('meta_type'), base=label).replace('_', '')
              return getattr(models, classname)(manager).load(bundle)
          except AttributeError:
              pass
      for label in bundle.get('labels'):
          try:
              classname = '{base}Model'.format(base=label).replace('_', '')
              return getattr(models, classname)(manager).load(bundle)
          except AttributeError:
              pass
      try:
          classname = '{base}Model'.format(base=bundle.get('meta_type'))
          return getattr(models, classname)(manager).load(bundle)
      except AttributeError:
          return models.BaseNodeModel(manager).load(bundle)
docs: :param manager: Context manager to handle transactions
      :type manager: Neo4jDBSessionManager
      :param handle_id: Nodes handle id
      :type handle_id: str|unicode
      :param node: Node object
      :type node: neo4j.v1.types.Node
      :return: Node model
      :rtype: models.BaseNodeModel or sub class of models.BaseNodeModel