refetched resource will stick to and update original linked item

This commit is contained in:
Your Name 2023-07-01 14:54:45 -04:00 committed by Henri Dickson
parent 4184b0468a
commit bd114011f3
3 changed files with 9 additions and 11 deletions

View file

@ -422,10 +422,13 @@ class Item(SoftDeleteMixin, PolymorphicModel):
# return next((x[len(prefix):] for x in self.lookup_ids if x.startswith(prefix)), None)
def update_lookup_ids(self, lookup_ids):
# TODO
# ll = set(lookup_ids)
# ll = list(filter(lambda a, b: b, ll))
pass
for t, v in lookup_ids:
if t in IdealIdTypes and self.primary_lookup_id_type not in IdealIdTypes:
self.primary_lookup_id_type = t
self.primary_lookup_id_value = v
return
if t == self.primary_lookup_id_type:
self.primary_lookup_id_value = v
METADATA_COPY_LIST = [
"title",
@ -464,7 +467,7 @@ class Item(SoftDeleteMixin, PolymorphicModel):
setattr(self, k, p.metadata.get(k))
if p.cover and (not self.has_cover() or ignore_existing_content):
self.cover = p.cover
self.update_lookup_ids(lookup_ids)
self.update_lookup_ids(list(set(lookup_ids)))
def update_linked_items_from_external_resource(self, resource):
"""Subclass should override this"""

View file

@ -142,7 +142,7 @@ class AbstractSite:
@classmethod
def match_or_create_item_for_resource(cls, resource):
previous_item = resource.item
resource.item = cls.match_existing_item_for_resource(resource)
resource.item = cls.match_existing_item_for_resource(resource) or previous_item
if resource.item is None:
model = cls.get_model_for_resource(resource)
if not model:

View file

@ -2,20 +2,15 @@ import logging
from django.shortcuts import render, get_object_or_404, redirect
from django.contrib.auth.decorators import login_required, permission_required
from django.utils.translation import gettext_lazy as _
from django.http import HttpResponseRedirect
from django.core.exceptions import BadRequest, PermissionDenied, ObjectDoesNotExist
from django.db.models import Count
from django.utils import timezone
from django.core.paginator import Paginator
from catalog.common.models import ExternalResource, IdType, IdealIdTypes
from catalog.sites.imdb import IMDB
from .models import *
from django.views.decorators.clickjacking import xframe_options_exempt
from journal.models import Mark, ShelfMember, Review, Comment, query_item_category
from journal.models import (
query_visible,
query_following,
update_journal_for_merged_item,
)
from common.utils import PageLinksGenerator, get_uuid_or_404
from common.config import PAGE_LINK_NUMBER