diff --git a/abonapp/views.py b/abonapp/views.py
index 9c14a34..c5a860d 100644
--- a/abonapp/views.py
+++ b/abonapp/views.py
@@ -18,7 +18,7 @@ from . import forms
from . import models
import mydefs
from devapp.models import Device, Port as DevPort
-from datetime import datetime, date
+from datetime import datetime, date, timedelta
from taskapp.models import Task
from dialing_app.models import AsteriskCDR
from statistics.models import getModel, get_dates
@@ -389,6 +389,7 @@ def pick_tariff(request, gid, uid):
abon.pick_tariff(trf, request.user)
else:
deadline = datetime.strptime(deadline, '%Y-%m-%d')
+ deadline += timedelta(hours=23, minutes=59, seconds=59)
abon.pick_tariff(trf, request.user, deadline=deadline)
messages.success(request, _('Tariff has been picked'))
return redirect('abonapp:abon_services', gid=gid, uid=abon.id)
diff --git a/devapp/dev_types.py b/devapp/dev_types.py
index 3aeea68..ffbf7ae 100644
--- a/devapp/dev_types.py
+++ b/devapp/dev_types.py
@@ -41,20 +41,19 @@ class DLinkDevice(DevBase, SNMPBaseWorker):
return self.get_item('.1.3.6.1.4.1.2021.8.1.101.1')
def get_ports(self):
- nams = self.get_list('.1.3.6.1.4.1.171.10.134.2.1.1.100.2.1.3')
- stats = self.get_list('.1.3.6.1.2.1.2.2.1.7')
- macs = self.get_list('.1.3.6.1.2.1.2.2.1.6')
+ nams = list(self.get_list('.1.3.6.1.4.1.171.10.134.2.1.1.100.2.1.3'))
+ stats = list(self.get_list('.1.3.6.1.2.1.2.2.1.7'))
+ macs = list(self.get_list('.1.3.6.1.2.1.2.2.1.6'))
speeds = self.get_list('.1.3.6.1.2.1.31.1.1.1.15')
res = []
- ln = len(speeds)
- for n in range(ln):
+ for n, speed in enumerate(speeds):
status = True if int(stats[n]) == 1 else False
res.append(DLinkPort(
n+1,
nams[n] if len(nams) > 0 else _('does not fetch the name'),
status,
macs[n] if len(macs) > 0 else _('does not fetch the mac'),
- int(speeds[n]) if len(speeds) > 0 else 0,
+ int(speed or 0),
self))
return res
@@ -200,11 +199,10 @@ class OnuDevice(DevBase, SNMPBaseWorker):
'signal': int(signal) / 10 if signal != 'NOSUCHINSTANCE' else 0,
'name': self.get_item('.1.3.6.1.2.1.2.2.1.2.%d' % num),
'mac': mac,
- 'distance': int(distance) / 10 if distance != 'NOSUCHINSTANCE' else 0,
- 'uptime': RuTimedelta(timedelta(seconds=int(uptime) / 100)) if uptime != 'NOSUCHINSTANCE' else 0
+ 'distance': int(distance) / 10 if distance != 'NOSUCHINSTANCE' else 0
}
- except EasySNMPTimeoutError:
- return {'err': _('ONU not connected')}
+ except EasySNMPTimeoutError as e:
+ return {'err': "%s: %s" % (_('ONU not connected'), e)}
diff --git a/devapp/models.py b/devapp/models.py
index 7d0ed6c..8611632 100644
--- a/devapp/models.py
+++ b/devapp/models.py
@@ -23,6 +23,10 @@ class DeviceDBException(Exception):
pass
+class DeviceMonitoringException(Exception):
+ pass
+
+
class DeviceManager(models.Manager):
@staticmethod
def wrap_monitoring_info(devices_queryset):
@@ -32,8 +36,8 @@ class DeviceManager(models.Manager):
url = '%s/host/status/arr?%s' % (nag_url, '&'.join(addrs))
try:
res = requests.get(url).json()
- except (requests.exceptions.ConnectionError, JSONDecodeError):
- return
+ except (requests.exceptions.ConnectionError, JSONDecodeError) as e:
+ raise DeviceMonitoringException(e)
for dev in devices_queryset:
inf = [x for x in res if x.get('address') == dev.ip_address]
if len(inf) > 0:
@@ -113,7 +117,7 @@ class Device(models.Model):
code = 'psh'
elif grp == 92:
code = 'str'
- elif grp == 80:
+ elif grp == 80 or grp == 94:
code = 'uy'
elif grp == 79 or grp == 91:
code = 'zrk'
diff --git a/devapp/templates/devapp/custom_dev_page/onu.html b/devapp/templates/devapp/custom_dev_page/onu.html
index e1cc350..3bcf65e 100644
--- a/devapp/templates/devapp/custom_dev_page/onu.html
+++ b/devapp/templates/devapp/custom_dev_page/onu.html
@@ -71,7 +71,6 @@
{% trans 'Name on OLT' %}: {{ onu_details.name }}
{% trans 'Distance(m)' %}: {{ onu_details.distance }}
{% trans 'Signal' %}: {{ onu_details.signal }}
- {% trans 'Uptime' %}: {{ onu_details.uptime }}
{% if dev.mac_addr != onu_details.mac %}
diff --git a/devapp/views.py b/devapp/views.py
index 90ce85b..dc0fa33 100644
--- a/devapp/views.py
+++ b/devapp/views.py
@@ -10,7 +10,7 @@ from django.utils.translation import ugettext_lazy as _
from easysnmp import EasySNMPTimeoutError, EasySNMPError
from json import dumps
-from .models import Device, Port, DeviceDBException
+from .models import Device, Port, DeviceDBException, DeviceMonitoringException
from mydefs import pag_mn, res_success, res_error, only_admins, ping, order_helper
from .forms import DeviceForm, PortForm
from abonapp.models import AbonGroup, Abon
@@ -25,17 +25,22 @@ def devices(request, grp):
group = get_object_or_404(AbonGroup, pk=grp)
if not request.user.has_perm('abonapp.can_view_abongroup', group):
raise PermissionDenied
- devs = Device.objects.filter(user_group=grp).select_related('user_group').only('comment', 'mac_addr', 'devtype', 'user_group', 'pk', 'ip_address')
+ try:
+ devs = Device.objects.filter(user_group=group).select_related('user_group').only('comment', 'mac_addr', 'devtype', 'user_group', 'pk', 'ip_address')
- # фильтр
- dr, field = order_helper(request)
- if field:
- devs = devs.order_by(field)
+ # фильтр
+ dr, field = order_helper(request)
+ if field:
+ devs = devs.order_by(field)
- devs = pag_mn(request, devs)
+ devs = pag_mn(request, devs)
+ devs = Device.objects.wrap_monitoring_info(devs)
+
+ except (DeviceDBException, DeviceMonitoringException) as e:
+ messages.error(request, e)
return render(request, 'devapp/devices.html', {
- 'devices': Device.objects.wrap_monitoring_info(devs),
+ 'devices': devs,
'dir': dr,
'order_by': request.GET.get('order_by'),
'group': group
diff --git a/dialing_app/templates/index.html b/dialing_app/templates/index.html
index d8a9a92..ae01974 100644
--- a/dialing_app/templates/index.html
+++ b/dialing_app/templates/index.html
@@ -17,17 +17,34 @@