From fb6fec4c4003d612a10c6b46e63a19110aebb10b Mon Sep 17 00:00:00 2001 From: http Date: Sat, 29 Apr 2017 10:43:10 +0300 Subject: [PATCH 1/5] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4=20=D1=81=D0=BA=D0=BE=D1=80?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D0=B5=D0=B9=20=D0=BF=D0=BE=20=D1=82=D0=B0?= =?UTF-8?q?=D1=80=D0=B8=D1=84=D0=B0=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- abonapp/templates/abonapp/buy_tariff.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/abonapp/templates/abonapp/buy_tariff.html b/abonapp/templates/abonapp/buy_tariff.html index f6782e9..dfbcc66 100644 --- a/abonapp/templates/abonapp/buy_tariff.html +++ b/abonapp/templates/abonapp/buy_tariff.html @@ -29,7 +29,7 @@ From 8dd26682e7f1555622a31f4f9f67660a3aa09ce1 Mon Sep 17 00:00:00 2001 From: http Date: Tue, 2 May 2017 15:09:46 +0300 Subject: [PATCH 2/5] =?UTF-8?q?=D1=81=D0=BA=D0=BE=D1=80=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D1=8C=20=D0=BF=D0=BE=20=D1=83=D0=BC=D0=BE=D0=BB=D1=87=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=8E=20=D0=BF=D0=BE=D1=87=D1=82=D0=B8=20=D0=BE?= =?UTF-8?q?=D1=82=D1=81=D1=83=D1=82=D1=81=D1=82=D0=B2=D1=83=D0=B5=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- agent/structs.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/agent/structs.py b/agent/structs.py index 2bb2efa..eda9d10 100644 --- a/agent/structs.py +++ b/agent/structs.py @@ -53,8 +53,8 @@ class TariffStruct(BaseStruct): def __init__(self, tariff_id=0, speedIn=None, speedOut=None): self.tid = tariff_id - self.speedIn = speedIn if speedIn is not None else 0.0625 - self.speedOut = speedOut if speedOut is not None else 0.0625 + self.speedIn = speedIn if speedIn is not None else 0.001 + self.speedOut = speedOut if speedOut is not None else 0.001 def serialize(self): dt = pack("!Iff", int(self.tid), float(self.speedIn), float(self.speedOut)) From d1fae0fd26d782c2c5024bca32c38ad6ad132080 Mon Sep 17 00:00:00 2001 From: http Date: Tue, 2 May 2017 15:11:12 +0300 Subject: [PATCH 3/5] =?UTF-8?q?=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4=D0=B8=D0=BC?= =?UTF-8?q?=20=D1=81=D1=82=D0=BE=D0=B8=D0=BC=D0=BE=D1=81=D1=82=D1=8C=20?= =?UTF-8?q?=D1=83=D1=81=D0=BB=D1=83=D0=B3=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- clientsideapp/templates/clientsideapp/services.html | 1 + 1 file changed, 1 insertion(+) diff --git a/clientsideapp/templates/clientsideapp/services.html b/clientsideapp/templates/clientsideapp/services.html index 511610b..7336bc8 100644 --- a/clientsideapp/templates/clientsideapp/services.html +++ b/clientsideapp/templates/clientsideapp/services.html @@ -58,6 +58,7 @@

{{ tarif.title }}

+ {{ tarif.amount }} руб.

{{ tarif.descr }}

