Browse Source

Kicked old deprecated mydefs.order_helper function

devel
bashmak 8 years ago
parent
commit
c5bb870fe7
  1. 8
      devapp/templates/devapp/devices_null_group.html
  2. 2
      devapp/urls.py
  3. 32
      devapp/views.py
  4. 14
      djing/urls.py
  5. 20
      mydefs.py
  6. 5
      tariff_app/locale/ru/LC_MESSAGES/django.po
  7. 23
      tariff_app/migrations/0007_auto_20180215_1423.py
  8. 12
      tariff_app/models.py
  9. 12
      tariff_app/templates/tariff_app/tarifs.html
  10. 2
      tariff_app/urls.py
  11. 30
      tariff_app/views.py

8
devapp/templates/devapp/devices_null_group.html

@ -16,19 +16,19 @@
<thead>
<tr>
<th>
<a href="{% url 'devapp:devices_null_group' %}?order_by=ip_address&dir={{ dir|default:"down" }}">
<a href="{% url 'devapp:devices_null_group' %}?order_by=ip_address&dir={{ dir|default:'down' }}">
{% trans 'Ip address' %}
</a>
{% if order_by == 'ip_address' %}<span class="glyphicon glyphicon-filter"></span>{% endif %}
</th>
<th>
<a href="{% url 'devapp:devices_null_group' %}?order_by=comment&dir={{ dir|default:"down" }}">
<a href="{% url 'devapp:devices_null_group' %}?order_by=comment&dir={{ dir|default:'down' }}">
{% trans 'Comment' %}
</a>
{% if order_by == 'comment' %}<span class="glyphicon glyphicon-filter"></span>{% endif %}
</th>
<th width="250">
<a href="{% url 'devapp:devices_null_group' %}?order_by=devtype&dir={{ dir|default:"down" }}">
<a href="{% url 'devapp:devices_null_group' %}?order_by=devtype&dir={{ dir|default:'down' }}">
{% trans 'Device type' %}
</a>
{% if order_by == 'devtype' %}<span class="glyphicon glyphicon-filter"></span>{% endif %}
@ -78,6 +78,6 @@
</table>
</div>
{% include 'toolbar_page.html' with pag=devices %}
{% include 'pagination.html' %}
{% endblock %}

2
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<group_id>\d+)$', views.DevicesListView.as_view(), name='devs'),
url(r'^(?P<group_id>\d+)/add$', views.dev, name='add'),

32
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

14
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()

20
mydefs.py

@ -124,26 +124,6 @@ class MyChoicesAdapter(Iterator):
return res
# Для сортировки таблиц
# через get должно быть передано order_by=<поле в бд> а в dir=<up|down> направление сортировки
# возвращает новое направление сортировки и поле для сортировки с направлением
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)

5
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 "Услуги"

23
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',
),
]

12
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)

12
tariff_app/templates/tariff_app/tarifs.html

@ -7,25 +7,25 @@
<thead>
<tr>
<th>
<a href="{% url 'tarifs:home' %}?order_by=title&dir={{ dir|default:"down" }}">
<a href="{% url 'tarifs:home' %}?order_by=title&dir={{ dir|default:'down' }}">
{% trans 'tariff' %}
</a>
{% if order_by == 'title' %}<span class="glyphicon glyphicon-filter"></span>{% endif %}
</th>
<th>
<a href="{% url 'tarifs:home' %}?order_by=speedIn&dir={{ dir|default:"down" }}">
<a href="{% url 'tarifs:home' %}?order_by=speedIn&dir={{ dir|default:'down' }}">
{% trans 'Speed In' %}
</a>
{% if order_by == 'speedIn' %}<span class="glyphicon glyphicon-filter"></span>{% endif %}
</th>
<th>
<a href="{% url 'tarifs:home' %}?order_by=speedOut&dir={{ dir|default:"down" }}">
<a href="{% url 'tarifs:home' %}?order_by=speedOut&dir={{ dir|default:'down' }}">
{% trans 'Speed Out' %}
</a>
{% if order_by == 'speedOut' %}<span class="glyphicon glyphicon-filter"></span>{% endif %}
</th>
<th>
<a href="{% url 'tarifs:home' %}?order_by=amount&dir={{ dir|default:"down" }}">
<a href="{% url 'tarifs:home' %}?order_by=amount&dir={{ dir|default:'down' }}">
{% trans 'Price' %}
</a>
{% if order_by == 'amount' %}<span class="glyphicon glyphicon-filter"></span>{% endif %}
@ -59,7 +59,7 @@
</tr>
{% empty %}
<tr>
<td colspan="6">{% trans 'Услуги пока не существуют' %}.
<td colspan="6">{% trans 'Services does not exist yet' %}.
{% if perms.tariff_app.add_tariff %}
<a href="{% url 'tarifs:add' %}" class="lgtbx">{% trans 'Create' %}</a>
{% endif %}
@ -84,6 +84,6 @@
</table>
</div>
{% include 'toolbar_page.html' with pag=tariflist %}
{% include 'pagination.html' %}
{% endblock %}

2
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<tarif_id>\d+)$', views.edit_tarif, name='edit'),
url(r'^add$', views.edit_tarif, name='add'),
url(r'^del(?P<tid>\d+)$', views.del_tarif, name='del'),

30
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

Loading…
Cancel
Save