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. 148
      abonapp/views.py
  10. 2
      accounts_app/templates/accounts/perms/objects_of_type.html
  11. 4
      accounts_app/urls.py
  12. 57
      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. 19
      msg_app/views.py
  20. 26
      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> </table>
</div> </div>
{% include 'toolbar_page.html' with pag=peoples %}
{% include 'pagination.html' %}
{% endblock %} {% endblock %}

2
abonapp/templates/abonapp/dial_log.html

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

2
abonapp/templates/abonapp/invoiceForPayment.html

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

2
abonapp/templates/abonapp/log.html

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

2
abonapp/templates/abonapp/payHistory.html

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

2
abonapp/templates/abonapp/task_log.html

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

4
abonapp/urls.py

@ -15,13 +15,13 @@ urlpatterns = [
url(r'^(?P<gid>\d+)/', include('abonapp.urls_abon')), 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'^del$', views.del_abon, name='del_abon'),
url(r'^pay$', views.terminal_pay, name='terminal_pay'), 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'), 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+)/services$', views.abon_services, name='abon_services'),
url(r'^(?P<uid>\d+)/amount', views.abonamount, name='abon_amount'), 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+)/addinvoice$', views.add_invoice, name='add_invoice'),
url(r'^(?P<uid>\d+)/pick$', views.pick_tariff, name='pick_tariff'), 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+)/passport_view$', views.passport_view, name='passport_view'),
url(r'^(?P<uid>\d+)/chart$', views.charts, name='charts'), 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+)/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$', 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'), 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+)/dev/$', views.dev, name='dev'),
url(r'^(?P<uid>\d+)/clear_dev/$', views.clear_dev, name='clear_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+)/user_dev$', views.save_user_dev_port, name='save_user_dev_port'),
url(r'^(?P<uid>\d+)/tel$', views.tels, name='telephones'), url(r'^(?P<uid>\d+)/tel$', views.tels, name='telephones'),

148
abonapp/views.py

@ -230,32 +230,39 @@ def abonamount(request, gid, uid):
}, request=request) }, 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)
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
@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)
@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') 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
})
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 @login_required
@ -447,36 +454,44 @@ def unsubscribe_service(request, gid, uid, abon_tariff_id):
return redirect('abonapp:abon_services', gid=gid, uid=uid) 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 @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):
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 raise PermissionDenied
if hasattr(abon.group, 'pk') and abon.group.pk != int(gid):
return redirect('abonapp:dials', abon.group.pk, abon.pk)
self.abon = abon
if abon.telephone is not None and abon.telephone != '': if abon.telephone is not None and abon.telephone != '':
tel = abon.telephone.replace('+', '') tel = abon.telephone.replace('+', '')
logs = AsteriskCDR.objects.filter( logs = AsteriskCDR.objects.filter(
Q(src__contains=tel) | Q(dst__contains=tel) Q(src__contains=tel) | Q(dst__contains=tel)
) )
logs = mydefs.pag_mn(request, logs)
return logs
else: else:
logs = None
return render(request, 'abonapp/dial_log.html', {
'logs': logs,
'abon_group': get_object_or_404(models.AbonGroup, pk=gid),
'abon': abon
})
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 @login_required

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

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

4
accounts_app/urls.py

@ -13,7 +13,7 @@ urlpatterns = [
url(r'^me$', views.profile_show, name='profile'), 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'), 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+)$', views.profile_show, name='other_profile'),
url(r'^(?P<uid>\d+)/perms$', views.perms, name='setup_perms'), 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+)/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+)/chgroup$', views.chgroup, name='profile_setup_group'),
url(r'^(?P<uid>\d+)/del$', views.delete_profile, name='delete_profile'), url(r'^(?P<uid>\d+)/del$', views.delete_profile, name='delete_profile'),

57
accounts_app/views.py

