diff --git a/django_lostplaces/lostplaces/tests/views/test_base_views.py b/django_lostplaces/lostplaces/tests/views/test_base_views.py index f26ea9e..24eb675 100644 --- a/django_lostplaces/lostplaces/tests/views/test_base_views.py +++ b/django_lostplaces/lostplaces/tests/views/test_base_views.py @@ -1,4 +1,4 @@ -23238#!/usr/bin/env python +#!/usr/bin/env python # -*- coding: utf-8 -*- from django.test import TestCase, RequestFactory, Client @@ -7,6 +7,7 @@ from django.db import models from django.contrib.auth.models import User, AnonymousUser from django.contrib.messages.storage.fallback import FallbackStorage from django.utils import timezone +from django.utils.translation import gettext as _ from django.shortcuts import render from lostplaces.models import Place @@ -46,10 +47,6 @@ class TestIsAuthenticated(ViewTestCase): self.assertHttpRedirect(response, '?'.join([str(reverse_lazy('login')), 'next=/'])) self.assertTrue(len(messages) > 0) - self.assertTrue( - _('Please login to proceed') in response.content.decode(), - msg='Expecting a message to tell the user to login' - ) class TestIsPlaceSubmitterMixin(TestCase): diff --git a/django_lostplaces/lostplaces/tests/views/test_place_views.py b/django_lostplaces/lostplaces/tests/views/test_place_views.py index b3cf1da..73af617 100644 --- a/django_lostplaces/lostplaces/tests/views/test_place_views.py +++ b/django_lostplaces/lostplaces/tests/views/test_place_views.py @@ -677,6 +677,63 @@ class PlaceDetailViewTestCase(TaggableViewTestCaseMixin, MapableViewTestCaseMixi user.explorer not in place.explorer_visits.all(), msg='Expecting the explorer to not be in the reverse list of visits after deleting visit' ) + + def test_accessing_place_in_draft(self): + user = User.objects.get(username='testpeter') + place = Place.objects.create( + name='Im a own place in draft 387948', + submitted_when=timezone.now(), + submitted_by=user.explorer, + location='Test %d town' % 5, + latitude=50.5 + 5/10, + longitude=7.0 - 5/10, + description='This is just a test, do not worry %d' % 5, + level=3, + mode='draft' + ) + + self.client.login(username='testpeter', password='Develop123') + + response = self.client.get( + reverse('place_detail', kwargs={ + 'pk': place.pk + }) + ) + self.assertHttpOK(response) + self.assertTrue( + 'Im a own place in draft 387948' in response.content.decode(), + msg='Expecting the user to see his own place in draft mode' + ) + + + self.client.login(username='blubberbernd', password='Develop123') + response = self.client.get( + reverse('place_detail', kwargs={ + 'pk': place.pk + }) + ) + self.assertHttpForbidden(response) + + self.client.login(username='toor', password='Develop123') + response = self.client.get( + reverse('place_detail', kwargs={ + 'pk': place.pk + }) + ) + self.assertHttpOK(response) + self.assertTrue( + 'Im a own place in draft 387948' in response.content.decode(), + msg='Expecting a superuser to see all places in draft mode' + ) + + + + + + + + + \ No newline at end of file diff --git a/django_lostplaces/lostplaces/views/place_views.py b/django_lostplaces/lostplaces/views/place_views.py index 08dad70..df11d12 100644 --- a/django_lostplaces/lostplaces/views/place_views.py +++ b/django_lostplaces/lostplaces/views/place_views.py @@ -12,6 +12,7 @@ from django.contrib import messages from django.contrib.messages.views import SuccessMessageMixin from django.utils.translation import gettext as _ from django.utils import timezone +from django.utils.translation import gettext as _ from django.shortcuts import render, redirect, get_object_or_404 from django.urls import reverse_lazy, reverse @@ -59,6 +60,12 @@ class PlaceDetailView(IsAuthenticatedMixin, IsEligibleToSeePlaceMixin, View): place.calculate_place_level() explorer = request.user.explorer + if place.mode == 'draft': + messages.info( + self.request, + _('This place is still in draft mode and only visible to the submitter and superusers') + ) + context = { 'place': place, 'mapping_config': {