diff --git a/catalog/common/models.py b/catalog/common/models.py index 579b5b43..d3d36e5a 100644 --- a/catalog/common/models.py +++ b/catalog/common/models.py @@ -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""" diff --git a/catalog/common/sites.py b/catalog/common/sites.py index 09f5493e..4939a12b 100644 --- a/catalog/common/sites.py +++ b/catalog/common/sites.py @@ -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: diff --git a/catalog/views.py b/catalog/views.py index c46ab0c4..4fb6466d 100644 --- a/catalog/views.py +++ b/catalog/views.py @@ -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