From 5163a69ab6d2e489c909101b8b46e798e55d8c87 Mon Sep 17 00:00:00 2001 From: Dmitry Novikov Date: Wed, 15 Nov 2017 13:56:16 +0300 Subject: [PATCH] fix --- abonapp/templates/abonapp/dial_log.html | 2 +- abonapp/templates/abonapp/editAbon.html | 22 +++--- accounts_app/locale/ru/LC_MESSAGES/django.po | 2 +- accounts_app/templates/accounts/ext.htm | 2 +- accounts_app/templates/accounts/index.html | 2 +- devapp/base_intr.py | 8 ++- devapp/dev_types.py | 5 +- devapp/locale/ru/LC_MESSAGES/django.po | 13 ++++ devapp/models.py | 69 ++++++++++--------- .../templates/devapp/custom_dev_page/olt.html | 6 +- .../templates/devapp/custom_dev_page/onu.html | 4 ++ devapp/templates/devapp/devices.html | 4 +- devapp/urls.py | 1 + devapp/views.py | 31 +++++++++ dialing_app/models.py | 3 + dialing_app/templates/index.html | 8 ++- static/css/custom.css | 9 +-- 17 files changed, 122 insertions(+), 69 deletions(-) diff --git a/abonapp/templates/abonapp/dial_log.html b/abonapp/templates/abonapp/dial_log.html index 695ab3a..169906c 100644 --- a/abonapp/templates/abonapp/dial_log.html +++ b/abonapp/templates/abonapp/dial_log.html @@ -21,7 +21,7 @@ {{ log.calldate|date:'d E Y, H:i:s' }} diff --git a/abonapp/templates/abonapp/editAbon.html b/abonapp/templates/abonapp/editAbon.html index 2b7cf0f..e219ecb 100644 --- a/abonapp/templates/abonapp/editAbon.html +++ b/abonapp/templates/abonapp/editAbon.html @@ -142,11 +142,11 @@
{% csrf_token %}
- -
+ +
{% if device %} - - {{ device.comment|truncatechars:11 }} {{ device.ip_address }} + + {{ device.comment|truncatechars:11 }} {{ device.ip_address }} @@ -161,8 +161,8 @@ {% if device %}
- -
+ +
{% trans 'Is dynamic network settings' %}
-
+
@@ -206,8 +206,8 @@ {% for ef in abon.extra_fields.all %}
- -
+ +
@@ -226,7 +226,7 @@ {% endfor %}
-
+
{% trans 'Add' %} diff --git a/accounts_app/locale/ru/LC_MESSAGES/django.po b/accounts_app/locale/ru/LC_MESSAGES/django.po index 2b16e4c..d1acae5 100644 --- a/accounts_app/locale/ru/LC_MESSAGES/django.po +++ b/accounts_app/locale/ru/LC_MESSAGES/django.po @@ -153,7 +153,7 @@ msgid "Change self onfo" msgstr "Изменить инфу о себе" msgid "Permission options" -msgstr "Настройка прав" +msgstr "Права" msgid "Edit" msgstr "Редактировать" diff --git a/accounts_app/templates/accounts/ext.htm b/accounts_app/templates/accounts/ext.htm index b17ed8c..cd0e49b 100644 --- a/accounts_app/templates/accounts/ext.htm +++ b/accounts_app/templates/accounts/ext.htm @@ -20,7 +20,7 @@ {% else %} ava {% endif %} -
+
{% if userprofile == request.user %} diff --git a/accounts_app/templates/accounts/index.html b/accounts_app/templates/accounts/index.html index b90ee3b..db5f796 100644 --- a/accounts_app/templates/accounts/index.html +++ b/accounts_app/templates/accounts/index.html @@ -2,7 +2,7 @@ {% load i18n %} {% block content %} -
+
diff --git a/devapp/base_intr.py b/devapp/base_intr.py index a3d4a98..18be1c0 100644 --- a/devapp/base_intr.py +++ b/devapp/base_intr.py @@ -73,8 +73,12 @@ class SNMPBaseWorker(object, metaclass=ABCMeta): return self.ses.set(oid, value) def get_list(self, oid): - l = self.ses.walk(oid) - return [e.value for e in l] + return self.ses.walk(oid) + + def get_list_keyval(self, oid): + for v in self.ses.walk(oid): + snmpnum = v.oid.split('.')[-1:] + yield v.value, snmpnum[0] if len(snmpnum) > 0 else None def get_item(self, oid): return self.ses.get(oid).value diff --git a/devapp/dev_types.py b/devapp/dev_types.py index 0ece120..3aeea68 100644 --- a/devapp/dev_types.py +++ b/devapp/dev_types.py @@ -191,18 +191,17 @@ class OnuDevice(DevBase, SNMPBaseWorker): return try: status = self.get_item('.1.3.6.1.4.1.3320.101.10.1.1.26.%d' % num) - print('Status', status) signal = self.get_item('.1.3.6.1.4.1.3320.101.10.5.1.5.%d' % num) - print(signal) distance = self.get_item('.1.3.6.1.4.1.3320.101.10.1.1.27.%d' % num) mac = ':'.join(['%x' % ord(i) for i in self.get_item('.1.3.6.1.4.1.3320.101.10.1.1.3.%d' % num)]) + uptime = self.get_item('.1.3.6.1.2.1.2.2.1.9.%d' % num) return { 'status': status, '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(self.get_item('.1.3.6.1.2.1.2.2.1.9.%d' % num)) / 100)) + 'uptime': RuTimedelta(timedelta(seconds=int(uptime) / 100)) if uptime != 'NOSUCHINSTANCE' else 0 } except EasySNMPTimeoutError: return {'err': _('ONU not connected')} diff --git a/devapp/locale/ru/LC_MESSAGES/django.po b/devapp/locale/ru/LC_MESSAGES/django.po index 1ad880a..6f29c1c 100644 --- a/devapp/locale/ru/LC_MESSAGES/django.po +++ b/devapp/locale/ru/LC_MESSAGES/django.po @@ -77,6 +77,9 @@ msgstr "Тип устройства" msgid "SNMP password" msgstr "Пароль SNMP" +msgid "SNMP Num" +msgstr "SNMP Ном." + #: devapp/templates/devapp/add_dev.html:62 devapp/templates/devapp/dev.html:50 msgid "Map point" msgstr "Точка топологии" @@ -321,3 +324,13 @@ msgstr "ONU ошибка" msgid "ONU not connected" msgstr "ONU не в сети" + +msgid "Parent device not found" +msgstr "Вышестоящее устройство не найдено" + +msgid "Fixed" +msgstr "Исправлено, обновите страницу" + +msgid "Fix it" +msgstr "Исправить" + diff --git a/devapp/models.py b/devapp/models.py index 4d60c4e..7d0ed6c 100644 --- a/devapp/models.py +++ b/devapp/models.py @@ -90,6 +90,40 @@ class Device(models.Model): def __str__(self): return "%s: (%s) %s %s" % (self.comment, self.get_devtype_display(), self.ip_address, self.mac_addr or '') + def update_dhcp(self): + if self.devtype != 'On': + return + grp = self.user_group.pk + code = '' + if grp == 87: + code = 'chk' + elif grp == 85: + code = 'drf' + elif grp == 86: + code = 'eme' + elif grp == 84: + code = 'kunc' + elif grp == 47: + code = 'mtr' + elif grp == 60: + code = 'nvg' + elif grp == 65: + code = 'ohot' + elif grp == 89: + code = 'psh' + elif grp == 92: + code = 'str' + elif grp == 80: + code = 'uy' + elif grp == 79 or grp == 91: + code = 'zrk' + elif grp == 95: + code = 'yst' + elif grp == 96: + code = 'lzk' + newmac = str(self.mac_addr) + run(["%s/devapp/onu_register.sh" % settings.BASE_DIR, newmac, code]) + class Port(models.Model): device = models.ForeignKey(Device, verbose_name=_('Device')) @@ -109,37 +143,4 @@ class Port(models.Model): verbose_name_plural = _('Ports') -def dev_post_save_signal(sender, instance, **kwargs): - if instance.devtype != 'On': - return - grp = instance.user_group.pk - code = '' - if grp == 87: - code = 'chk' - elif grp == 85: - code = 'drf' - elif grp == 86: - code = 'eme' - elif grp == 84: - code = 'kunc' - elif grp == 47: - code = 'mtr' - elif grp == 60: - code = 'nvg' - elif grp == 65: - code = 'ohot' - elif grp == 89: - code = 'psh' - elif grp == 92: - code = 'str' - elif grp == 80: - code = 'uy' - elif grp == 79 or grp == 91: - code = 'zrk' - elif grp == 95: - code = 'yst' - newmac = str(instance.mac_addr) - run(["%s/devapp/onu_register.sh" % settings.BASE_DIR, newmac, code]) - - -models.signals.post_save.connect(dev_post_save_signal, sender=Device) + diff --git a/devapp/templates/devapp/custom_dev_page/olt.html b/devapp/templates/devapp/custom_dev_page/olt.html index b9074d4..223e1e3 100644 --- a/devapp/templates/devapp/custom_dev_page/olt.html +++ b/devapp/templates/devapp/custom_dev_page/olt.html @@ -14,8 +14,9 @@ + - + @@ -29,6 +30,7 @@ {% else %} {% endif %} + @@ -40,7 +42,7 @@ {% empty %} - + {% endfor %} {% endwith %} diff --git a/devapp/templates/devapp/custom_dev_page/onu.html b/devapp/templates/devapp/custom_dev_page/onu.html index b9bd082..e1cc350 100644 --- a/devapp/templates/devapp/custom_dev_page/onu.html +++ b/devapp/templates/devapp/custom_dev_page/onu.html @@ -77,6 +77,10 @@ {% trans 'Mac on OLT' %}: {{ onu_details.mac }}

+ + + +
{% else %} {% trans 'Mac on OLT' %}: {{ onu_details.mac }} diff --git a/devapp/templates/devapp/devices.html b/devapp/templates/devapp/devices.html index c903d7e..0ec7a60 100644 --- a/devapp/templates/devapp/devices.html +++ b/devapp/templates/devapp/devices.html @@ -12,7 +12,7 @@

{% trans 'Devices' %}

-
#{% trans 'SNMP Num' %} {% trans 'Name' %}{% trans 'Mac' %}{% trans 'Mac' %} {% trans 'Signal' %} #
{{ port.num }} {{ port.nm }} {{ port.mac }} {{ port.signal }}
{% trans 'Ports not found' %}{% trans 'Ports not found' %}
+
@@ -56,7 +56,7 @@ - + {% for log in logs %} - + + {% with lurl=log.url %} @@ -38,6 +39,7 @@ + {% endwith %} {% empty %} diff --git a/static/css/custom.css b/static/css/custom.css index 4fc5773..a96758d 100644 --- a/static/css/custom.css +++ b/static/css/custom.css @@ -75,7 +75,7 @@ body { .main { margin-top: 10px; - display: table; + /*display: table;*/ } .table-responsive thead { @@ -267,10 +267,3 @@ div#loading>div.gif { border-style: ridge; } -@media (max-width: 767px) { - .nav-tabs.nav-justified > li { - float: left; - width: 50%; - } -} -
#{{ dev.ip_address }} {{ dev.comment }} {{ dev.mac_addr|default:_('Not assigned') }}{{ dev.mon.plugin_output|default:'–' }} {{ dev.get_devtype_display }} {% if can_del_dev %} diff --git a/devapp/urls.py b/devapp/urls.py index 8b31ece..d4647ef 100644 --- a/devapp/urls.py +++ b/devapp/urls.py @@ -6,6 +6,7 @@ from . import views urlpatterns = [ url(r'^$', views.group_list, name='group_list'), url(r'^devices_without_groups$', views.devices_null_group, name='devices_null_group'), + url(r'^fix_onu/$', views.fix_onu, name='fix_onu'), url(r'^(?P\d+)$', views.devices, name='devs'), url(r'^(?P\d+)/add$', views.dev, name='add'), url(r'^(\d+)/(?P\d+)$', views.devview, name='view'), diff --git a/devapp/views.py b/devapp/views.py index 81cc10a..90ce85b 100644 --- a/devapp/views.py +++ b/devapp/views.py @@ -93,6 +93,7 @@ def dev(request, grp, devid=0): frm = DeviceForm(request.POST, instance=devinst) if frm.is_valid(): ndev = frm.save() + ndev.update_dhcp() messages.success(request, _('Device info has been saved')) return redirect('devapp:edit', ndev.user_group.pk, ndev.pk) else: @@ -415,3 +416,33 @@ def fix_device_group(request, did): 'dev': dev, 'selected_parent_dev': dev.parent_dev }) + + +@login_required +def fix_onu(request): + mac = request.GET.get('cmd_param') + status = 1 + text = '' + try: + onu = Device.objects.get(mac_addr=mac, devtype='On') + parent = onu.parent_dev + if parent is not None: + manobj = parent.get_manager_object() + ports = manobj.get_list_keyval('.1.3.6.1.4.1.3320.101.10.1.1.3') + for srcmac, snmpnum in ports: + real_mac = ':'.join(['%x' % ord(i) for i in srcmac]) + if mac == real_mac: + onu.snmp_item_num = snmpnum + onu.save(update_fields=['snmp_item_num']) + status = 0 + text = ' ' % _('Fixed') + break + else: + text = text + ' %s' % _('Parent device not found') + except Device.DoesNotExist: + pass + return HttpResponse(dumps({ + 'status': status, + 'dat': text + })) + diff --git a/dialing_app/models.py b/dialing_app/models.py index e448e91..307cd8c 100644 --- a/dialing_app/models.py +++ b/dialing_app/models.py @@ -59,5 +59,8 @@ class AsteriskCDR(models.Model): return "%s/recording/bug" % path return "%s/monitor" % path + def url(self): + return "%s/%s-%s-%s.wav" % ( self.path_to_media(), self.calldate.strftime('%Y/%m/%d/%H_%M'), self.src, self.dst ) + class Meta: db_table = 'cdr' diff --git a/dialing_app/templates/index.html b/dialing_app/templates/index.html index 68fadb2..d8a9a92 100644 --- a/dialing_app/templates/index.html +++ b/dialing_app/templates/index.html @@ -20,13 +20,14 @@
- + {{ log.answer|date:'d M, H:i:s' }} {{ log.end|date:'d M, H:i:s' }} {{ log.locate_disposition }}