Browse Source

Kicked deprecation pagination method

devel
bashmak 8 years ago
parent
commit
8c86e5fb9d
  1. 2
      abonapp/templates/abonapp/debtors.html
  2. 2
      abonapp/templates/abonapp/dial_log.html
  3. 2
      abonapp/templates/abonapp/invoiceForPayment.html
  4. 2
      abonapp/templates/abonapp/log.html
  5. 2
      abonapp/templates/abonapp/payHistory.html
  6. 2
      abonapp/templates/abonapp/task_log.html
  7. 4
      abonapp/urls.py
  8. 8
      abonapp/urls_abon.py
  9. 164
      abonapp/views.py
  10. 2
      accounts_app/templates/accounts/perms/objects_of_type.html
  11. 4
      accounts_app/urls.py
  12. 67
      accounts_app/views.py
  13. 3
      clientsideapp/views.py
  14. 2
      devapp/templates/devapp/group_list.html
  15. 2
      devapp/urls.py
  16. 19
      devapp/views.py
  17. 2
      msg_app/templates/msg_app/conversations.html
  18. 2
      msg_app/urls.py
  19. 21
      msg_app/views.py
  20. 36
      mydefs.py
  21. 2
      tariff_app/templates/tariff_app/periodic_pays/list.html
  22. 2
      tariff_app/urls.py
  23. 14
      tariff_app/views.py
  24. 26
      templates/toolbar_page.html

2
abonapp/templates/abonapp/debtors.html

@ -47,6 +47,6 @@
</table>
</div>
{% include 'toolbar_page.html' with pag=peoples %}
{% include 'pagination.html' %}
{% endblock %}

2
abonapp/templates/abonapp/dial_log.html

@ -42,6 +42,6 @@
</table>
{% include 'toolbar_page.html' with pag=logs %}
{% include 'pagination.html' %}
{% endblock %}

2
abonapp/templates/abonapp/invoiceForPayment.html

@ -67,6 +67,6 @@
</table>
</div>
{% include 'toolbar_page.html' with pag=invoices %}
{% include 'pagination.html' %}
{% endblock %}

2
abonapp/templates/abonapp/log.html

@ -51,6 +51,6 @@
</table>
</div>
{% include 'toolbar_page.html' with pag=logs %}
{% include 'pagination.html' %}
{% endblock %}

2
abonapp/templates/abonapp/payHistory.html

@ -53,5 +53,5 @@
</table>
{% include 'toolbar_page.html' with pag=pay_history %}
{% include 'pagination.html' %}
{% endblock %}

2
abonapp/templates/abonapp/task_log.html

@ -44,5 +44,5 @@
</tfoot>
</table>
{% include 'toolbar_page.html' with pag=tasks %}
{% include 'pagination.html' %}
{% endblock %}

4
abonapp/urls.py

