#64 explorer draft view
This commit is contained in:
		
							
								
								
									
										28
									
								
								django_lostplaces/lostplaces/templates/explorer/drafts.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								django_lostplaces/lostplaces/templates/explorer/drafts.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
			
		||||
{% extends 'global.html'%}
 | 
			
		||||
{% load static %}
 | 
			
		||||
{% load i18n %}
 | 
			
		||||
 | 
			
		||||
{% load svg_icon %}
 | 
			
		||||
 | 
			
		||||
{% block maincontent %}
 | 
			
		||||
<section class="LP-Section">
 | 
			
		||||
	<div class="LP-PlaceList">
 | 
			
		||||
		<h1 class="LP-Headline">
 | 
			
		||||
            {% if user.username == explorer.user.username %}
 | 
			
		||||
                {% translate 'Your drafts' %}
 | 
			
		||||
            {% else %}
 | 
			
		||||
                {{explorer.user.username}}{% translate '\'s drafts' %}
 | 
			
		||||
            {% endif %}
 | 
			
		||||
        </h1>
 | 
			
		||||
		<ul class="LP-PlaceList__List">
 | 
			
		||||
			{% for place in place_list %}
 | 
			
		||||
			<li class="LP-PlaceList__Item">
 | 
			
		||||
				<a href="{% url 'place_detail' pk=place.pk %}" class="LP-Link">
 | 
			
		||||
					{% include 'partials/place_teaser.html' with place=place extended=True %}
 | 
			
		||||
				</a>
 | 
			
		||||
			</li>
 | 
			
		||||
			{% endfor %}
 | 
			
		||||
		</ul>
 | 
			
		||||
    </div>
 | 
			
		||||
</section>
 | 
			
		||||
{% endblock maincontent %}
 | 
			
		||||
@@ -32,7 +32,8 @@
 | 
			
		||||
                    {% if user.is_authenticated %}
 | 
			
		||||
                    Hi {{ user.username }}!
 | 
			
		||||
                    <a class="LP-Link" href="{% url 'logout' %}"><span class="LP-Link__Text">{% translate 'Logout' %}</span></a> |
 | 
			
		||||
					<a class="LP-Link" href="{% url 'explorer_profile' explorer_id=user.pk%}"><span class="LP-Link__Text">{% translate 'Profile' %}</span></a>
 | 
			
		||||
					<a class="LP-Link" href="{% url 'explorer_profile' explorer_id=user.pk%}"><span class="LP-Link__Text">{% translate 'Profile' %}</span></a> |
 | 
			
		||||
                    <a class="LP-Link" href="{% url 'explorer_drafts' explorer_id=user.pk%}"><span class="LP-Link__Text">{% translate 'Drafts' %}</span></a>
 | 
			
		||||
                    {% if user.is_superuser %}
 | 
			
		||||
                    | <a class="LP-Link" href="{% url 'admin:index' %}" target="_blank"><span class="LP-Link__Text">{% translate 'Admin' %}</span></a>
 | 
			
		||||
                    {% endif %}
 | 
			
		||||
 
 | 
			
		||||
