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> <thead>
<tr> <tr>
<th> <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' %} {% trans 'Ip address' %}
</a> </a>
{% if order_by == 'ip_address' %}<span class="glyphicon glyphicon-filter"></span>{% endif %} {% if order_by == 'ip_address' %}<span class="glyphicon glyphicon-filter"></span>{% endif %}
</th> </th>
<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' %} {% trans 'Comment' %}
</a> </a>
{% if order_by == 'comment' %}<span class="glyphicon glyphicon-filter"></span>{% endif %} {% if order_by == 'comment' %}<span class="glyphicon glyphicon-filter"></span>{% endif %}
</th> </th>
<th width="250"> <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' %} {% trans 'Device type' %}
</a> </a>
{% if order_by == 'devtype' %}<span class="glyphicon glyphicon-filter"></span>{% endif %} {% if order_by == 'devtype' %}<span class="glyphicon glyphicon-filter"></span>{% endif %}
@ -78,6 +78,6 @@
</table> </table>
</div> </div>
{% include 'toolbar_page.html' with pag=devices %}
{% include 'pagination.html' %}
{% endblock %} {% endblock %}

2
devapp/urls.py

@ -5,7 +5,7 @@ app_name = 'devapp'
urlpatterns = [ urlpatterns = [
url(r'^$', views.group_list, name='group_list'), 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'^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'),
url(r'^(?P<group_id>\d+)/add$', views.dev, name='add'), 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 easysnmp import EasySNMPTimeoutError, EasySNMPError
from django.views.generic import ListView, DetailView 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 abonapp.models import AbonGroup, Abon
from django.conf import settings from django.conf import settings
from guardian.decorators import permission_required_or_403 as permission_required 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) 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') @method_decorator([login_required, only_admins], name='dispatch')
class DevicesListView(ListView, OrderingMixin):
class DevicesListView(BaseDeviceListView, OrderingMixin):
context_object_name = 'devices' context_object_name = 'devices'
template_name = 'devapp/devices.html' template_name = 'devapp/devices.html'
paginate_by = PAGINATION_ITEMS_PER_PAGE
http_method_names = ['get']
def get_queryset(self): def get_queryset(self):
group_id = safe_int(self.kwargs.get('group_id')) group_id = safe_int(self.kwargs.get('group_id'))
@ -59,22 +62,11 @@ class DevicesListView(ListView, OrderingMixin):
return response 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 @login_required

14
djing/urls.py

@ -1,5 +1,5 @@
from django.conf.urls import url, include from django.conf.urls import url, include
# from django.conf import settings
from django.conf import settings
from django.contrib import admin from django.contrib import admin
from .views import home 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 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): def only_admins(fn):
@wraps(fn) @wraps(fn)

5
tariff_app/locale/ru/LC_MESSAGES/django.po

@ -132,3 +132,8 @@ msgstr "Пробная логика"
msgid "Add new periodic pay" msgid "Add new periodic pay"
msgstr "Добавить периодический платёж" 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 datetime import datetime
from django.db import models, IntegrityError from django.db import models, IntegrityError
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
@ -19,8 +18,11 @@ class Tariff(models.Model):
choices=MyChoicesAdapter(TARIFF_CHOICES)) choices=MyChoicesAdapter(TARIFF_CHOICES))
is_admin = models.BooleanField(_('Tech service'), default=False) is_admin = models.BooleanField(_('Tech service'), default=False)
# Возвращает потомок класса TariffBase, методы которого дают нужную логику оплаты по тарифу
def get_calc_type(self): 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 calc_code = self.calc_type
for choice_pair in TARIFF_CHOICES: for choice_pair in TARIFF_CHOICES:
choice_code, logic_class = choice_pair choice_code, logic_class = choice_pair
@ -37,6 +39,12 @@ class Tariff(models.Model):
def __str__(self): def __str__(self):
return "%s (%.2f)" % (self.title, self.amount) 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): class PeriodicPay(models.Model):
name = models.CharField(_('Periodic pay name'), max_length=64) name = models.CharField(_('Periodic pay name'), max_length=64)

12
tariff_app/templates/tariff_app/tarifs.html

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

2
tariff_app/urls.py

@ -5,7 +5,7 @@ from . import views
app_name = 'tariff_app' app_name = 'tariff_app'
urlpatterns = [ 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'^(?P<tarif_id>\d+)$', views.edit_tarif, name='edit'),
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'),

30
tariff_app/views.py

@ -1,34 +1,34 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.contrib.auth.decorators import login_required 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.utils.decorators import method_decorator
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
from django.shortcuts import render, get_object_or_404, redirect from django.shortcuts import render, get_object_or_404, redirect
from django.contrib import messages from django.contrib import messages
from django.core.exceptions import PermissionDenied 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 guardian.decorators import permission_required_or_403 as permission_required
from djing.global_base_views import OrderingMixin
from .models import Tariff, PeriodicPay from .models import Tariff, PeriodicPay
import mydefs import mydefs
from . import forms 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 @login_required

Loading…
Cancel
Save