@ -5,7 +5,11 @@ from django.core.exceptions import PermissionDenied
from django.urls import NoReverseMatch from django.urls import NoReverseMatch
from django.shortcuts import render, redirect, get_object_or_404 from django.shortcuts import render, redirect, get_object_or_404
from django.contrib import messages from django.contrib import messages
from django.utils.decorators import method_decorator
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
from django.views.generic import ListView
from django.conf import settings
from abonapp.models import AbonGroup from abonapp.models import AbonGroup
from photo_app.models import Photo 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 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 @login_required
@mydefs.only_admins @mydefs.only_admins
def home(request): def home(request):
@ -208,15 +217,15 @@ def delete_profile(request, uid):
return redirect('acc_app:accounts_list') 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 @login_required
@ -235,24 +244,32 @@ def perms(request, uid):
}) })
@login_required
def perms_klasses(request, uid, klass_name):
@method_decorator(login_required, name='dispatch')
class PermissionClassListView(BaseAccListView):
template_name = 'accounts/perms/objects_of_type.html'
context_object_name = 'objects'
def get(self, request, *args, **kwargs):
if not request.user.is_superuser: if not request.user.is_superuser:
raise PermissionDenied 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 from django.apps import apps
userprofile = get_object_or_404(UserProfile, pk=uid)
klass_name = self.kwargs.get('klass_name')
app_label, model_name = klass_name.split('.', 1) app_label, model_name = klass_name.split('.', 1)
klass = apps.get_model(app_label, model_name) klass = apps.get_model(app_label, model_name)
objects = klass.objects.all() objects = klass.objects.all()
objects = mydefs.pag_mn(request, objects)
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 @login_required
def perms_edit(request, uid, klass_name, obj_id): 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 abonapp.models import AbonLog, InvoiceForPayment, Abon
from tariff_app.models import Tariff from tariff_app.models import Tariff
from mydefs import pag_mn, LogicError
from mydefs import LogicError
from agent import NasFailedResult, NasNetworkError from agent import NasFailedResult, NasNetworkError
@ -20,7 +20,6 @@ def home(request):
@login_required @login_required
def pays(request): def pays(request):
pay_history = AbonLog.objects.filter(abon=request.user).order_by('-id') pay_history = AbonLog.objects.filter(abon=request.user).order_by('-id')
pay_history = pag_mn(request, pay_history)
return render(request, 'clientsideapp/pays.html', { return render(request, 'clientsideapp/pays.html', {
'pay_history': pay_history 'pay_history': pay_history
}) })

2
devapp/templates/devapp/group_list.html

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

2
devapp/urls.py

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

2
msg_app/templates/msg_app/conversations.html

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

2
msg_app/urls.py

@ -6,7 +6,7 @@ app_name = 'msg_app'
urlpatterns = [ 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'^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+)/$', views.to_conversation, name='to_conversation'),
url(r'^(?P<conv_id>\d+)/(?P<msg_id>\d+)/del$', views.remove_msg, name='remove_msg'), url(r'^(?P<conv_id>\d+)/(?P<msg_id>\d+)/del$', views.remove_msg, name='remove_msg'),

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

26
mydefs.py

@ -8,15 +8,16 @@ import os
from functools import wraps from functools import wraps
from django.http import HttpResponse, Http404, HttpResponseRedirect from django.http import HttpResponse, Http404, HttpResponseRedirect
from django.shortcuts import redirect from django.shortcuts import redirect
from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage
from django.db import models from django.db import models
from django.conf import settings from django.conf import settings
PAGINATION_ITEMS_PER_PAGE = getattr(settings, 'PAGINATION_ITEMS_PER_PAGE', 10) PAGINATION_ITEMS_PER_PAGE = getattr(settings, 'PAGINATION_ITEMS_PER_PAGE', 10)
DEBUG = getattr(settings, 'DEBUG', False) 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): def ip2int(addr):
@ -61,19 +62,6 @@ def res_error(request, text):
raise Http404(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): class MyGenericIPAddressField(models.GenericIPAddressField):
description = "Int32 notation ip address" description = "Int32 notation ip address"
@ -143,7 +131,6 @@ def ping(hostname, count=1):
# Русифицированный вывод timedelta # Русифицированный вывод timedelta
class RuTimedelta(timedelta): class RuTimedelta(timedelta):
def __new__(cls, tm): def __new__(cls, tm):
if isinstance(tm, timedelta): if isinstance(tm, timedelta):
return timedelta.__new__( return timedelta.__new__(
@ -179,17 +166,18 @@ def require_ssl(view):
the page. the page.
from: https://gist.github.com/ckinsey/9709984 from: https://gist.github.com/ckinsey/9709984
""" """
@wraps(view) @wraps(view)
def wrapper(request, *args, **kwargs): def wrapper(request, *args, **kwargs):
if not DEBUG and not request.is_secure(): if not DEBUG and not request.is_secure():
target_url = "https://" + request.META['HTTP_HOST'] + request.path_info target_url = "https://" + request.META['HTTP_HOST'] + request.path_info
return HttpResponseRedirect(target_url) return HttpResponseRedirect(target_url)
return view(request, *args, **kwargs) return view(request, *args, **kwargs)
return wrapper return wrapper
class MultipleException(Exception): class MultipleException(Exception):
def __init__(self, err_list): def __init__(self, err_list):
if not isinstance(err_list, list): if not isinstance(err_list, list):
raise TypeError raise TypeError
@ -202,8 +190,10 @@ class LogicError(Exception):
def singleton(class_): def singleton(class_):
instances = {} instances = {}
def getinstance(*args, **kwargs): def getinstance(*args, **kwargs):
if class_ not in instances: if class_ not in instances:
instances[class_] = class_(*args, **kwargs) instances[class_] = class_(*args, **kwargs)
return instances[class_] return instances[class_]
return getinstance return getinstance

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

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

2
tariff_app/urls.py

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