Handle not found domain.
This commit is contained in:
parent
c69668a9eb
commit
c2b3485485
|
@ -2,7 +2,9 @@ import requests
|
|||
import urllib.parse
|
||||
|
||||
from django.conf import settings
|
||||
from django.http import Http404
|
||||
from django.urls.exceptions import NoReverseMatch
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from .models import Domain, DatabaseService, MailService, SaasService, UserAccount
|
||||
|
||||
|
@ -95,7 +97,9 @@ class Orchestra(object):
|
|||
path = API_PATHS.get('domain-detail').format_map({'pk': pk})
|
||||
|
||||
url = urllib.parse.urljoin(self.base_url, path)
|
||||
status, domain_json = self.request("GET", url=url)
|
||||
status, domain_json = self.request("GET", url=url, raise_exception=False)
|
||||
if status == 404:
|
||||
raise Http404(_("No domain found matching the query"))
|
||||
return Domain.new_from_json(domain_json)
|
||||
|
||||
def retrieve_domain_list(self):
|
||||
|
|
|
@ -1,3 +1,14 @@
|
|||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
||||
|
||||
class DomainsTestCase(TestCase):
|
||||
def test_domain_not_found(self):
|
||||
response = self.client.post(
|
||||
'/auth/login/',
|
||||
{'username': 'admin', 'password': 'admin'},
|
||||
follow=True
|
||||
)
|
||||
self.assertEqual(200, response.status_code)
|
||||
|
||||
response = self.client.get('/domains/3/')
|
||||
self.assertEqual(404, response.status_code)
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
from itertools import groupby
|
||||
|
||||
from django.core.exceptions import ImproperlyConfigured
|
||||
|
@ -190,18 +189,17 @@ class DomainDetailView(CustomContextMixin, UserTokenRequiredMixin, DetailView):
|
|||
template_name = "musician/domain_detail.html"
|
||||
|
||||
def get_queryset(self):
|
||||
return [] # self.orchestra.retrieve_domain_list()
|
||||
# Return an empty list to avoid a request to retrieve all the
|
||||
# user domains. We will get a 404 if the domain doesn't exists
|
||||
# while invoking `get_object`
|
||||
return []
|
||||
|
||||
def get_object(self, queryset=None):
|
||||
if queryset is None:
|
||||
queryset = self.get_queryset()
|
||||
|
||||
pk = self.kwargs.get(self.pk_url_kwarg)
|
||||
# TODO try to retrieve object capturing exception
|
||||
try:
|
||||
domain = self.orchestra.retrieve_domain(pk)
|
||||
except:
|
||||
raise
|
||||
domain = self.orchestra.retrieve_domain(pk)
|
||||
|
||||
return domain
|
||||
|
||||
|
|
Loading…
Reference in a new issue