From bd0c1dd1a23087c4014bba8d0e5b5c2e15e10345 Mon Sep 17 00:00:00 2001 From: Tor-Einar Skog <tor-einar.skog@nibio.no> Date: Wed, 6 Mar 2024 13:55:46 +0100 Subject: [PATCH] Handle 404 when requesting trying to display a message that doesn't exist in VIPSLogic --- vips_messages/models.py | 9 +++++++-- vips_messages/views.py | 15 +++++++++------ 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/vips_messages/models.py b/vips_messages/models.py index 7916ab2d..db68ec07 100755 --- a/vips_messages/models.py +++ b/vips_messages/models.py @@ -102,7 +102,9 @@ class Message: @staticmethod def get_message(message_id, current_language=settings.VIPSLOGIC_LANGUAGE_CODE): message_json = Message.get_message_as_json(message_id) - return Message.get_instance_from_dict(message_json, current_language) + if message_json is not None: + return Message.get_instance_from_dict(message_json, current_language) + return None @staticmethod def get_messages_by_tag(tag_id, current_language=settings.VIPSLOGIC_LANGUAGE_CODE): @@ -138,7 +140,10 @@ class Message: @staticmethod def get_message_as_json(message_id): request_result = requests.get("%s://%s/rest/message/%s" % (settings.VIPSLOGIC_PROTOCOL, settings.VIPSLOGIC_SERVER_NAME,message_id)) - return request_result.json() + if request_result.status_code == 200: + return request_result.json() + return None + @staticmethod def get_instance_from_dict(the_dict,current_language=settings.VIPSLOGIC_LANGUAGE_CODE): diff --git a/vips_messages/views.py b/vips_messages/views.py index 54e0d2e9..67e20382 100755 --- a/vips_messages/views.py +++ b/vips_messages/views.py @@ -23,7 +23,7 @@ import json from django.shortcuts import render from django.utils import translation -from django.http import HttpResponse +from django.http import HttpResponse, Http404 from vips_messages.models import Message from vips_messages.forms import MessagePublishedDateFilterForm @@ -57,11 +57,14 @@ def index(request): return render(request, 'messages/index.html', context) def detail(request, message_id): - context = { - #'message' : get_object_or_404(Message, pk=message_id) - 'message': Message.get_message(message_id, translation.get_language()) - } - return render(request, 'messages/detail.html', context) + message = Message.get_message(message_id, translation.get_language()) + if message is not None: + context = { + #'message' : get_object_or_404(Message, pk=message_id) + 'message': Message.get_message(message_id, translation.get_language()) + } + return render(request, 'messages/detail.html', context) + raise Http404("This page does not exist") # Send messages as JSON # TODO: Skip intermediary Python object, get json directly from VIPSLogic -- GitLab