@@ -84,6 +84,34 @@ class TestExplorerProfileView(GlobalTemplateTestCaseMixin, ViewTestCase):
 | 
			
		||||
            msg='Expecting the latest place to be visible on the submitters profile page'
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
    def test_draft_in_explorer_places(self):
 | 
			
		||||
        user = User.objects.get(username='testpeter')
 | 
			
		||||
        Place.objects.create(
 | 
			
		||||
            name='Im the latest place in draft 3671',
 | 
			
		||||
            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('explorer_profile', kwargs={
 | 
			
		||||
                'explorer_id': user.explorer.id
 | 
			
		||||
            })
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
        self.assertHttpOK(response)
 | 
			
		||||
        self.assertFalse(
 | 
			
		||||
            'Im the latest place in draft 3671' in response.content.decode(),
 | 
			
		||||
            msg='Expecting a place in draft mode to not show up on the submitters profile page'
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
    def test_explorer_image(self):
 | 
			
		||||
        user = User.objects.get(username='testpeter')
 | 
			
		||||
        place = Place.objects.create(
 | 
			
		||||
 
 | 
			
		||||
@@ -23,6 +23,7 @@ from lostplaces.views import (
 | 
			
		||||
	PhotoAlbumDeleteView,
 | 
			
		||||
    ExplorerProfileView,
 | 
			
		||||
    ExplorerProfileUpdateView,
 | 
			
		||||
    ExplorerDraftsView,
 | 
			
		||||
    PlaceVoteView
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -33,6 +34,7 @@ urlpatterns = [
 | 
			
		||||
 | 
			
		||||
    path('explorer/<int:explorer_id>/', ExplorerProfileView.as_view(), name='explorer_profile'),
 | 
			
		||||
    path('explorer/update/', ExplorerProfileUpdateView.as_view(), name='explorer_profile_update'),
 | 
			
		||||
    path('explorer/<int:explorer_id>/drafts', ExplorerDraftsView.as_view(), name='explorer_drafts'),
 | 
			
		||||
 | 
			
		||||
    path('place/', PlaceListView.as_view(), name='place_list'),
 | 
			
		||||
    path('place/<int:pk>/', PlaceDetailView.as_view(), name='place_detail'),
 | 
			
		||||
 
 | 
			
		||||
@@ -8,6 +8,7 @@ from django.utils.translation import gettext as _
 | 
			
		||||
from django.shortcuts import render, redirect, get_object_or_404
 | 
			
		||||
from django.urls import reverse_lazy
 | 
			
		||||
from django.contrib import messages
 | 
			
		||||
from django.contrib.auth.mixins import UserPassesTestMixin
 | 
			
		||||
 | 
			
		||||
from lostplaces.common import get_all_subclasses
 | 
			
		||||
from lostplaces.views.base_views import IsAuthenticatedMixin
 | 
			
		||||
@@ -18,7 +19,7 @@ from lostplaces.forms import ExplorerChangeForm, ExplorerUserChangeForm
 | 
			
		||||
class ExplorerProfileView(IsAuthenticatedMixin, View):
 | 
			
		||||
    def get(self, request, explorer_id):
 | 
			
		||||
        explorer = get_object_or_404(Explorer, pk=explorer_id)
 | 
			
		||||
        place_list = explorer.places.all()
 | 
			
		||||
        place_list = explorer.get_place_list_to_display()
 | 
			
		||||
        place_count = place_list.count()
 | 
			
		||||
 | 
			
		||||
        context={
 | 
			
		||||
@@ -81,4 +82,21 @@ class ExplorerProfileUpdateView(IsAuthenticatedMixin, View):
 | 
			
		||||
                _('Please fill in all required fields.')
 | 
			
		||||
            )
 | 
			
		||||
        return redirect(reverse_lazy('explorer_profile_update'))
 | 
			
		||||
    
 | 
			
		||||
    
 | 
			
		||||
class ExplorerDraftsView(IsAuthenticatedMixin, UserPassesTestMixin, View):
 | 
			
		||||
 | 
			
		||||
    def get_explorer(self):
 | 
			
		||||
        return get_object_or_404(Explorer, pk=self.kwargs['explorer_id'])
 | 
			
		||||
 | 
			
		||||
    def test_func(self):
 | 
			
		||||
        if not hasattr(self.request, 'user'):
 | 
			
		||||
            return False
 | 
			
		||||
        return self.request.user == self.get_explorer().user or self.request.user.is_superuser
 | 
			
		||||
 | 
			
		||||
    def get(self, request, *args, **kwargs):
 | 
			
		||||
        context = {
 | 
			
		||||
            'explorer': self.get_explorer(),
 | 
			
		||||
            'place_list': self.get_explorer().get_drafts()
 | 
			
		||||
        }
 | 
			
		||||
        return render(request, 'explorer/drafts.html', context)
 | 
			
		||||
            
 | 
			
		||||
		Reference in New Issue
	
	Block a user