core: catch IntegrityError in flow_manager and deny request

Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
Jens Langhammer 2021-05-09 23:31:39 +02:00
parent dda1d4e0fb
commit e33a5528f7
1 changed files with 6 additions and 1 deletions

View File

@ -3,6 +3,7 @@ from enum import Enum
from typing import Any, Optional, Type from typing import Any, Optional, Type
from django.contrib import messages from django.contrib import messages
from django.db import IntegrityError
from django.db.models.query_utils import Q from django.db.models.query_utils import Q
from django.http import HttpRequest, HttpResponse, HttpResponseBadRequest from django.http import HttpRequest, HttpResponse, HttpResponseBadRequest
from django.shortcuts import redirect from django.shortcuts import redirect
@ -149,7 +150,11 @@ class SourceFlowManager:
def get_flow(self, **kwargs) -> HttpResponse: def get_flow(self, **kwargs) -> HttpResponse:
"""Get the flow response based on user_matching_mode""" """Get the flow response based on user_matching_mode"""
try:
action, connection = self.get_action(**kwargs) action, connection = self.get_action(**kwargs)
except IntegrityError as exc:
self._logger.warning("failed to get action", exc=exc)
return redirect("/")
self._logger.debug("get_action() says", action=action, connection=connection) self._logger.debug("get_action() says", action=action, connection=connection)
if connection: if connection:
if action == Action.LINK: if action == Action.LINK: