#64 explorer draft view
This commit is contained in:
parent
724c26c926
commit
df67bcf639
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 %}
|
{% if user.is_authenticated %}
|
||||||
Hi {{ user.username }}!
|
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 '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 %}
|
{% if user.is_superuser %}
|
||||||
| <a class="LP-Link" href="{% url 'admin:index' %}" target="_blank"><span class="LP-Link__Text">{% translate 'Admin' %}</span></a>
|
| <a class="LP-Link" href="{% url 'admin:index' %}" target="_blank"><span class="LP-Link__Text">{% translate 'Admin' %}</span></a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -84,6 +84,34 @@ class TestExplorerProfileView(GlobalTemplateTestCaseMixin, ViewTestCase):
|
|||||||
msg='Expecting the latest place to be visible on the submitters profile page'
|
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):
|
def test_explorer_image(self):
|
||||||
user = User.objects.get(username='testpeter')
|
user = User.objects.get(username='testpeter')
|
||||||
place = Place.objects.create(
|
place = Place.objects.create(
|
||||||
|
@ -23,6 +23,7 @@ from lostplaces.views import (
|
|||||||
PhotoAlbumDeleteView,
|
PhotoAlbumDeleteView,
|
||||||
ExplorerProfileView,
|
ExplorerProfileView,
|
||||||
ExplorerProfileUpdateView,
|
ExplorerProfileUpdateView,
|
||||||
|
ExplorerDraftsView,
|
||||||
PlaceVoteView
|
PlaceVoteView
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -33,6 +34,7 @@ urlpatterns = [
|
|||||||
|
|
||||||
path('explorer/<int:explorer_id>/', ExplorerProfileView.as_view(), name='explorer_profile'),
|
path('explorer/<int:explorer_id>/', ExplorerProfileView.as_view(), name='explorer_profile'),
|
||||||
path('explorer/update/', ExplorerProfileUpdateView.as_view(), name='explorer_profile_update'),
|
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/', PlaceListView.as_view(), name='place_list'),
|
||||||
path('place/<int:pk>/', PlaceDetailView.as_view(), name='place_detail'),
|
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.shortcuts import render, redirect, get_object_or_404
|
||||||
from django.urls import reverse_lazy
|
from django.urls import reverse_lazy
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
|
from django.contrib.auth.mixins import UserPassesTestMixin
|
||||||
|
|
||||||
from lostplaces.common import get_all_subclasses
|
from lostplaces.common import get_all_subclasses
|
||||||
from lostplaces.views.base_views import IsAuthenticatedMixin
|
from lostplaces.views.base_views import IsAuthenticatedMixin
|
||||||
@ -18,7 +19,7 @@ from lostplaces.forms import ExplorerChangeForm, ExplorerUserChangeForm
|
|||||||
class ExplorerProfileView(IsAuthenticatedMixin, View):
|
class ExplorerProfileView(IsAuthenticatedMixin, View):
|
||||||
def get(self, request, explorer_id):
|
def get(self, request, explorer_id):
|
||||||
explorer = get_object_or_404(Explorer, pk=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()
|
place_count = place_list.count()
|
||||||
|
|
||||||
context={
|
context={
|
||||||
@ -82,3 +83,20 @@ class ExplorerProfileUpdateView(IsAuthenticatedMixin, View):
|
|||||||
)
|
)
|
||||||
return redirect(reverse_lazy('explorer_profile_update'))
|
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)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user