diff --git a/rowers/tests/test_errorpages.py b/rowers/tests/test_errorpages.py index 671514df..b124c66d 100644 --- a/rowers/tests/test_errorpages.py +++ b/rowers/tests/test_errorpages.py @@ -6,13 +6,12 @@ from __future__ import unicode_literals #from __future__ import print_function from .statements import * - +from django.test import SimpleTestCase, override_settings + #@pytest.mark.django_db class TestErrorPages(TestCase): def test_error_handlers(self): - self.assertTrue(urls.handler404.endswith('.error404_view')) - self.assertTrue(urls.handler500.endswith('.error500_view')) factory = RequestFactory() request = factory.get('/') response = error404_view(request) @@ -26,3 +25,22 @@ class TestErrorPages(TestCase): response = error400_view(request) self.assertEqual(response.status_code, 400) + +# ROOT_URLCONF must specify the module that contains handler403 = ... +#@override_settings(ROOT_URLCONF=__name__) +class CustomErrorHandlerTests(TestCase): + def setUp(self): + self.c = Client() + + def test_handler_workout_notfound(self): + response = self.c.get('/rowers/workout/121/') + # Make assertions on the response here. For example: + self.assertEqual(response.status_code, 404) + self.assertIn('We could not find' ,str(response.content)) + + def test_handler_500(self): + response = self.c.get('/500/') + # Make assertions on the response here. For example: + self.assertEqual(response.status_code, 500) + self.assertIn('The site developer' ,str(response.content)) + diff --git a/rowers/tests/testdata/testdata.csv.gz b/rowers/tests/testdata/testdata.csv.gz index 1cbf5dea..6c887b15 100644 Binary files a/rowers/tests/testdata/testdata.csv.gz and b/rowers/tests/testdata/testdata.csv.gz differ diff --git a/rowers/urls.py b/rowers/urls.py index 25fb8179..f4d1ace5 100644 --- a/rowers/urls.py +++ b/rowers/urls.py @@ -15,9 +15,6 @@ from rest_framework.permissions import * from rowers import views from django.contrib.auth import views as auth_views from django.views.generic.base import TemplateView -from django.conf.urls import ( - handler400, handler403, handler404, handler500, - ) from rowers.permissions import IsOwnerOrNot,IsOwnerOrReadOnly from rowers.serializers import ( @@ -101,11 +98,27 @@ router.register(r'api/workouts',WorkoutViewSet, 'workout') router.register(r'api/me',RowerViewSet, 'rower') router.register(r'api/charts',FavoriteChartViewSet, 'charts') +def permissiondenied_view(request): + raise PermissionDenied + + + +def filenotfound_view(request): + print('aapje') + return rowers.views.error403_view(request) + +def response_error_handler(request, exception=None): + return HttpResponse('Error handler content', status=403) + +def filenotfound_handler(request, exception=None): + print('noot') + return HttpResponse('Error handler content', status=404) + +handler403 = views.error403_view +handler404 = views.error404_view +handler400 = views.error400_view +handler500 = views.error500_view -handler500 = 'views.error500_view' -handler404 = 'views.error404_view' -handler400 = 'views.error400_view' -handler403 = 'views.error403_view' from oauth2_provider.views import base #app_name = "rowers" @@ -322,6 +335,7 @@ urlpatterns = [ re_path(r'^workout/(?P\b[0-9A-Fa-f]+\b)/split/$',views.workout_split_view,name='workout_split_view'), # re_path(r'^workout/(?P\d+)/interactiveplot/$',views.workout_biginteractive_view), re_path(r'^workout/(?P\b[0-9A-Fa-f]+\b)/view/$',views.workout_view,name='workout_view'), +# re_path(r'^workout/(?P\d+)/$',views.workout_view,name='workout_view'), re_path(r'^workout/(?P\b[0-9A-Fa-f]+\b)/$',views.workout_view,name='workout_view'), re_path(r'^workout/fusion/(?P\b[0-9A-Fa-f]+\b)/(?P\b[0-9A-Fa-f]+\b)/$',views.workout_fusion_view,name='workout_fusion_view'), re_path(r'^workout/fusion/(?P\b[0-9A-Fa-f]+\b)/$',views.workout_fusion_list,name='workout_fusion_list'), diff --git a/rowers/views/errorviews.py b/rowers/views/errorviews.py index d0cfd2d6..f0c14f4a 100644 --- a/rowers/views/errorviews.py +++ b/rowers/views/errorviews.py @@ -5,6 +5,15 @@ from __future__ import unicode_literals from rowers.views.statements import * +from django.core.exceptions import PermissionDenied +from django.http import HttpResponse +from django.test import SimpleTestCase, override_settings +from django.urls import path + + +def servererror_view(request): + raise ValueError + # Custom error pages with Rowsandall headers def error500_view(request): response = render(request,'500.html', {},status=500) @@ -18,7 +27,6 @@ def error404_view(request): # context_instance = RequestContext(request)) response.status_code = 404 - print('aa') return response def error400_view(request): diff --git a/rowers/views/statements.py b/rowers/views/statements.py index a4d400c0..b2716268 100644 --- a/rowers/views/statements.py +++ b/rowers/views/statements.py @@ -1047,7 +1047,7 @@ from rowers.utils import isprorower,ProcessorCustomerError # Check if a user is a Pro member def ispromember(user): - if not user.is_anonymous: + if user and not user.is_anonymous: try: r = Rower.objects.get(user=user) except Rower.DoesNotExist: diff --git a/rowers/views/workoutviews.py b/rowers/views/workoutviews.py index bd7b6ba9..7574a68b 100644 --- a/rowers/views/workoutviews.py +++ b/rowers/views/workoutviews.py @@ -1487,7 +1487,7 @@ def workout_fusion_list(request,id=0,message='',successmessage='', # Basic view of workout def workout_view(request,id=0): request.session['referer'] = absolute(request)['PATH'] - + if not request.user.is_anonymous: rower = getrower(request.user) else: diff --git a/rowsandall_app/settings_thinkpad.py b/rowsandall_app/settings_thinkpad.py index 02b60906..04932380 100644 --- a/rowsandall_app/settings_thinkpad.py +++ b/rowsandall_app/settings_thinkpad.py @@ -53,7 +53,7 @@ TEMPLATES[0]['OPTIONS']['debug'] = DEBUG ALLOWED_HOSTS = [] -#INSTALLED_APPS += ['debug_toolbar',] +INSTALLED_APPS += ['debug_toolbar',] MIDDLEWARE += ['debug_toolbar.middleware.DebugToolbarMiddleware',] diff --git a/rowsandall_app/urls.py b/rowsandall_app/urls.py index db3e2216..dd3935f8 100644 --- a/rowsandall_app/urls.py +++ b/rowsandall_app/urls.py @@ -25,14 +25,6 @@ from rowers import views as rowersviews import django -from django.conf.urls import ( - handler400, handler403, handler404, handler500 -) - -handler400 = 'rowers.views.error400_view' -handler403 = 'rowers.views.error403_view' -handler404 = 'rowers.views.error404_view' -handler500 = 'rowers.views.error500_view' import django.views.i18n @@ -84,7 +76,8 @@ urlpatterns += [ re_path(r'^twitter\_callback',rowersviews.rower_process_twittercallback), re_path(r'^i18n/', include('django.conf.urls.i18n')), re_path(r'^tz_detect/', include('tz_detect.urls')), - path('django-rq/', include('django_rq.urls')) + path('django-rq/', include('django_rq.urls')), + path('500/', rowersviews.error500_view), # re_path(r'^jsi18n/', django.views.i18n.javascript_catalog,name='jsi18n'), ]