From c5bb870fe76035b6a86ec4f1f7987fe5129b3c08 Mon Sep 17 00:00:00 2001 From: bashmak Date: Thu, 15 Feb 2018 14:41:01 +0300 Subject: [PATCH] Kicked old deprecated mydefs.order_helper function --- .../templates/devapp/devices_null_group.html | 8 ++--- devapp/urls.py | 2 +- devapp/views.py | 32 +++++++------------ djing/urls.py | 14 ++++---- mydefs.py | 20 ------------ tariff_app/locale/ru/LC_MESSAGES/django.po | 5 +++ .../migrations/0007_auto_20180215_1423.py | 23 +++++++++++++ tariff_app/models.py | 12 +++++-- tariff_app/templates/tariff_app/tarifs.html | 12 +++---- tariff_app/urls.py | 2 +- tariff_app/views.py | 30 ++++++++--------- 11 files changed, 83 insertions(+), 77 deletions(-) create mode 100644 tariff_app/migrations/0007_auto_20180215_1423.py diff --git a/devapp/templates/devapp/devices_null_group.html b/devapp/templates/devapp/devices_null_group.html index 816bcbe..bdfa539 100644 --- a/devapp/templates/devapp/devices_null_group.html +++ b/devapp/templates/devapp/devices_null_group.html @@ -16,19 +16,19 @@ - + {% trans 'Ip address' %} {% if order_by == 'ip_address' %}{% endif %} - + {% trans 'Comment' %} {% if order_by == 'comment' %}{% endif %} - + {% trans 'Device type' %} {% if order_by == 'devtype' %}{% endif %} @@ -78,6 +78,6 @@ - {% include 'toolbar_page.html' with pag=devices %} + {% include 'pagination.html' %} {% endblock %} \ No newline at end of file diff --git a/devapp/urls.py b/devapp/urls.py index e7983a7..f2ec969 100644 --- a/devapp/urls.py +++ b/devapp/urls.py @@ -5,7 +5,7 @@ app_name = 'devapp' urlpatterns = [ url(r'^$', views.group_list, name='group_list'), - url(r'^devices_without_groups$', views.devices_null_group, 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'^(?P\d+)$', views.DevicesListView.as_view(), name='devs'), url(r'^(?P\d+)/add$', views.dev, name='add'), diff --git a/devapp/views.py b/devapp/views.py index 7d1b6d2..8f4fc06 100644 --- a/devapp/views.py +++ b/devapp/views.py @@ -13,7 +13,7 @@ from django.utils.translation import gettext_lazy as _, gettext from easysnmp import EasySNMPTimeoutError, EasySNMPError from django.views.generic import ListView, DetailView -from mydefs import pag_mn, res_success, res_error, only_admins, ping, order_helper, ip_addr_regex +from mydefs import res_success, res_error, only_admins, ping, ip_addr_regex from abonapp.models import AbonGroup, Abon from django.conf import settings from guardian.decorators import permission_required_or_403 as permission_required @@ -30,12 +30,15 @@ from mydefs import safe_int PAGINATION_ITEMS_PER_PAGE = getattr(settings, 'PAGINATION_ITEMS_PER_PAGE', 10) +class BaseDeviceListView(ListView): + http_method_names = ['get'] + paginate_by = getattr(settings, 'PAGINATION_ITEMS_PER_PAGE', 10) + + @method_decorator([login_required, only_admins], name='dispatch') -class DevicesListView(ListView, OrderingMixin): +class DevicesListView(BaseDeviceListView, OrderingMixin): context_object_name = 'devices' template_name = 'devapp/devices.html' - paginate_by = PAGINATION_ITEMS_PER_PAGE - http_method_names = ['get'] def get_queryset(self): group_id = safe_int(self.kwargs.get('group_id')) @@ -59,22 +62,11 @@ class DevicesListView(ListView, OrderingMixin): return response -@login_required -@only_admins -def devices_null_group(request): - devs = Device.objects.filter(user_group=None).only('comment', 'devtype', 'user_group', 'pk', 'ip_address') - - dr, field = order_helper(request) - if field: - devs = devs.order_by(field) - - devs = pag_mn(request, devs) - - return render(request, 'devapp/devices_null_group.html', { - 'devices': devs, - 'dir': dr, - 'order_by': request.GET.get('order_by') - }) +@method_decorator([login_required, only_admins], name='dispatch') +class DevicesWithoutGroupsListView(BaseDeviceListView, OrderingMixin): + context_object_name = 'devices' + template_name = 'devapp/devices_null_group.html' + queryset = Device.objects.filter(user_group=None).only('comment', 'devtype', 'user_group', 'pk', 'ip_address') @login_required diff --git a/djing/urls.py b/djing/urls.py index 4846a4c..bc1a3f0 100644 --- a/djing/urls.py +++ b/djing/urls.py @@ -1,5 +1,5 @@ from django.conf.urls import url, include -# from django.conf import settings +from django.conf import settings from django.contrib import admin from .views import home @@ -21,11 +21,9 @@ urlpatterns = [ ] -# if settings.DEBUG: -# from django.conf.urls.static import static -# from django.contrib.staticfiles.urls import staticfiles_urlpatterns -# from django.contrib import admin +if settings.DEBUG: + from django.conf.urls.static import static + from django.contrib.staticfiles.urls import staticfiles_urlpatterns -# urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) -# urlpatterns += staticfiles_urlpatterns() -# urlpatterns += [url(r'^admin/', admin.site.urls)] + urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + urlpatterns += staticfiles_urlpatterns() diff --git a/mydefs.py b/mydefs.py index 1e0fcba..2fd9ad3 100644 --- a/mydefs.py +++ b/mydefs.py @@ -124,26 +124,6 @@ class MyChoicesAdapter(Iterator): return res -# Для сортировки таблиц -# через get должно быть передано order_by=<поле в бд> а в dir= направление сортировки -# возвращает новое направление сортировки и поле для сортировки с направлением -def order_helper(request): - print('DEPRECATION: use global_base_views.OrderingMixin') - dr = request.GET.get('dir') - dfx = '' - if dr == 'down': - dr = 'up' - dfx = '-' - else: - dr = 'down' - - orby = request.GET.get('order_by') - if orby: - return dr, dfx + orby - else: - return dr, orby - - # Декоратор проверяет аккаунт, чтоб не пускать клиентов в страницы администрации def only_admins(fn): @wraps(fn) diff --git a/tariff_app/locale/ru/LC_MESSAGES/django.po b/tariff_app/locale/ru/LC_MESSAGES/django.po index 3f3b442..b10fbe9 100644 --- a/tariff_app/locale/ru/LC_MESSAGES/django.po +++ b/tariff_app/locale/ru/LC_MESSAGES/django.po @@ -132,3 +132,8 @@ msgstr "Пробная логика" msgid "Add new periodic pay" msgstr "Добавить периодический платёж" +msgid "Service" +msgstr "Услуга" + +msgid "Services" +magstr "Услуги" diff --git a/tariff_app/migrations/0007_auto_20180215_1423.py b/tariff_app/migrations/0007_auto_20180215_1423.py new file mode 100644 index 0000000..5be9de2 --- /dev/null +++ b/tariff_app/migrations/0007_auto_20180215_1423.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11 on 2018-02-15 14:23 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('tariff_app', '0006_auto_20180122_1732'), + ] + + operations = [ + migrations.AlterModelOptions( + name='tariff', + options={'ordering': ['title'], 'verbose_name': 'Service', 'verbose_name_plural': 'Services'}, + ), + migrations.AlterModelTable( + name='tariff', + table='tariffs', + ), + ] diff --git a/tariff_app/models.py b/tariff_app/models.py index 6173277..1e6aac6 100644 --- a/tariff_app/models.py +++ b/tariff_app/models.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- from datetime import datetime from django.db import models, IntegrityError from django.utils.translation import gettext_lazy as _ @@ -19,8 +18,11 @@ class Tariff(models.Model): choices=MyChoicesAdapter(TARIFF_CHOICES)) is_admin = models.BooleanField(_('Tech service'), default=False) - # Возвращает потомок класса TariffBase, методы которого дают нужную логику оплаты по тарифу def get_calc_type(self): + """ + :return: Child of tariff_app.base_intr.TariffBase, + methods which provide the desired logic of payments + """ calc_code = self.calc_type for choice_pair in TARIFF_CHOICES: choice_code, logic_class = choice_pair @@ -37,6 +39,12 @@ class Tariff(models.Model): def __str__(self): return "%s (%.2f)" % (self.title, self.amount) + class Meta: + db_table = 'tariffs' + ordering = ['title'] + verbose_name = _('Service') + verbose_name_plural = _('Services') + class PeriodicPay(models.Model): name = models.CharField(_('Periodic pay name'), max_length=64) diff --git a/tariff_app/templates/tariff_app/tarifs.html b/tariff_app/templates/tariff_app/tarifs.html index 7361a14..db15e85 100644 --- a/tariff_app/templates/tariff_app/tarifs.html +++ b/tariff_app/templates/tariff_app/tarifs.html @@ -7,25 +7,25 @@ - + {% trans 'tariff' %} {% if order_by == 'title' %}{% endif %} - + {% trans 'Speed In' %} {% if order_by == 'speedIn' %}{% endif %} - + {% trans 'Speed Out' %} {% if order_by == 'speedOut' %}{% endif %} - + {% trans 'Price' %} {% if order_by == 'amount' %}{% endif %} @@ -59,7 +59,7 @@ {% empty %} - {% trans 'Услуги пока не существуют' %}. + {% trans 'Services does not exist yet' %}. {% if perms.tariff_app.add_tariff %} {% trans 'Create' %} {% endif %} @@ -84,6 +84,6 @@ - {% include 'toolbar_page.html' with pag=tariflist %} + {% include 'pagination.html' %} {% endblock %} diff --git a/tariff_app/urls.py b/tariff_app/urls.py index 947b831..1eb8d67 100644 --- a/tariff_app/urls.py +++ b/tariff_app/urls.py @@ -5,7 +5,7 @@ from . import views app_name = 'tariff_app' urlpatterns = [ - url(r'^$', views.tarifs, name='home'), + url(r'^$', views.TariffsListView.as_view(), name='home'), url(r'^(?P\d+)$', views.edit_tarif, name='edit'), url(r'^add$', views.edit_tarif, name='add'), url(r'^del(?P\d+)$', views.del_tarif, name='del'), diff --git a/tariff_app/views.py b/tariff_app/views.py index 6dc56e4..ea21bd6 100644 --- a/tariff_app/views.py +++ b/tariff_app/views.py @@ -1,34 +1,34 @@ # -*- coding: utf-8 -*- from django.contrib.auth.decorators import login_required from django.contrib.gis.shortcuts import render_to_text +from django.utils.decorators import method_decorator from django.utils.translation import ugettext as _ from django.shortcuts import render, get_object_or_404, redirect from django.contrib import messages from django.core.exceptions import PermissionDenied +from django.views.generic import ListView +from django.conf import settings from guardian.decorators import permission_required_or_403 as permission_required +from djing.global_base_views import OrderingMixin from .models import Tariff, PeriodicPay import mydefs from . import forms -@login_required -@mydefs.only_admins -def tarifs(request): - tars = Tariff.objects.order_by('title') - - # фильтр - direct, field = mydefs.order_helper(request) - if field: - tars = tars.order_by(field) +class BaseServiceListView(ListView): + http_method_names = ['get'] + paginate_by = getattr(settings, 'PAGINATION_ITEMS_PER_PAGE', 10) - tars = mydefs.pag_mn(request, tars) - return render(request, 'tariff_app/tarifs.html', { - 'tariflist': tars, - 'dir': direct, - 'order_by': request.GET.get('order_by') - }) +@method_decorator([login_required, mydefs.only_admins], name='dispatch') +class TariffsListView(BaseServiceListView, OrderingMixin): + """ + Show Services(Tariffs) list + """ + template_name = 'tariff_app/tarifs.html' + context_object_name = 'tariflist' + model = Tariff @login_required