@ -15,13 +15,13 @@ urlpatterns = [
url(r'^(?P<gid>\d+)/', include('abonapp.urls_abon')),
url(r'^log$', views.log_page, name='log'),
url(r'^log$', views.LogListView.as_view(), name='log'),
url(r'^del$', views.del_abon, name='del_abon'),
url(r'^pay$', views.terminal_pay, name='terminal_pay'),
url(r'^debtors$', views.debtors, name='debtors'),
url(r'^debtors$', views.DebtorsListView.as_view(), name='debtors'),
url(r'^ping$', views.abon_ping, name='ping'),

8
abonapp/urls_abon.py

@ -15,14 +15,14 @@ urlpatterns = [
url(r'^(?P<uid>\d+)/services$', views.abon_services, name='abon_services'),
url(r'^(?P<uid>\d+)/amount', views.abonamount, name='abon_amount'),
url(r'^(?P<uid>\d+)/debts', views.invoice_for_payment, name='abon_debts'),
url(r'^(?P<uid>\d+)/pay', views.pay_history, name='abon_phistory'),
url(r'^(?P<uid>\d+)/debts', views.DebtsListView.as_view(), name='abon_debts'),
url(r'^(?P<uid>\d+)/pay', views.PayHistoryListView.as_view(), name='abon_phistory'),
url(r'^(?P<uid>\d+)/addinvoice$', views.add_invoice, name='add_invoice'),
url(r'^(?P<uid>\d+)/pick$', views.pick_tariff, name='pick_tariff'),
url(r'^(?P<uid>\d+)/passport_view$', views.passport_view, name='passport_view'),
url(r'^(?P<uid>\d+)/chart$', views.charts, name='charts'),
url(r'^(?P<uid>\d+)/dials$', views.dials, name='dials'),
url(r'^(?P<uid>\d+)/dials$', views.DialsListView.as_view(), name='dials'),
url(r'^(?P<uid>\d+)/reset_ip$', views.reset_ip, name='reset_ip'),
url(r'^(?P<uid>\d+)/extra_field$', views.make_extra_field, name='extra_field'),
url(r'^(?P<uid>\d+)/extra_field/(?P<fid>\d+)/delete$', views.extra_field_delete, name='extra_field_delete'),
@ -34,7 +34,7 @@ urlpatterns = [
url(r'^(?P<uid>\d+)/dev/$', views.dev, name='dev'),
url(r'^(?P<uid>\d+)/clear_dev/$', views.clear_dev, name='clear_dev'),
url(r'^(?P<uid>\d+)/task_log$', views.task_log, name='task_log'),
url(r'^(?P<uid>\d+)/task_log$', views.TaskLogListView.as_view(), name='task_log'),
url(r'^(?P<uid>\d+)/user_dev$', views.save_user_dev_port, name='save_user_dev_port'),
url(r'^(?P<uid>\d+)/tel$', views.tels, name='telephones'),

164
abonapp/views.py

@ -230,32 +230,39 @@ def abonamount(request, gid, uid):
}, request=request)
@login_required
@mydefs.only_admins
@permission_required('abonapp.can_view_abongroup', (models.AbonGroup, 'pk', 'gid'))
def invoice_for_payment(request, gid, uid):
abon = get_object_or_404(models.Abon, pk=uid)
invoices = models.InvoiceForPayment.objects.filter(abon=abon)
invoices = mydefs.pag_mn(request, invoices)
return render(request, 'abonapp/invoiceForPayment.html', {
'invoices': invoices,
'abon_group': abon.group,
'abon': abon
})
@method_decorator(permission_required('abonapp.can_view_abongroup', (models.AbonGroup, 'pk', 'gid')), name='dispatch')
class DebtsListView(BaseAbonListView):
context_object_name = 'invoices'
template_name = 'abonapp/invoiceForPayment.html'
def get_queryset(self):
abon = get_object_or_404(models.Abon, pk=self.kwargs.get('uid'))
self.abon = abon
return models.InvoiceForPayment.objects.filter(abon=abon)
@login_required
@mydefs.only_admins
@permission_required('abonapp.can_view_abongroup', (models.AbonGroup, 'pk', 'gid'))
def pay_history(request, gid, uid):
abon = get_object_or_404(models.Abon, pk=uid)
pay_history = models.AbonLog.objects.filter(abon=abon).order_by('-id')
pay_history = mydefs.pag_mn(request, pay_history)
return render(request, 'abonapp/payHistory.html', {
'pay_history': pay_history,
'abon_group': abon.group,
'abon': abon
})
def get_context_data(self, **kwargs):
context = super(DebtsListView, self).get_context_data(**kwargs)
context['abon_group'] = self.abon.group
context['abon'] = self.abon
return context
@method_decorator(permission_required('abonapp.can_view_abongroup', (models.AbonGroup, 'pk', 'gid')), name='dispatch')
class PayHistoryListView(BaseAbonListView):
context_object_name = 'pay_history'
template_name = 'abonapp/payHistory.html'
def get_queryset(self):
abon = get_object_or_404(models.Abon, pk=self.kwargs.get('uid'))
self.abon = abon
pay_history = models.AbonLog.objects.filter(abon=abon).order_by('-id')
return pay_history
def get_context_data(self, **kwargs):
context = super(PayHistoryListView, self).get_context_data(**kwargs)
context['abon_group'] = self.abon.group
context['abon'] = self.abon
return context
@login_required
@ -447,36 +454,44 @@ def unsubscribe_service(request, gid, uid, abon_tariff_id):
return redirect('abonapp:abon_services', gid=gid, uid=uid)
@login_required
@permission_required('abonapp.can_view_abonlog')
def log_page(request):
logs = models.AbonLog.objects.all()
logs = mydefs.pag_mn(request, logs)
return render(request, 'abonapp/log.html', {
'logs': logs
})
@method_decorator(login_required, name='dispatch')
@method_decorator(permission_required('abonapp.can_view_abonlog'), name='dispatch')
class LogListView(ListView):
paginate_by = PAGINATION_ITEMS_PER_PAGE
http_method_names = ['get']
context_object_name = 'logs'
template_name = 'abonapp/log.html'
model = models.AbonLog
@login_required
@permission_required('abonapp.can_view_invoiceforpayment')
def debtors(request):
invs = models.InvoiceForPayment.objects.filter(status=True)
invs = mydefs.pag_mn(request, invs)
return render(request, 'abonapp/debtors.html', {
'invoices': invs
})
@method_decorator(login_required, name='dispatch')
@method_decorator(permission_required('abonapp.can_view_invoiceforpayment'), name='dispatch')
class DebtorsListView(ListView):
paginate_by = PAGINATION_ITEMS_PER_PAGE
http_method_names = ['get']
context_object_name = 'invoices'
template_name = 'abonapp/debtors.html'
queryset = models.InvoiceForPayment.objects.filter(status=True)
@login_required
@permission_required('abonapp.can_view_abongroup', (models.AbonGroup, 'pk', 'gid'))
def task_log(request, gid, uid):
abon = get_object_or_404(models.Abon, pk=uid)
tasks = Task.objects.filter(abon=abon)
return render(request, 'abonapp/task_log.html', {
'tasks': tasks,
'abon_group': get_object_or_404(models.AbonGroup, pk=gid),
'abon': abon
})
@method_decorator(login_required, name='dispatch')
@method_decorator(permission_required('abonapp.can_view_abongroup', (models.AbonGroup, 'pk', 'gid')), name='dispatch')
class TaskLogListView(ListView):
paginate_by = PAGINATION_ITEMS_PER_PAGE
http_method_names = ['get']
context_object_name = 'tasks'
template_name = 'abonapp/task_log.html'
def get_queryset(self):
abon = get_object_or_404(models.Abon, pk=self.kwargs.get('uid'))
self.abon = abon
return Task.objects.filter(abon=abon)
def get_context_data(self, **kwargs):
context = super(TaskLogListView, self).get_context_data(**kwargs)
context['abon_group'] = self.abon.group
context['abon'] = self.abon
return context
@login_required
@ -728,27 +743,34 @@ def abon_ping(request):
}))
@login_required
@mydefs.only_admins
def dials(request, gid, uid):
abon = get_object_or_404(models.Abon, pk=uid)
if not request.user.has_perm('abonapp.can_view_abongroup', abon.group):
raise PermissionDenied
if hasattr(abon.group, 'pk') and abon.group.pk != int(gid):
return redirect('abonapp:dials', abon.group.pk, abon.pk)
if abon.telephone is not None and abon.telephone != '':
tel = abon.telephone.replace('+', '')
logs = AsteriskCDR.objects.filter(
Q(src__contains=tel) | Q(dst__contains=tel)
)
logs = mydefs.pag_mn(request, logs)
else:
logs = None
return render(request, 'abonapp/dial_log.html', {
'logs': logs,
'abon_group': get_object_or_404(models.AbonGroup, pk=gid),
'abon': abon
})
class DialsListView(BaseAbonListView):
context_object_name = 'logs'
template_name = 'abonapp/dial_log.html'
def get_queryset(self):
abon = get_object_or_404(models.Abon, pk=self.kwargs.get('uid'))
if not self.request.user.has_perm('abonapp.can_view_abongroup', abon.group):
raise PermissionDenied
self.abon = abon
if abon.telephone is not None and abon.telephone != '':
tel = abon.telephone.replace('+', '')
logs = AsteriskCDR.objects.filter(
Q(src__contains=tel) | Q(dst__contains=tel)
)
return logs
else:
return AsteriskCDR.objects.empty()
def get_context_data(self, **kwargs):
context = super(DialsListView, self).get_context_data(**kwargs)
context['abon_group'] = get_object_or_404(models.AbonGroup, pk=self.kwargs.get('gid'))
context['abon'] = self.abon
return context
def render_to_response(self, context, **response_kwargs):
if hasattr(self.abon.group, 'pk') and self.abon.group.pk != int(self.kwargs.get('gid')):
return redirect('abonapp:dials', self.abon.group.pk, self.abon.pk)
return super(DialsListView, self).render_to_response(context, **response_kwargs)
@login_required

