From 738661c5572dcd04b95e7b13d553d183b18461df Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 23 Jul 2022 14:45:47 -0400 Subject: [PATCH] robust search --- common/views.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/common/views.py b/common/views.py index bba71936..2fb56b1c 100644 --- a/common/views.py +++ b/common/views.py @@ -27,6 +27,7 @@ from management.models import Announcement from django.conf import settings from common.index import Indexer from django.http import JsonResponse +from django.db.utils import IntegrityError logger = logging.getLogger(__name__) @@ -413,6 +414,15 @@ def jump_or_scrape(request, url): try: scraper.scrape(url) form = scraper.save(request_user=request.user) + except IntegrityError as ie: # duplicate key on source_url may be caused by user's double submission + try: + entity = scraper.data_class.objects.get(source_url=effective_url) + return redirect(entity) + except Exception as e: + logger.error(f"Scrape Failed URL: {url}\n{e}") + if settings.DEBUG: + logger.error("Expections during saving scraped data:", exc_info=e) + return render(request, 'common/error.html', {'msg': _("爬取数据失败😫")}) except Exception as e: logger.error(f"Scrape Failed URL: {url}\n{e}") if settings.DEBUG: