From 89e0883af703dc347588d41bb9cd6abf5af512d8 Mon Sep 17 00:00:00 2001 From: Dmitry Novikov Date: Mon, 3 Dec 2018 10:49:26 +0300 Subject: [PATCH 1/4] add zte onu port view --- devapp/dev_types.py | 15 +++++++++++++++ devapp/locale/ru/LC_MESSAGES/django.po | 3 +++ .../devapp/custom_dev_page/onu_for_zte.html | 1 + 3 files changed, 19 insertions(+) diff --git a/devapp/dev_types.py b/devapp/dev_types.py index c57dfde..40cfaaf 100644 --- a/devapp/dev_types.py +++ b/devapp/dev_types.py @@ -514,3 +514,18 @@ class ZteOnuDevice(OnuDevice): snmp_fiber_num = int(bin_snmp_fiber_number, base=2) device.snmp_extra = "%d.%d" % (snmp_fiber_num, new_onu_port_num) device.save(update_fields=('snmp_extra',)) + + def get_fiber_str(self): + dev = self.db_instance + if not dev: + return + dat = dev.snmp_extra + if dat and '.' in dat: + snmp_fiber_num, onu_port_num = dat.split('.') + snmp_fiber_num = int(snmp_fiber_num) + bin_snmp_fiber_num = bin(snmp_fiber_num)[2:] + rack_num = int(bin_snmp_fiber_num[5:13], 2) + fiber_num = int(bin_snmp_fiber_num[13:21], 2) + return 'gpon-onu_1/%d/%d:%s' % ( + rack_num, fiber_num, onu_port_num + ) diff --git a/devapp/locale/ru/LC_MESSAGES/django.po b/devapp/locale/ru/LC_MESSAGES/django.po index 6ab7c45..8719acf 100644 --- a/devapp/locale/ru/LC_MESSAGES/django.po +++ b/devapp/locale/ru/LC_MESSAGES/django.po @@ -639,6 +639,9 @@ msgstr "Процесс занят другой задачей, подождит msgid "You have not info in extra_data field, please fill it in JSON" msgstr "Не заполнено поле 'Техническая информация', обратитесь к администратору" +msgid "Fiber" +msgstr "Интерфейс" + #~ msgid "Device %(device_name)s is up" #~ msgstr "%(device_name)s в сети" diff --git a/devapp/templates/devapp/custom_dev_page/onu_for_zte.html b/devapp/templates/devapp/custom_dev_page/onu_for_zte.html index 49317c6..43563d2 100644 --- a/devapp/templates/devapp/custom_dev_page/onu_for_zte.html +++ b/devapp/templates/devapp/custom_dev_page/onu_for_zte.html @@ -18,6 +18,7 @@
  • {% trans 'Ip address' %}: {{ dev.ip_address|default:'-' }}
  • {% trans 'Mac' %}: {{ dev.mac_addr }}
  • {% trans 'Description' %}: {{ dev.comment }}
  • +
  • {% trans 'Fiber' %}: {{ dev_manager.get_fiber_str }}
  • {% for da in dev_accs %}
  • {% trans 'Attached user' %}: {% if da.group %} From 7ede2ac31a260ad2f6ef861cf43bff47bb7742c2 Mon Sep 17 00:00:00 2001 From: Dmitry Novikov Date: Mon, 3 Dec 2018 11:24:00 +0300 Subject: [PATCH 2/4] fix button status --- abonapp/templates/abonapp/service.html | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/abonapp/templates/abonapp/service.html b/abonapp/templates/abonapp/service.html index 1a3bc6d..dd1326c 100644 --- a/abonapp/templates/abonapp/service.html +++ b/abonapp/templates/abonapp/service.html @@ -23,10 +23,18 @@ {% with can_ch_trf=perms.tariff_app.change_tariff %} {% for service in services %} - - - + + {% if abon_tariff %} + + + + {% else %} + + + + {% endif %} + {% if can_ch_trf %} {{ service.title }} From e264943ac4d2c7ce529c850e205cdff9795bf9f1 Mon Sep 17 00:00:00 2001 From: Dmitry Novikov Date: Mon, 3 Dec 2018 12:26:33 +0300 Subject: [PATCH 3/4] more informative logs --- abonapp/locale/ru/LC_MESSAGES/django.po | 8 ++++---- abonapp/models.py | 4 +++- periodic.py | 7 ++++--- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/abonapp/locale/ru/LC_MESSAGES/django.po b/abonapp/locale/ru/LC_MESSAGES/django.po index 4a46d07..2d77f35 100644 --- a/abonapp/locale/ru/LC_MESSAGES/django.po +++ b/abonapp/locale/ru/LC_MESSAGES/django.po @@ -195,8 +195,8 @@ msgid "Service already activated" msgstr "Услуга уже подключена" #: models.py:174 -msgid "not enough money" -msgstr "Не хватает денег на счету" +msgid "%s not enough money for service %s" +msgstr "%s не имеет достаточно средств для %s" #: models.py:190 msgid "Buy service default log" @@ -939,8 +939,8 @@ msgstr "Квитанция на оплату была создана" #: views.py:419 #, python-format -msgid "Service '%(service_name)s' has connected via admin" -msgstr "Услуга '%(service_name)s' подключена администратором" +msgid "Service '%(service_name)s' has connected via admin until %(deadline)s" +msgstr "Услуга '%(service_name)s' подключена администратором до %(deadline)s" #: views.py:429 msgid "Tariff has been picked" diff --git a/abonapp/models.py b/abonapp/models.py index 7878895..0d063b9 100644 --- a/abonapp/models.py +++ b/abonapp/models.py @@ -239,7 +239,9 @@ class Abon(BaseAccount): # if not enough money if self.ballance < amount: - raise LogicError(_('not enough money')) + raise LogicError(_('%s not enough money for service %s') % ( + self.username, tariff.title + )) with transaction.atomic(): new_abtar = AbonTariff.objects.create( diff --git a/periodic.py b/periodic.py index 52731e0..1d08ce8 100755 --- a/periodic.py +++ b/periodic.py @@ -37,7 +37,7 @@ def main(): signals.pre_delete.disconnect(abontariff_pre_delete, sender=AbonTariff) AbonTariff.objects.filter(abon=None).delete() now = timezone.now() - fields = ('id', 'tariff__title', 'abon__id') + fields = ('id', 'tariff__title', 'abon__id', 'abon__username') expired_services = AbonTariff.objects.exclude(abon=None).filter( deadline__lt=now, abon__autoconnect_service=False @@ -51,8 +51,9 @@ def main(): amount=0, author=None, date=now, - comment="Срок действия услуги '%(service_name)s' истёк" % { - 'service_name': ex_srv['tariff__title'] + comment="Срок действия услуги '%(service_name)s' для '%(username)s' истёк" % { + 'service_name': ex_srv['tariff__title'], + 'username': ex_srv['abon__username'] } ) print(log) From e56ee4051e8abb0e6162a1a9ab166d0696cf8453 Mon Sep 17 00:00:00 2001 From: Dmitry Novikov Date: Mon, 3 Dec 2018 13:59:59 +0300 Subject: [PATCH 4/4] add vlan and ip information to zte onu page --- devapp/dev_types.py | 15 ++++++++++----- .../devapp/custom_dev_page/onu_for_zte.html | 6 ++++++ 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/devapp/dev_types.py b/devapp/dev_types.py index 40cfaaf..e4daec4 100644 --- a/devapp/dev_types.py +++ b/devapp/dev_types.py @@ -428,15 +428,20 @@ class ZteOnuDevice(OnuDevice): try: fiber_num, onu_num = snmp_extra.split('.') fiber_num, onu_num = int(fiber_num), int(onu_num) - status = self.get_item('.1.3.6.1.4.1.3902.1012.3.50.12.1.1.1.%d.%d.1' % (fiber_num, onu_num)) - signal = self.get_item('.1.3.6.1.4.1.3902.1012.3.50.12.1.1.10.%d.%d.1' % (fiber_num, onu_num)) - distance = self.get_item('.1.3.6.1.4.1.3902.1012.3.50.12.1.1.18.%d.%d.1' % (fiber_num, onu_num)) - name = self.get_item('.1.3.6.1.4.1.3902.1012.3.50.11.2.1.1.%d.%d' % (fiber_num, onu_num)) + fiber_addr = '%d.%d' % (fiber_num, onu_num) + status = self.get_item('.1.3.6.1.4.1.3902.1012.3.50.12.1.1.1.%s.1' % fiber_addr) + signal = self.get_item('.1.3.6.1.4.1.3902.1012.3.50.12.1.1.10.%s.1' % fiber_addr) + distance = self.get_item('.1.3.6.1.4.1.3902.1012.3.50.12.1.1.18.%s.1' % fiber_addr) + name = self.get_item('.1.3.6.1.4.1.3902.1012.3.50.11.2.1.1.%s' % fiber_addr) + ip_addr = self.get_item('.1.3.6.1.4.1.3902.1012.3.50.16.1.1.10.%s' % fiber_addr) + vlans = self.get_item('.1.3.6.1.4.1.3902.1012.3.50.15.100.1.1.7.%s.1.1' % fiber_addr) return { 'status': status, 'signal': conv_signal(safe_int(signal)), 'name': name, - 'distance': int(distance) / 10 if distance != 'NOSUCHINSTANCE' else 0 + 'distance': int(distance) / 10 if distance != 'NOSUCHINSTANCE' else 0, + 'ip_addr': ip_addr if ip_addr != 'NOSUCHINSTANCE' and ip_addr else None, + 'vlans': vlans if vlans != 'NOSUCHINSTANCE' else None } except ValueError: pass diff --git a/devapp/templates/devapp/custom_dev_page/onu_for_zte.html b/devapp/templates/devapp/custom_dev_page/onu_for_zte.html index 43563d2..fa01ee6 100644 --- a/devapp/templates/devapp/custom_dev_page/onu_for_zte.html +++ b/devapp/templates/devapp/custom_dev_page/onu_for_zte.html @@ -76,6 +76,12 @@ {% trans 'Name on OLT' %}: {{ onu_details.name }}
    {% trans 'Distance(m)' %}: {{ onu_details.distance }}
    {% trans 'Signal' %}: {{ onu_details.signal }}
    + {% if onu_details.ip_addr %} + {% trans 'Ip addr' %}: {{ onu_details.ip_addr }}
    + {% endif %} + {% if onu_details.vlans %} + {% trans 'VLan list' %}: {{ onu_details.vlans }} + {% endif %}