Browse Source

Fix ordering bug

devel
bashmak 8 years ago
parent
commit
b418b0c812
  1. 17
      abonapp/templates/abonapp/peoples.html
  2. 16
      abonapp/views.py
  3. 2
      djing/global_base_views.py

17
abonapp/templates/abonapp/peoples.html

@ -63,18 +63,19 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{% with can_ch_trf=perms.tariff_app.change_tariff can_del_trf=perms.abonapp.delete_abon %}
{% with can_ch_trf=perms.tariff_app.change_tariff can_del_abon=perms.abonapp.delete_abon %}
{% for human in peoples %} {% for human in peoples %}
{% if human.is_active %} {% if human.is_active %}
<tr> <tr>
{% else %}
{% else %}
<tr class="danger"> <tr class="danger">
{% endif %} {% endif %}
<td>{% if human.stat_cache and human.stat_cache.is_online %} <td>{% if human.stat_cache and human.stat_cache.is_online %}
<span class="glyphicon glyphicon-ok text-success"></span> <span class="glyphicon glyphicon-ok text-success"></span>
{% else %} {% else %}
<span class="glyphicon glyphicon-remove-sign text-muted"></span> <span class="glyphicon glyphicon-remove-sign text-muted"></span>
{% endif %}</td>
{% endif %}
</td>
<td> <td>
<a href="{% url 'abonapp:abon_home' human.group.pk human.pk %}">{{ human.username }}</a> <a href="{% url 'abonapp:abon_home' human.group.pk human.pk %}">{{ human.username }}</a>
</td> </td>
@ -93,11 +94,11 @@
<td>{{ human.house|default:'-' }}</td> <td>{{ human.house|default:'-' }}</td>
<td><a href="tel:{{ human.telephone }}">{{ human.telephone }}</a></td> <td><a href="tel:{{ human.telephone }}">{{ human.telephone }}</a></td>
<td> <td>
{% if human.active_tariff %}
{% if perms.tariff_app.change_tariff %}
<a href="{% url 'tarifs:edit' human.active_tariff.tariff.pk %}">{{ human.active_tariff.tariff.title }}</a>
{% if human.current_tariff %}
{% if can_ch_trf %}
<a href="{% url 'tarifs:edit' human.current_tariff.tariff.pk %}">{{ human.current_tariff.tariff.title }}</a>
{% else %} {% else %}
{{ human.active_tariff.tariff.title }}
{{ human.current_tariff.tariff.title }}
{% endif %} {% endif %}
{% else %}&mdash;&mdash;&mdash; {% else %}&mdash;&mdash;&mdash;
{% endif %} {% endif %}
@ -108,7 +109,7 @@
{% endfor %} {% endfor %}
</td> </td>
<td class="hidden-xs"> <td class="hidden-xs">
{% if can_del_trf %}
{% if can_del_abon %}
<a href="{% url 'abonapp:del_abon' %}?id={{ human.pk }}" class="btn btn-danger btn-sm"> <a href="{% url 'abonapp:del_abon' %}?id={{ human.pk }}" class="btn btn-danger btn-sm">
<span class="glyphicon glyphicon-remove"></span> <span class="glyphicon glyphicon-remove"></span>
</a> </a>

16
abonapp/views.py

@ -6,7 +6,7 @@ from django.db import IntegrityError, ProgrammingError, transaction
from django.db.models import Count, Q, signals from django.db.models import Count, Q, signals
from django.shortcuts import render, redirect, get_object_or_404, resolve_url from django.shortcuts import render, redirect, get_object_or_404, resolve_url
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.http import HttpResponse, HttpResponseBadRequest
from django.http import HttpResponse, Http404
from django.contrib import messages from django.contrib import messages
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from django.utils.decorators import method_decorator from django.utils.decorators import method_decorator
@ -33,7 +33,7 @@ PAGINATION_ITEMS_PER_PAGE = getattr(settings, 'PAGINATION_ITEMS_PER_PAGE', 10)
@method_decorator([login_required, mydefs.only_admins], name='dispatch') @method_decorator([login_required, mydefs.only_admins], name='dispatch')
class BaseAbonListView(ListView, OrderingMixin):
class BaseAbonListView(OrderingMixin, ListView):
paginate_by = PAGINATION_ITEMS_PER_PAGE paginate_by = PAGINATION_ITEMS_PER_PAGE
http_method_names = ['get'] http_method_names = ['get']
@ -45,7 +45,7 @@ class PeoplesListView(BaseAbonListView):
def get_queryset(self): def get_queryset(self):
street_id = mydefs.safe_int(self.request.GET.get('street')) street_id = mydefs.safe_int(self.request.GET.get('street'))
gid = mydefs.safe_int(self.kwargs.get('gid')) gid = mydefs.safe_int(self.kwargs.get('gid'))
peoples_list = models.Abon.objects.select_related('group', 'street')
peoples_list = models.Abon.objects.all()
if street_id > 0: if street_id > 0:
peoples_list = peoples_list.filter(group__pk=gid, street=street_id) peoples_list = peoples_list.filter(group__pk=gid, street=street_id)
else: else:
@ -60,13 +60,17 @@ class PeoplesListView(BaseAbonListView):
pass pass
except mydefs.LogicError as e: except mydefs.LogicError as e:
messages.warning(self.request, e) messages.warning(self.request, e)
return peoples_list
ordering = self.get_ordering()
if ordering:
if isinstance(ordering, str):
ordering = (ordering,)
peoples_list = peoples_list.order_by(*ordering)
return peoples_list.select_related('group', 'street', 'current_tariff')
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
gid = mydefs.safe_int(self.kwargs.get('gid')) gid = mydefs.safe_int(self.kwargs.get('gid'))
if gid == 0: if gid == 0:
return HttpResponseBadRequest('group id is broken')
return Http404('group id is broken')
abon_group = get_object_or_404(models.AbonGroup, pk=gid) abon_group = get_object_or_404(models.AbonGroup, pk=gid)
if not self.request.user.has_perm('abonapp.can_view_abongroup', abon_group): if not self.request.user.has_perm('abonapp.can_view_abongroup', abon_group):
raise PermissionDenied raise PermissionDenied

2
djing/global_base_views.py

@ -87,4 +87,4 @@ class OrderingMixin(object):
if direction == 'down': if direction == 'down':
dfx = '-' dfx = '-'
if order_by: if order_by:
return ["%s%s" % (dfx, order_by)]
return "%s%s" % (dfx, order_by)
Loading…
Cancel
Save