2
accounts_app/templates/accounts/perms/objects_of_type.html

@ -29,6 +29,6 @@
</table>
</div>
{% include 'toolbar_page.html' with pag=objects %}
{% include 'pagination.html' %}
{% endblock %}

4
accounts_app/urls.py

@ -13,7 +13,7 @@ urlpatterns = [
url(r'^me$', views.profile_show, name='profile'),
url(r'^$', views.acc_list, name='accounts_list'),
url(r'^$', views.AccountsListView.as_view(), name='accounts_list'),
url(r'^add$', views.create_profile, name='create_profile'),
@ -22,7 +22,7 @@ urlpatterns = [
url(r'^(?P<uid>\d+)$', views.profile_show, name='other_profile'),
url(r'^(?P<uid>\d+)/perms$', views.perms, name='setup_perms'),
url(r'^(?P<uid>\d+)/perms/(?P<klass_name>[a-z_]+\.[a-zA-Z_]+)$', views.perms_klasses, name='perms_klasses'),
url(r'^(?P<uid>\d+)/perms/(?P<klass_name>[a-z_]+\.[a-zA-Z_]+)$', views.PermissionClassListView.as_view(), name='perms_klasses'),
url(r'^(?P<uid>\d+)/perms/(?P<klass_name>[a-z_]+\.[a-zA-Z_]+)/(?P<obj_id>\d+)$', views.perms_edit, name='perms_edit'),
url(r'^(?P<uid>\d+)/chgroup$', views.chgroup, name='profile_setup_group'),
url(r'^(?P<uid>\d+)/del$', views.delete_profile, name='delete_profile'),

67
accounts_app/views.py

@ -5,7 +5,11 @@ from django.core.exceptions import PermissionDenied
from django.urls import NoReverseMatch
from django.shortcuts import render, redirect, get_object_or_404
from django.contrib import messages
from django.utils.decorators import method_decorator
from django.utils.translation import ugettext as _
from django.views.generic import ListView
from django.conf import settings
from abonapp.models import AbonGroup
from photo_app.models import Photo
@ -15,6 +19,11 @@ from guardian.decorators import permission_required_or_403 as permission_require
from guardian.shortcuts import get_objects_for_user, assign_perm, remove_perm
class BaseAccListView(ListView):
http_method_names = ['get']
paginate_by = getattr(settings, 'PAGINATION_ITEMS_PER_PAGE', 10)
@login_required
@mydefs.only_admins
def home(request):
@ -208,15 +217,15 @@ def delete_profile(request, uid):
return redirect('acc_app:accounts_list')
@login_required
@mydefs.only_admins
def acc_list(request):
users = UserProfile.objects.filter(is_admin=True).exclude(pk=request.user.pk)
users = get_objects_for_user(request.user, 'accounts_app.can_view_userprofile', users)
users = mydefs.pag_mn(request, users)
return render(request, 'accounts/acc_list.html', {
'users': users
})
@method_decorator([login_required, mydefs.only_admins], name='dispatch')
class AccountsListView(BaseAccListView):
template_name = 'accounts/acc_list.html'
context_object_name = 'users'
def get_queryset(self):
users = UserProfile.objects.filter(is_admin=True).exclude(pk=self.request.user.pk)
users = get_objects_for_user(self.request.user, 'accounts_app.can_view_userprofile', users)
return users
@login_required
@ -235,24 +244,32 @@ def perms(request, uid):
})
@login_required
def perms_klasses(request, uid, klass_name):
if not request.user.is_superuser:
raise PermissionDenied
from django.apps import apps
userprofile = get_object_or_404(UserProfile, pk=uid)
app_label, model_name = klass_name.split('.', 1)
klass = apps.get_model(app_label, model_name)
@method_decorator(login_required, name='dispatch')
class PermissionClassListView(BaseAccListView):
template_name = 'accounts/perms/objects_of_type.html'
context_object_name = 'objects'
objects = klass.objects.all()
objects = mydefs.pag_mn(request, objects)
def get(self, request, *args, **kwargs):
if not request.user.is_superuser:
raise PermissionDenied
return super(PermissionClassListView, self).get(request, *args, **kwargs)
def get_context_data(self, **kwargs):
context = super(PermissionClassListView, self).get_context_data(**kwargs)
context['klass'] = self.kwargs.get('klass_name')
context['klass_name'] = self.required_klass_name._meta.verbose_name
context['userprofile'] = get_object_or_404(UserProfile, pk=self.kwargs.get('uid'))
return context
def get_queryset(self):
from django.apps import apps
klass_name = self.kwargs.get('klass_name')
app_label, model_name = klass_name.split('.', 1)
klass = apps.get_model(app_label, model_name)
objects = klass.objects.all()
self.required_klass_name = klass
return objects
return render(request, 'accounts/perms/objects_of_type.html', {
'userprofile': userprofile,
'klass': klass_name,
'klass_name': klass._meta.verbose_name,
'objects': objects
})
@login_required
def perms_edit(request, uid, klass_name, obj_id):