{% if request.user.is_staff %} From decac815539a5b391fee18ee1948d7ac6a1849fb Mon Sep 17 00:00:00 2001 From: Dmitry Date: Wed, 3 May 2017 02:08:12 +0300 Subject: [PATCH 4/5] =?UTF-8?q?=D0=97=D0=B0=D0=BF=D0=B8=D0=BB=D0=B8=D0=BB?= =?UTF-8?q?=20=D0=B2=D0=BE=D0=B7=D0=BC=D0=BE=D0=B6=D0=BD=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D1=8C=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D1=8F=D1=82=D1=8C?= =?UTF-8?q?=20=D1=83=D1=81=D1=82=D1=80=D0=BE=D0=B9=D1=81=D1=82=D0=B2=D0=B0?= =?UTF-8?q?=20=D1=82=D0=B8=D0=BF=D0=B0=20PON=20BDCOM?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- devapp/base_intr.py | 4 ++ devapp/dev_types.py | 76 ++++++++++++++++++-- devapp/locale/ru/LC_MESSAGES/django.po | 27 +++++++ devapp/migrations/0005_auto_20170502_2232.py | 20 ++++++ devapp/templates/devapp/olt.html | 44 ++++++++++++ devapp/views.py | 4 +- 6 files changed, 170 insertions(+), 5 deletions(-) create mode 100644 devapp/migrations/0005_auto_20170502_2232.py create mode 100644 devapp/templates/devapp/olt.html diff --git a/devapp/base_intr.py b/devapp/base_intr.py index e3f72f0..37b1218 100644 --- a/devapp/base_intr.py +++ b/devapp/base_intr.py @@ -24,6 +24,10 @@ class DevBase(object, metaclass=ABCMeta): def uptime(self): pass + @abstractmethod + def get_template_name(self): + """Получаем путь к html шаблону отображения устройства""" + class BasePort(object, metaclass=ABCMeta): def __init__(self, num, name, status, mac, speed): diff --git a/devapp/dev_types.py b/devapp/dev_types.py index b1b4221..b5700ee 100644 --- a/devapp/dev_types.py +++ b/devapp/dev_types.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- +from django.utils.translation import ugettext_lazy as _ from mydefs import RuTimedelta, safe_int from datetime import timedelta from .base_intr import DevBase, SNMPBaseWorker, BasePort @@ -50,7 +51,7 @@ class DLinkDevice(DevBase, SNMPBaseWorker): @staticmethod def description(): - return "Свич D'Link" + return _('DLink switch') def reboot(self): pass @@ -66,9 +67,9 @@ class DLinkDevice(DevBase, SNMPBaseWorker): status = True if int(stats[n]) == 1 else False res.append(DLinkPort( n+1, - nams[n] if len(nams) > 0 else 'не получил имя', + nams[n] if len(nams) > 0 else _('does not fetch the name'), status, - macs[n] if len(macs) > 0 else 'не нашёл мак', + macs[n] if len(macs) > 0 else _('does not fetch the mac'), int(speeds[n]) if len(speeds) > 0 else 0, self)) return res @@ -78,10 +79,77 @@ class DLinkDevice(DevBase, SNMPBaseWorker): def uptime(self): uptimestamp = safe_int(self.get_item(oids['uptime'])) - tm = RuTimedelta(timedelta(seconds=uptimestamp/100)) or RuTimedelta() + tm = RuTimedelta(timedelta(seconds=uptimestamp/100)) or RuTimedelta(timedelta()) return tm + def get_template_name(self): + return 'devapp/ports.html' + + +class ONUdev(BasePort): + def __init__(self, num, name, status, mac, speed, signal, snmpWorker): + BasePort.__init__(self, num, name, status, mac, speed) + assert issubclass(snmpWorker.__class__ , SNMPBaseWorker) + self.snmp_worker = snmpWorker + self.signal = signal + + # выключаем этот порт + def disable(self): + pass + + # включаем этот порт + def enable(self): + pass + + def __str__(self): + return "%d: '%s' %s" % (self.num, self.nm, self.mac()) + + +class OLTDevice(DevBase, SNMPBaseWorker): + + def __init__(self, ip, snmp_community, ver=2): + DevBase.__init__(self) + SNMPBaseWorker.__init__(self, ip, snmp_community, ver) + + @staticmethod + def description(): + return _('PON ONU') + + def reboot(self): + pass + + def get_ports(self): + nms = self.get_list('.1.3.6.1.4.1.3320.101.10.1.1.79') + + res = [] + for nm in nms: + nm = int(nm) + status = int(self.get_item('.1.3.6.1.2.1.2.2.1.8.%d' % nm)) + signal = self.get_item('.1.3.6.1.4.1.3320.101.10.5.1.5.%d' % nm) + onu = ONUdev( + nm, + self.get_item('.1.3.6.1.2.1.2.2.1.2.%d' % nm), + True if status == 1 else False, + self.get_item('.1.3.6.1.4.1.3320.101.10.1.1.3.%d' % nm), + self.get_item('.1.3.6.1.4.1.3320.101.10.1.1.27.%d' % nm), + int(signal) / 10 if signal != 'NOSUCHINSTANCE' else 0, + self) + res.append(onu) + return res + + def get_device_name(self): + return self.get_item('.1.3.6.1.2.1.1.5.0') + + def uptime(self): + uptimestamp = safe_int(self.get_item('.1.3.6.1.2.1.1.9.1.4.1')) + tm = RuTimedelta(timedelta(seconds=uptimestamp/100)) or RuTimedelta(timedelta()) + return tm + + def get_template_name(self): + return 'devapp/olt.html' + DEVICE_TYPES = ( ('Dl', DLinkDevice), + ('Pn', OLTDevice) ) diff --git a/devapp/locale/ru/LC_MESSAGES/django.po b/devapp/locale/ru/LC_MESSAGES/django.po index 2499c09..5c0d5eb 100644 --- a/devapp/locale/ru/LC_MESSAGES/django.po +++ b/devapp/locale/ru/LC_MESSAGES/django.po @@ -187,3 +187,30 @@ msgstr "Порты" msgid "Edit" msgstr "Редактировать" + +msgid "PON ONU" +msgstr "ONU Голова" + +msgid "does not fetch the name" +msgstr "не получил имя" + +msgid "does not fetch the mac" +msgstr "не нашёл мак" + +msgid "Ports not found" +msgstr "Онушки не получил" + +msgid "DLink switch" +msgstr "Свич D'Link" + +msgid "Mac" +msgstr "Мак" + +msgid "Name" +msgstr "Имя" + +msgid "Distance(m)" +msgstr "Расстояние (м)" + +msgid "Signal" +msgstr "Ур. сигнала" diff --git a/devapp/migrations/0005_auto_20170502_2232.py b/devapp/migrations/0005_auto_20170502_2232.py new file mode 100644 index 0000000..104ce71 --- /dev/null +++ b/devapp/migrations/0005_auto_20170502_2232.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9 on 2017-05-02 19:32 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('devapp', '0004_device_user_group'), + ] + + operations = [ + migrations.AlterField( + model_name='device', + name='devtype', + field=models.CharField(choices=[('Dl', 'DLink switch'), ('Pn', 'PON ONU')], default='Dl', max_length=2), + ), + ] diff --git a/devapp/templates/devapp/olt.html b/devapp/templates/devapp/olt.html new file mode 100644 index 0000000..f47a296 --- /dev/null +++ b/devapp/templates/devapp/olt.html @@ -0,0 +1,44 @@ +{% extends request.is_ajax|yesno:'nullcont.htm,devapp/ext.htm' %} +{% load i18n %} +{% block content %} + + +
+
+
+ + + + + + + + + + + + + {% for port in ports %} + + + + + + + + {% empty %} + + + + {% endfor %} + + +
#{% trans 'Mac' %}{% trans 'Name' %}{% trans 'Distance(m)' %}{% trans 'Signal' %}
{% if port.st %} + {% else %} + {% endif %} + {{ port.mac }}{{ port.nm }}{{ port.sp }}{{ port.signal }}
{% trans 'Ports not found' %}
+
+
+
+ +{% endblock %} diff --git a/devapp/views.py b/devapp/views.py index 01d65b3..65126a4 100644 --- a/devapp/views.py +++ b/devapp/views.py @@ -102,12 +102,14 @@ def devview(request, did): ports = None uptime = 0 dev = get_object_or_404(Device, id=did) + template_name = 'devapp/ports.html' try: if ping(dev.ip_address): if dev.man_passw: manager = dev.get_manager_klass()(dev.ip_address, dev.man_passw) uptime = manager.uptime() ports = manager.get_ports() + template_name = manager.get_template_name() else: messages.warning(request, _('Not Set snmp device password')) else: @@ -117,7 +119,7 @@ def devview(request, did): except EasySNMPError: messages.error(request, _('SNMP error on device')) - return render(request, 'devapp/ports.html', { + return render(request, template_name, { 'dev': dev, 'ports': ports, 'uptime': uptime From 2b9053631ff5e03d53a8b19e5cb4a8bd471990e3 Mon Sep 17 00:00:00 2001 From: Dmitry Date: Wed, 3 May 2017 02:10:08 +0300 Subject: [PATCH 5/5] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=B8=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D0=B0=D0=BB=20=D1=82=D0=B8=D0=BF=20=D1=83?= =?UTF-8?q?=D1=81=D0=BB=D1=83=D0=B3=D0=B8=20=D0=B2=20IS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../migrations/0005_auto_20170502_2229.py | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 tariff_app/migrations/0005_auto_20170502_2229.py diff --git a/tariff_app/migrations/0005_auto_20170502_2229.py b/tariff_app/migrations/0005_auto_20170502_2229.py new file mode 100644 index 0000000..7b0ba08 --- /dev/null +++ b/tariff_app/migrations/0005_auto_20170502_2229.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9 on 2017-05-02 19:29 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('tariff_app', '0004_auto_20170416_0350'), + ] + + operations = [ + migrations.AlterField( + model_name='tariff', + name='calc_type', + field=models.CharField(choices=[('Df', 'Базовый расчётный функционал'), ('Dp', 'IS'), ('Cp', 'Для внутреннего пользования')], default='Df', max_length=2), + ), + ]