From 6ef27ec306a4b2878f9cb28da5025770de34231c Mon Sep 17 00:00:00 2001
From: Philip ABBET <philip.abbet@idiap.ch>
Date: Thu, 28 Sep 2017 09:16:34 +0200
Subject: [PATCH] [tests] Fix the hopeless rendering of the 500.html page
 during failed tests

---
 beat/web/settings/settings.py |  6 ++++--
 beat/web/ui/views.py          | 34 ++++++++++++++++++++++++++++++++++
 beat/web/urls.py              |  5 +++++
 3 files changed, 43 insertions(+), 2 deletions(-)
 mode change 100644 => 100755 beat/web/ui/views.py
 mode change 100644 => 100755 beat/web/urls.py

diff --git a/beat/web/settings/settings.py b/beat/web/settings/settings.py
index 61ec9923e..0bdfdf7d0 100755
--- a/beat/web/settings/settings.py
+++ b/beat/web/settings/settings.py
@@ -205,8 +205,10 @@ CACHE_ROOT       = os.path.join(PREFIX, 'cache')
 #
 ##############################################################################
 
-DATASETS_UID = None
-DATASETS_ROOT_PATH = None
+DATASETS_UID = 1000
+# DATASETS_UID = None
+DATASETS_ROOT_PATH = '/Users/pabbet/Projects/databases/'
+# DATASETS_ROOT_PATH = None
 
 
 ##############################################################################
diff --git a/beat/web/ui/views.py b/beat/web/ui/views.py
old mode 100644
new mode 100755
index b6183a915..3c26932f4
--- a/beat/web/ui/views.py
+++ b/beat/web/ui/views.py
@@ -57,6 +57,9 @@ import logging
 logger = logging.getLogger(__name__)
 
 
+#----------------------------------------------------------
+
+
 def index(request):
     '''Our main index page'''
 
@@ -64,6 +67,9 @@ def index(request):
         context_instance=RequestContext(request))
 
 
+#----------------------------------------------------------
+
+
 def login(request):
     '''Login page'''
 
@@ -78,6 +84,9 @@ def login(request):
     return response
 
 
+#----------------------------------------------------------
+
+
 def blocked_user_reactivation(request):
     '''Reactivation page'''
 
@@ -185,6 +194,9 @@ def blocked_user_reactivation(request):
         context_instance=RequestContext(request))
 
 
+#----------------------------------------------------------
+
+
 def gather_contributions(requestor, author):
     '''Gather contributions that are accessible to a certain requestor'''
 
@@ -233,6 +245,9 @@ def gather_contributions(requestor, author):
             )
 
 
+#----------------------------------------------------------
+
+
 def activity_stream(request, author_name):
     '''User-specific activity stream'''
 
@@ -259,6 +274,9 @@ def activity_stream(request, author_name):
         )
 
 
+#----------------------------------------------------------
+
+
 @login_required
 def docreq(request, author_name):
     '''Request a documentation for an existing platform object'''
@@ -301,6 +319,9 @@ def docreq(request, author_name):
     return HttpResponse()
 
 
+#----------------------------------------------------------
+
+
 @login_required
 def user_settings(request):
     '''User settings page (password and token change)'''
@@ -348,3 +369,16 @@ def user_settings(request):
               },
           },
         context_instance=RequestContext(request))
+
+
+#----------------------------------------------------------
+
+
+def empty_error500_for_tests(request):
+    '''Custom error 500 view used ONLY DURING THE TESTS
+
+    Without it, Django tries to render the custom one from the website when an error
+    occurs in some tests, but fails because some variables needed by the template aren't
+    found.
+    '''
+    return HttpResponse()
diff --git a/beat/web/urls.py b/beat/web/urls.py
old mode 100644
new mode 100755
index 081492e4b..25b019f61
--- a/beat/web/urls.py
+++ b/beat/web/urls.py
@@ -182,3 +182,8 @@ else:
 
 # Static files (only working during development, when settings.DEBUG is True)
 urlpatterns += staticfiles_urlpatterns()
+
+
+# ONLY DURING THE TESTS: Custom error 500 view
+if getattr(settings, 'TEST_CONFIGURATION', False):
+    handler500 = 'beat.web.ui.views.empty_error500_for_tests'
-- 
GitLab