diff --git a/abonapp/templates/abonapp/group_list.html b/abonapp/templates/abonapp/group_list.html
index ccf7721..761efec 100644
--- a/abonapp/templates/abonapp/group_list.html
+++ b/abonapp/templates/abonapp/group_list.html
@@ -2,7 +2,6 @@
{% load i18n %}
{% block main %}
-
- {% trans 'User groups' %}
@@ -18,7 +17,7 @@
| # |
-
+
{% trans 'Group title' %}
{% if order_by == 'title' %}{% endif %}
@@ -84,6 +83,6 @@
- {% include 'toolbar_page.html' with pag=groups %}
+ {% include 'toolbar_page_cbv.html' %}
{% endblock %}
diff --git a/abonapp/urls.py b/abonapp/urls.py
index f0da48a..5f3f9f4 100644
--- a/abonapp/urls.py
+++ b/abonapp/urls.py
@@ -7,7 +7,7 @@ app_name = 'abonapp'
urlpatterns = [
- url(r'^$', views.grouplist, name='group_list'),
+ url(r'^$', views.GroupListView.as_view(), name='group_list'),
url(r'^addgroup$', views.addgroup, name='add_group'),
url(r'^delgroup', views.delgroup, name='del_group'),
diff --git a/abonapp/views.py b/abonapp/views.py
index 65b68b4..b651e57 100644
--- a/abonapp/views.py
+++ b/abonapp/views.py
@@ -33,12 +33,15 @@ PAGINATION_ITEMS_PER_PAGE = getattr(settings, 'PAGINATION_ITEMS_PER_PAGE', 10)
@method_decorator([login_required, mydefs.only_admins], name='dispatch')
-class PeoplesListView(ListView, OrderingMixin):
- context_object_name = 'peoples'
- template_name = 'abonapp/peoples.html'
+class BaseAbonListView(ListView, OrderingMixin):
paginate_by = PAGINATION_ITEMS_PER_PAGE
http_method_names = ['get']
+
+class PeoplesListView(BaseAbonListView):
+ context_object_name = 'peoples'
+ template_name = 'abonapp/peoples.html'
+
def get_queryset(self):
street_id = mydefs.safe_int(self.request.GET.get('street'))
gid = mydefs.safe_int(self.kwargs.get('gid'))
@@ -102,24 +105,16 @@ def addgroup(request):
})
-@login_required
-@mydefs.only_admins
-def grouplist(request):
- groups = models.AbonGroup.objects.annotate(usercount=Count('abon')).order_by('title')
- groups = get_objects_for_user(request.user, 'abonapp.can_view_abongroup', klass=groups, accept_global_perms=False)
-
- # фильтр
- directory, field = mydefs.order_helper(request)
- if field:
- groups = groups.order_by(field)
+class GroupListView(BaseAbonListView):
+ context_object_name = 'groups'
+ template_name = 'abonapp/group_list.html'
+ queryset = models.AbonGroup.objects.annotate(usercount=Count('abon')).order_by('title')
- groups = mydefs.pag_mn(request, groups)
-
- return render(request, 'abonapp/group_list.html', {
- 'groups': groups,
- 'dir': directory,
- 'order_by': request.GET.get('order_by')
- })
+ def get_queryset(self):
+ queryset = super(GroupListView, self).get_queryset()
+ queryset = get_objects_for_user(self.request.user, 'abonapp.can_view_abongroup', klass=queryset,
+ accept_global_perms=False)
+ return queryset
@login_required
|