list reports
This commit is contained in:
parent
d5086f79c0
commit
96b4a9c41a
8 changed files with 252 additions and 113 deletions
|
@ -23,6 +23,16 @@
|
|||
</p>
|
||||
{% endif %}
|
||||
|
||||
{% if request.user_permissions.can_review_reports %}
|
||||
<hr>
|
||||
<p>
|
||||
{% trans 'You can review reports' %}
|
||||
</p>
|
||||
<p>
|
||||
<a class="button" href="{% url 'site.report_list' %}">{% trans 'Show reports' %}</a>
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
<hr>
|
||||
<p>
|
||||
<a class="button" href="{% url 'site.logout' %}">{% trans 'Log out' %}</a>
|
||||
|
|
22
src/c3nav/site/templates/site/fragment_pagination.html
Normal file
22
src/c3nav/site/templates/site/fragment_pagination.html
Normal file
|
@ -0,0 +1,22 @@
|
|||
{% load i18n %}
|
||||
<p>
|
||||
{% if objects.has_previous %}
|
||||
<a href="?{% if request.GET.s %}s={{ request.GET.s | urlencode }}&{% endif %}page=1">
|
||||
« {% trans 'first' %}
|
||||
</a> ·
|
||||
<a href="?{% if request.GET.s %}s={{ request.GET.s | urlencode }}&{% endif %}page={{ objects.previous_page_number }}">
|
||||
‹ {% trans 'previous' %}
|
||||
</a> ·
|
||||
{% endif %}
|
||||
{% with page_number=objects.number num_pages=objects.paginator.num_pages %}
|
||||
{% blocktrans %}Page {{ page_number }} of {{ num_pages }}{% endblocktrans %}
|
||||
{% endwith %}
|
||||
{% if objects.has_next %}
|
||||
· <a href="?{% if request.GET.s %}s={{ request.GET.s | urlencode }}&{% endif %}page={{ objects.next_page_number }}">
|
||||
{% trans 'next' %} ›
|
||||
</a>
|
||||
· <a href="?{% if request.GET.s %}s={{ request.GET.s | urlencode }}&{% endif %}page={{ objects.paginator.num_pages }}">
|
||||
{% trans 'last' %} »
|
||||
</a>
|
||||
{% endif %}
|
||||
</p>
|
38
src/c3nav/site/templates/site/report_list.html
Normal file
38
src/c3nav/site/templates/site/report_list.html
Normal file
|
@ -0,0 +1,38 @@
|
|||
{% extends 'site/base.html' %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block content %}
|
||||
<main class="account">
|
||||
{% include 'site/fragment_messages.html' %}
|
||||
{% if filter == 'open' %}
|
||||
<h2>{% trans 'Open reports' %}</h2>
|
||||
<p><a href="{% url 'site.report_list' filter='all' %}">{% trans 'show all reports' %}</a></p>
|
||||
{% else %}
|
||||
<h2>{% trans 'All reports' %}</h2>
|
||||
<p><a href="{% url 'site.report_list' filter='all' %}">{% trans 'show open reports' %}</a></p>
|
||||
{% endif %}
|
||||
|
||||
{% include 'site/fragment_pagination.html' with objects=reports %}
|
||||
<table>
|
||||
<tr>
|
||||
<th>{% trans 'ID' %}</th>
|
||||
<th>{% trans 'Title' %}</th>
|
||||
<th>{% trans 'State' %}</th>
|
||||
</tr>
|
||||
{% for report in reports %}
|
||||
<tr>
|
||||
<td>{{ report.pk }}</td>
|
||||
<td><a href="{% url 'site.report_detail' pk=report.pk %}">{{ report.title }}</a></td>
|
||||
<td>
|
||||
{% if report.open %}
|
||||
<strong class="green">{% trans 'open' %}</strong>
|
||||
{% else %}
|
||||
<strong class="red">{% trans 'closed' %}</strong>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% include 'site/fragment_pagination.html' with objects=reports %}
|
||||
</main>
|
||||
{% endblock %}
|
|
@ -1,7 +1,8 @@
|
|||
from django.conf.urls import url
|
||||
|
||||
from c3nav.site.views import (about_view, access_redeem_view, account_view, change_password_view, choose_language,
|
||||
login_view, logout_view, map_index, qr_code, register_view, report_create, report_detail)
|
||||
login_view, logout_view, map_index, qr_code, register_view, report_create, report_detail,
|
||||
report_list)
|
||||
|
||||
slug = r'(?P<slug>[a-z0-9-_.:]+)'
|
||||
coordinates = r'(?P<coordinates>[a-z0-9-_:]+:-?\d+(\.\d+)?:-?\d+(\.\d+)?)'
|
||||
|
@ -26,9 +27,9 @@ urlpatterns = [
|
|||
url(r'^access/(?P<token>[^/]+)$', access_redeem_view, name='site.access.redeem'),
|
||||
url(r'^lang/$', choose_language, name='site.language'),
|
||||
url(r'^about/$', about_view, name='site.about'),
|
||||
url(r'^report/$', about_view, name='site.about'),
|
||||
url(r'^report/(?P<pk>\d+)/$', report_detail, name='site.report_detail'),
|
||||
url(r'^report/(?P<pk>\d+)/(?P<secret>[^/]+)/$', report_detail, name='site.report_detail'),
|
||||
url(r'^reports/(?P<filter>(open|all))/$', report_list, name='site.report_list'),
|
||||
url(r'^reports/(?P<pk>\d+)/$', report_detail, name='site.report_detail'),
|
||||
url(r'^reports/(?P<pk>\d+)/(?P<secret>[^/]+)/$', report_detail, name='site.report_detail'),
|
||||
url(r'^report/l/%s/$' % coordinates, report_create, name='site.report_create'),
|
||||
url(r'^report/l/(?P<location>\d+)/$', report_create, name='site.report_create'),
|
||||
url(r'^report/r/(?P<origin>[^/]+)/(?P<destination>[^/]+)/(?P<options>[^/]+)/$',
|
||||
|
|
|
@ -10,6 +10,7 @@ from django.contrib.auth.decorators import login_required
|
|||
from django.contrib.auth.forms import AuthenticationForm, PasswordChangeForm, UserCreationForm
|
||||
from django.contrib.auth.views import redirect_to_login
|
||||
from django.core.exceptions import ObjectDoesNotExist, SuspiciousOperation
|
||||
from django.core.paginator import Paginator
|
||||
from django.core.serializers.json import DjangoJSONEncoder
|
||||
from django.db import transaction
|
||||
from django.http import Http404, HttpResponse, HttpResponseBadRequest
|
||||
|
@ -423,6 +424,22 @@ def report_create(request, coordinates=None, location=None, origin=None, destina
|
|||
})
|
||||
|
||||
|
||||
def report_list(request, filter):
|
||||
page = request.GET.get('page', 1)
|
||||
|
||||
queryset = Report.qs_for_request(request).order_by('-created').select_related('author')
|
||||
if filter == 'open':
|
||||
queryset.filter(open=True)
|
||||
|
||||
paginator = Paginator(queryset, 20)
|
||||
reports = paginator.page(page)
|
||||
|
||||
return render(request, 'site/report_list.html', {
|
||||
'filter': filter,
|
||||
'reports': reports,
|
||||
})
|
||||
|
||||
|
||||
def report_detail(request, pk, secret=None):
|
||||
if secret:
|
||||
qs = Report.objects.filter(secret=secret)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue