mitshel / sopds

Simple opds catalog
http://www.sopds.ru/
Other
211 stars 80 forks source link

При поиске иногда получаем "list index out of range" #18

Closed omgiafs closed 7 years ago

omgiafs commented 7 years ago

Никаких virtualenv. sopds в sub-uri '/sopds' на nginx. в urls.py внесены соответствующие правки.

Ошибка возникает как через nginx, так и через runserver джанги напрямую, так что nginx исключаем, ошибка чисто питоническая.

При поиске по названию "обход" ищет нормально, при поисковом запросе "обходим" получаем

Environment:

Request Method: GET
Request URL: https://example.com/sopds/web/search/books/?csrfmiddlewaretoken=TOKEN&searchterms=%D0%BE%D0%B1%D1%85%D0%BE%D0%B4%D0%B8%D0%BC&submit=&page=0&searchtype=m

Django Version: 1.10.4
Python Version: 3.4.2
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'opds_catalog',
 'sopds_web_backend']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']

Traceback:
File "/usr/local/lib/python3.4/dist-packages/django/core/handlers/exception.py" in inner
  39.             response = get_response(request)
File "/usr/local/lib/python3.4/dist-packages/django/core/handlers/base.py" in _legacy_get_response
  249.             response = self._get_response(request)
File "/usr/local/lib/python3.4/dist-packages/django/core/handlers/base.py" in _get_response
  187.                 response = self.process_exception_by_middleware(e, request)
File "/usr/local/lib/python3.4/dist-packages/django/core/handlers/base.py" in _get_response
  185.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python3.4/dist-packages/django/contrib/auth/decorators.py" in _wrapped_view
  23.                 return view_func(request, *args, **kwargs)
File "./sopds_web_backend/views.py" in SearchBooksView
  211.                 if books[finish].title==prev_title and {a['id'] for a in books[finish].authors.values()}==prev_authors_set:
File "/usr/local/lib/python3.4/dist-packages/django/db/models/query.py" in __getitem__
  295.         return list(qs)[0]

Exception Type: IndexError at /sopds/web/search/books/
Exception Value: list index out of range
mitshel commented 7 years ago

Ок... посмотрю в чем может быть проблема. PS: Смоделировал... Ошибка действительно имеется. Спасибо за наводку.

mitshel commented 7 years ago

Поправил. Исправленный код в ветке v0.38-fixes. Однако пока не успел потестировать.