3
clientsideapp/views.py

@ -8,7 +8,7 @@ from django.utils.translation import gettext_lazy as _
from abonapp.models import AbonLog, InvoiceForPayment, Abon
from tariff_app.models import Tariff
from mydefs import pag_mn, LogicError
from mydefs import LogicError
from agent import NasFailedResult, NasNetworkError
@ -20,7 +20,6 @@ def home(request):
@login_required
def pays(request):
pay_history = AbonLog.objects.filter(abon=request.user).order_by('-id')
pay_history = pag_mn(request, pay_history)
return render(request, 'clientsideapp/pays.html', {
'pay_history': pay_history
})

2
devapp/templates/devapp/group_list.html

@ -46,6 +46,6 @@
</table>
</div>
{% include 'toolbar_page.html' with pag=groups %}
{% include 'pagination.html' %}
{% endblock %}

2
devapp/urls.py

@ -4,7 +4,7 @@ from . import views
app_name = 'devapp'
urlpatterns = [
url(r'^$', views.group_list, name='group_list'),
url(r'^$', views.GroupsListView.as_view(), name='group_list'),
url(r'^devices_without_groups$', views.DevicesWithoutGroupsListView.as_view(), name='devices_null_group'),
url(r'^fix_onu/$', views.fix_onu, name='fix_onu'),
url(r'^(?P<group_id>\d+)$', views.DevicesListView.as_view(), name='devs'),

19
devapp/views.py

@ -404,14 +404,17 @@ def toggle_port(request, device_id, portid, status=0):
return redirect('devapp:view', dev.user_group.pk if dev.user_group is not None else 0, device_id)
@login_required
@only_admins
def group_list(request):
groups = AbonGroup.objects.all().order_by('title')
groups = get_objects_for_user(request.user, 'abonapp.can_view_abongroup', klass=groups, accept_global_perms=False)
return render(request, 'devapp/group_list.html', {
'groups': groups
})
@method_decorator([login_required, only_admins], name='dispatch')
class GroupsListView(BaseDeviceListView):
context_object_name = 'groups'
template_name = 'devapp/group_list.html'
model = AbonGroup
def get_queryset(self):
groups = super(GroupsListView, self).get_queryset()
groups = get_objects_for_user(self.request.user, 'abonapp.can_view_abongroup', klass=groups,
accept_global_perms=False)
return groups
@login_required

2
msg_app/templates/msg_app/conversations.html

@ -57,6 +57,6 @@
</div>
</div>
{% include 'toolbar_page.html' with pag=conversations %}
{% include 'pagination.html' %}
{% endblock %}

2
msg_app/urls.py

@ -6,7 +6,7 @@ app_name = 'msg_app'
urlpatterns = [
url(r'^$', views.home, name='home'),
url(r'^$', views.ConversationsListView.as_view(), name='home'),
url(r'^new$', views.new_conversation, name='new_conversation'),
url(r'^(?P<conv_id>\d+)/$', views.to_conversation, name='to_conversation'),
url(r'^(?P<conv_id>\d+)/(?P<msg_id>\d+)/del$', views.remove_msg, name='remove_msg'),

21
msg_app/views.py

@ -3,24 +3,26 @@ from django.contrib.auth.decorators import login_required
from django.contrib.gis.shortcuts import render_to_text
from django.core.exceptions import PermissionDenied
from django.http import HttpResponse
from django.utils.decorators import method_decorator
from django.utils.translation import gettext_lazy as _
from django.contrib import messages
from django.shortcuts import render, redirect, get_object_or_404
from django.views.generic import ListView
from chatbot.models import MessageQueue
from mydefs import pag_mn
from .models import Conversation, MessageError, Message
from .forms import ConversationForm, MessageForm
@login_required
def home(request):
# TODO: optimise queries
conversations = Conversation.objects.fetch(request.user)
conversations = pag_mn(request, conversations, 8)
return render(request, 'msg_app/conversations.html', {
'conversations': conversations
})
@method_decorator(login_required, name='dispatch')
class ConversationsListView(ListView):
context_object_name = 'conversations'
template_name = 'msg_app/conversations.html'
def get_queryset(self):
# TODO: optimise queries
return Conversation.objects.fetch(self.request.user)
@login_required
@ -90,4 +92,3 @@ def check_news(request):
else:
r = {'auth': False}
return HttpResponse(dumps(r))

36
mydefs.py

@ -8,15 +8,16 @@ import os
from functools import wraps
from django.http import HttpResponse, Http404, HttpResponseRedirect
from django.shortcuts import redirect
from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage
from django.db import models
from django.conf import settings
PAGINATION_ITEMS_PER_PAGE = getattr(settings, 'PAGINATION_ITEMS_PER_PAGE', 10)
DEBUG = getattr(settings, 'DEBUG', False)
ip_addr_regex = r'^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$'
ip_addr_regex = r'^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.' \
r'(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.' \
r'(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.' \
r'(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$'
def ip2int(addr):
@ -61,19 +62,6 @@ def res_error(request, text):
raise Http404(text)
# Pagination
def pag_mn(request, objs, count_per_page=PAGINATION_ITEMS_PER_PAGE):
page = request.GET.get('p')
pgn = Paginator(objs, count_per_page)
try:
objs = pgn.page(page)
except PageNotAnInteger:
objs = pgn.page(1)
except EmptyPage:
objs = pgn.page(pgn.num_pages)
return objs
class MyGenericIPAddressField(models.GenericIPAddressField):
description = "Int32 notation ip address"
@ -143,7 +131,6 @@ def ping(hostname, count=1):
# Русифицированный вывод timedelta
class RuTimedelta(timedelta):
def __new__(cls, tm):
if isinstance(tm, timedelta):
return timedelta.__new__(
@ -154,19 +141,19 @@ class RuTimedelta(timedelta):
)
def __str__(self):
#hours, remainder = divmod(self.seconds, 3600)
#minutes, seconds = divmod(remainder, 60)
#text_date = "%d:%d" % (
# hours, remainder = divmod(self.seconds, 3600)
# minutes, seconds = divmod(remainder, 60)
# text_date = "%d:%d" % (
# hours,
# minutes
#)
# )
if self.days > 1:
ru_days = 'дней'
if 5 > self.days > 1:
ru_days = 'дня'
elif self.days == 1:
ru_days = 'день'
#text_date = '%d %s %s' % (self.days, ru_days, text_date)
# text_date = '%d %s %s' % (self.days, ru_days, text_date)
text_date = '%d %s' % (self.days, ru_days)
else:
text_date = ''
@ -179,17 +166,18 @@ def require_ssl(view):
the page.
from: https://gist.github.com/ckinsey/9709984
"""
@wraps(view)
def wrapper(request, *args, **kwargs):
if not DEBUG and not request.is_secure():
target_url = "https://" + request.META['HTTP_HOST'] + request.path_info
return HttpResponseRedirect(target_url)
return view(request, *args, **kwargs)
return wrapper
class MultipleException(Exception):
def __init__(self, err_list):
if not isinstance(err_list, list):
raise TypeError
@ -202,8 +190,10 @@ class LogicError(Exception):
def singleton(class_):
instances = {}
def getinstance(*args, **kwargs):
if class_ not in instances:
instances[class_] = class_(*args, **kwargs)
return instances[class_]
return getinstance

2
tariff_app/templates/tariff_app/periodic_pays/list.html

@ -57,6 +57,6 @@
</table>
</div>
{% include 'toolbar_page.html' with pag=pays %}
{% include 'pagination.html' %}
{% endblock %}

2
tariff_app/urls.py

@ -10,7 +10,7 @@ urlpatterns = [
url(r'^add$', views.edit_tarif, name='add'),
url(r'^del(?P<tid>\d+)$', views.del_tarif, name='del'),
url(r'^periodic_pays$', views.periodic_pays, name='periodic_pays'),
url(r'^periodic_pays$', views.PeriodicPaysListView.as_view(), name='periodic_pays'),
url(r'^periodic_pays/add$', views.periodic_pay, name='periodic_pay_add'),
url(r'^periodic_pays/(?P<pay_id>\d+)$', views.periodic_pay, name='periodic_pay_edit')
]

14
tariff_app/views.py

@ -74,14 +74,12 @@ def del_tarif(request, tid):
return render_to_text('tariff_app/modal_del_warning.html', {'tid': tid}, request=request)
@login_required
@permission_required('tariff_app.can_view_periodic_pay')
def periodic_pays(request):
pays = PeriodicPay.objects.all()
pays = mydefs.pag_mn(request, pays)
return render(request, 'tariff_app/periodic_pays/list.html', {
'pays': pays
})
@method_decorator(login_required, name='dispatch')
@method_decorator(permission_required('tariff_app.can_view_periodic_pay'), name='dispatch')
class PeriodicPaysListView(BaseServiceListView):
context_object_name = 'pays'
model = PeriodicPay
template_name = 'tariff_app/periodic_pays/list.html'
@login_required

26
templates/toolbar_page.html

@ -1,26 +0,0 @@
{% if pag.paginator.num_pages > 1 %}
{% load dpagination %}
<div class="row">
<div class="col-sm-4 col-sm-offset-4">
<ul class="pagination">
{% if pag.number == 1 %}
<li class="disabled"><a href="#">&laquo;</a></li>
{% else %}
<li><a href="?{% url_page_replace request 'p' 1 %}">&laquo;</a></li>
{% endif %}
{% if pag.has_previous %}
<li><a href="?{% url_page_replace request 'p' pag.previous_page_number %}">{{ pag.previous_page_number }}</a></li>
{% endif %}
<li class="disabled"><a href="#">{{ pag.number }}</a></li>
{% if pag.has_next %}
<li><a href="?{% url_page_replace request 'p' pag.next_page_number %}">{{ pag.next_page_number }}</a></li>
{% endif %}
{% if pag.number == pag.paginator.num_pages %}
<li class="disabled"><a href="#">&raquo;</a></li>
{% else %}
<li><a href="?{% url_page_replace request 'p' pag.paginator.num_pages %}">&raquo;</a></li>
{% endif %}
</ul>
</div>
</div>
{% endif %}
Loading…
Cancel
Save