def METHOD_NAME(self, id):
    node = self.data[id]
    try:
        news = NewsPage.objects.get(drupal_id=node['nid'])
    except NewsPage.DoesNotExist:
        news = NewsPage(drupal_id=node['nid'])
    # TODO timezone?
    news.submit_time = datetime.fromtimestamp(int(node['created']), timezone.utc)
    news.publication_date = datetime.fromtimestamp(int(node['created']), timezone.utc)
    news.title = node['title']
    news.introduction = self.get_field(node, 'field_preamble')
    cleaned_body = self.whitelister.clean(self.get_field(node, 'body'))
    news.body = [('paragraph', RichText(cleaned_body))]
    news.news_types.clear()
    for news_type in self.ensure_iterable(node['field_article_type']):
        news.news_types.add(NewsPageNewsType(
            news_type=self.types[news_type['tid']],
        ))
    news.related_projects.clear()
    for project in self.ensure_iterable(node['field_article_project']):
        try:
            project_page = ProjectPage.objects.get(drupal_id=project['target_id'])
        except ProjectPage.DoesNotExist:
            self.stdout.write(f"Missing project ID {project['target_id']}")
        else:
            news.related_projects.add(NewsProjectRelatedPage(
                page=project_page,
            ))
    news.authors.clear()
    for author in self.ensure_iterable(node['field_article_authors']):
        user = User.objects.get(drupal_id=author['target_id'])
        news.authors.add(NewsPageAuthor(
            author=PersonPage.objects.get(title=user.full_name)
        ))
    try:
        user = User.objects.get(drupal_id=node['uid'])
    except User.DoesNotExist:
        pass
    else:
        user_map = {'Dan Blah': 'Dan "Blah" Meredith'}
        name = user_map.get(user.full_name, user.full_name)
        # missing amin jobran
        try:
            news.authors.add(NewsPageAuthor(
                author=PersonPage.objects.get(title=name)
            ))
        except PersonPage.DoesNotExist:
            self.stdout.write(f'Missing person page: {name}')
    try:
        if not news.get_parent():
            self.parent_page.add_child(instance=news)
        news.save_revision().publish()
        self.stdout.write(f"Processed \"{node['title'].encode('utf8')}\" ({node['nid']})")
    except IntegrityError:
        self.stdout.write(f"*** Skipped \"{node['title']}\" ({node['nid']}) due to IntegrityError")