|
-
+
{% trans 'Ip address' %}
{% if order_by == 'ip_address' %}{% endif %}
|
-
+
{% trans 'Comment' %}
{% if order_by == 'comment' %}{% endif %}
|
-
+
{% trans 'Device type' %}
{% if order_by == 'devtype' %}{% endif %}
diff --git a/devapp/templates/devapp/manage_ports/list.html b/devapp/templates/devapp/manage_ports/list.html
index e578479..a8bebe6 100644
--- a/devapp/templates/devapp/manage_ports/list.html
+++ b/devapp/templates/devapp/manage_ports/list.html
@@ -27,7 +27,7 @@
{% else %}
| {{ port.num_abons }} |
{% endif %}
-
+ |
diff --git a/devapp/views.py b/devapp/views.py
index f1adfec..67a27b5 100644
--- a/devapp/views.py
+++ b/devapp/views.py
@@ -30,13 +30,8 @@ from .models import Device, Port, DeviceDBException, DeviceMonitoringException
from .forms import DeviceForm, PortForm, DeviceExtraDataForm
-class BaseDeviceListView(global_base_views.BaseListWithFiltering):
- http_method_names = ('get',)
- paginate_by = getattr(settings, 'PAGINATION_ITEMS_PER_PAGE', 10)
-
-
@method_decorator((login_required, only_admins), name='dispatch')
-class DevicesListView(global_base_views.OrderingMixin, BaseDeviceListView):
+class DevicesListView(global_base_views.OrderedFilteredList):
context_object_name = 'devices'
template_name = 'devapp/devices.html'
@@ -63,7 +58,7 @@ class DevicesListView(global_base_views.OrderingMixin, BaseDeviceListView):
@method_decorator((login_required, only_admins), name='dispatch')
-class DevicesWithoutGroupsListView(global_base_views.OrderingMixin, BaseDeviceListView):
+class DevicesWithoutGroupsListView(global_base_views.OrderedFilteredList):
context_object_name = 'devices'
template_name = 'devapp/devices_null_group.html'
queryset = Device.objects.filter(group=None).only('comment', 'devtype', 'pk', 'ip_address')
@@ -505,7 +500,7 @@ def toggle_port(request, device_id: int, portid: int, status=0):
@method_decorator((login_required, only_admins), name='dispatch')
-class GroupsListView(BaseDeviceListView):
+class GroupsListView(global_base_views.OrderedFilteredList):
context_object_name = 'groups'
template_name = 'devapp/group_list.html'
model = Group
diff --git a/djing/fields.py b/djing/fields.py
index 68328e5..c982beb 100644
--- a/djing/fields.py
+++ b/djing/fields.py
@@ -91,11 +91,11 @@ class MACAddressField(models.Field):
return self.get_prep_value(value)
except AddrFormatError:
return None
- elif lookup_type in ('in'):
+ elif lookup_type == 'in':
try:
macs = []
for mac in value:
- macs += [self.get_prep_value(mac)]
+ macs.extend(self.get_prep_value(mac))
return macs
except AddrFormatError:
return None
@@ -106,7 +106,7 @@ class MACAddressField(models.Field):
try:
from south.modelsinspector import add_introspection_rules
- add_introspection_rules([], ["^macaddress\.fields\.MACAddressField"])
+ add_introspection_rules((), ("^macaddress\.fields\.MACAddressField",))
except ImportError:
pass
diff --git a/djing/global_base_views.py b/djing/global_base_views.py
index 7d38b6e..1377726 100644
--- a/djing/global_base_views.py
+++ b/djing/global_base_views.py
@@ -80,14 +80,6 @@ class OrderingMixin(object):
def get_context_data(self, **kwargs):
context = super(OrderingMixin, self).get_context_data(**kwargs)
context['order_by'] = self.request.GET.get('order_by')
- direction = self.request.GET.get('dir')
- if direction == 'down':
- direction = 'up'
- elif direction == 'up':
- direction = 'down'
- else:
- direction = ''
- context['dir'] = direction
return context
def get_ordering(self):
@@ -149,5 +141,5 @@ class BaseListWithFiltering(RedirectWhenErrorMixin, ListView):
})
-class BaseOrderedFilteringList(OrderingMixin, BaseListWithFiltering):
+class OrderedFilteredList(OrderingMixin, BaseListWithFiltering):
paginate_by = getattr(settings, 'PAGINATION_ITEMS_PER_PAGE', 10)
diff --git a/djing/local_settings.py.template b/djing/local_settings.py.template
index cf26e13..dccee29 100644
--- a/djing/local_settings.py.template
+++ b/djing/local_settings.py.template
@@ -4,7 +4,7 @@ Custom settings for each system
DEBUG = True
-ALLOWED_HOSTS = ['*']
+ALLOWED_HOSTS = '*',
DEFAULT_FROM_EMAIL = 'admin@yoursite.com'
diff --git a/djing/settings.py b/djing/settings.py
index 6d2e73f..ee93093 100644
--- a/djing/settings.py
+++ b/djing/settings.py
@@ -93,6 +93,7 @@ TEMPLATES = [
],
'libraries': {
'globaltags': 'djing.templatetags.globaltags',
+ 'dpagination': 'djing.templatetags.dpagination'
}
},
},
diff --git a/abonapp/templatetags/dpagination.py b/djing/templatetags/dpagination.py
similarity index 51%
rename from abonapp/templatetags/dpagination.py
rename to djing/templatetags/dpagination.py
index e8232c7..2490c94 100644
--- a/abonapp/templatetags/dpagination.py
+++ b/djing/templatetags/dpagination.py
@@ -11,8 +11,18 @@ def url_page_replace(request, field, value):
@register.simple_tag
-def url_replace(request, *args, **kwargs):
+def url_order_by(request, **kwargs):
dict_ = request.GET.copy()
for k, v in kwargs.items():
dict_[k] = v
+ direction = dict_.get('dir')
+ if direction is None:
+ direction = dict_.get('default_direction', 'up')
+ if direction == 'down':
+ direction = 'up'
+ elif direction == 'up':
+ direction = 'down'
+ else:
+ direction = ''
+ dict_['dir'] = direction
return dict_.urlencode()
diff --git a/docs/dev.md b/docs/dev.md
index 09ca0ec..72a395e 100644
--- a/docs/dev.md
+++ b/docs/dev.md
@@ -97,7 +97,7 @@ class EltexSwitch(DLinkDevice):
Свойство **@is_use_device_port** используется в DHCP чтоб понять что мы используем для привязки к абоненту всё устройство или
только порт устройства. Например, если у устройства только 1 порт абонента (PON ONU), и мы привязываем этого абонента ко всему устройству
-а не к порту, то нужно вернуть False, На обычных свичах где мы авторизуем абонента на порту возвращаем True.
+а не к порту, то нужно указать False, На обычных свичах где мы авторизуем абонента на порту возвращаем True.
Реализация SNMPBaseWorker по сути не нужна, класс абстрактных методов не имеет.
Потому когда наследуем наследуемся от *DevBase* то в базовые классы добавим и SNMPBaseWorker, как это сделано в *DLinkDevice*:
diff --git a/group_app/templates/group_app/group_list.html b/group_app/templates/group_app/group_list.html
index bce8572..5411490 100644
--- a/group_app/templates/group_app/group_list.html
+++ b/group_app/templates/group_app/group_list.html
@@ -1,5 +1,6 @@
{% extends 'base.html' %}
{% load i18n %}
+{% load dpagination %}
{% block breadcrumb %}
@@ -22,7 +23,7 @@
| # |
{% trans 'TeCo' %} |
-
+
{% trans 'Title' %}
{% if order_by == 'title' %}{% endif %}
diff --git a/group_app/views.py b/group_app/views.py
index ebeb28d..5aaa5de 100644
--- a/group_app/views.py
+++ b/group_app/views.py
@@ -1,6 +1,6 @@
from django.db.models import Count
from django.http import HttpResponseRedirect
-from django.views.generic import ListView, UpdateView, CreateView, DeleteView
+from django.views.generic import UpdateView, CreateView, DeleteView
from django.contrib.auth.decorators import login_required
from django.utils.translation import gettext_lazy as _
from django.utils.decorators import method_decorator
@@ -8,12 +8,14 @@ from django.urls import reverse_lazy
from django.contrib import messages
from django.conf import settings
from guardian.decorators import permission_required_or_403 as permission_required
+
+from djing.global_base_views import OrderedFilteredList
from . import models
from . import forms
@method_decorator(login_required, name='dispatch')
-class GroupListView(ListView):
+class GroupListView(OrderedFilteredList):
http_method_names = ('get',)
paginate_by = getattr(settings, 'PAGINATION_ITEMS_PER_PAGE', 10)
template_name = 'group_app/group_list.html'
diff --git a/searchapp/views.py b/searchapp/views.py
index cf6f348..37e7731 100644
--- a/searchapp/views.py
+++ b/searchapp/views.py
@@ -23,16 +23,18 @@ def home(request):
devices = Device.objects.filter(ip_address=s)
else:
abons = Abon.objects.filter(
- Q(fio__icontains=s) | Q(username__icontains=s) | Q(telephone__icontains=s)
+ Q(fio__icontains=s) | Q(username__icontains=s) | Q(telephone__icontains=s) |
+ Q(additional_telephones__telephone__icontains=s)
)
+
if re.match(MAC_ADDR_REGEX, s):
devices = Device.objects.filter(mac_addr=s)
else:
devices = Device.objects.filter(comment__icontains=s)
else:
- abons = []
- devices = []
+ abons = ()
+ devices = ()
for abn in abons:
abn.fio = replace_without_case(escape(abn.fio), s, "%s" % s)
diff --git a/tariff_app/templates/tariff_app/tarifs.html b/tariff_app/templates/tariff_app/tarifs.html
index d87e70b..76cd346 100644
--- a/tariff_app/templates/tariff_app/tarifs.html
+++ b/tariff_app/templates/tariff_app/tarifs.html
@@ -1,5 +1,6 @@
{% extends request.is_ajax|yesno:'nullcont.htm,tariff_app/ext.html' %}
{% load i18n %}
+{% load dpagination %}
{% block content %}
@@ -7,25 +8,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 %}
diff --git a/tariff_app/views.py b/tariff_app/views.py
index 13e5aaa..c9dd800 100644
--- a/tariff_app/views.py
+++ b/tariff_app/views.py
@@ -1,28 +1,21 @@
from django.contrib.auth.decorators import login_required
-from django.contrib.gis.shortcuts import render_to_text
from django.urls import reverse_lazy
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, DeleteView
-from django.conf import settings
+from django.views.generic import DeleteView
from guardian.decorators import permission_required_or_403 as permission_required
-from djing.global_base_views import OrderingMixin
+from djing.global_base_views import OrderedFilteredList
from .models import Tariff, PeriodicPay
from djing import lib
from . import forms
-class BaseServiceListView(ListView):
- http_method_names = ('get',)
- paginate_by = getattr(settings, 'PAGINATION_ITEMS_PER_PAGE', 10)
-
-
@method_decorator((login_required, lib.decorators.only_admins), name='dispatch')
-class TariffsListView(BaseServiceListView, OrderingMixin):
+class TariffsListView(OrderedFilteredList):
"""
Show Services(Tariffs) list
"""
@@ -80,7 +73,7 @@ class TariffDeleteView(DeleteView):
@method_decorator(login_required, name='dispatch')
@method_decorator(permission_required('tariff_app.delete_tariff'), name='dispatch')
-class PeriodicPaysListView(BaseServiceListView):
+class PeriodicPaysListView(OrderedFilteredList):
context_object_name = 'pays'
model = PeriodicPay
template_name = 'tariff_app/periodic_pays/list.html'
| | |