From 169685a185097ac970b2e252c1f92f3cbc1f02d2 Mon Sep 17 00:00:00 2001 From: bashmak Date: Thu, 24 Aug 2017 15:40:42 +0300 Subject: [PATCH] =?UTF-8?q?FIXBUG:=20=D0=BD=D0=B5=20=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=B8=D0=BB=D1=8C=D0=BD=D0=BE=20=D0=BE=D0=BF=D0=B8=D1=81?= =?UTF-8?q?=D0=B0=D0=BB=20=D0=BE=D0=BF=D1=86=D0=B8=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/dev.md | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/docs/dev.md b/docs/dev.md index c6c73e6..c263beb 100644 --- a/docs/dev.md +++ b/docs/dev.md @@ -1,5 +1,5 @@ ->Перед началом обязательно, хотя бы поверхностно, ознакомиться с документацией к -[Django](https://docs.djangoproject.com). +> Перед началом обязательно, хотя бы поверхностно, ознакомиться с документацией к +> [Django](https://docs.djangoproject.com). ## Добавление поддерживаемого устройства (Свича) Для того чтоб добавить новый тип устройства с которым потом сможет работать биллинг нужно открыть файл *devapp/dev_types.py* @@ -89,7 +89,7 @@ class EltexSwitch(DLinkDevice): Метод **@get_device_name** получает по SNMP имя устройства, просто укажите в вашей реализации нужный OID. -Метод **@uptime**, понятно что возвращает, укажите нужный OID. Вернётся тип *RuTimedelta*, это не тип Django, я сам его реализовал +Метод **@uptime**, понятно что возвращает, укажите нужный OID. Вернётся тип *RuTimedelta*, это переопределённый тип **timedelta**, я его реализовал для локализации временного промежутка на русский. Статический метод **@has_attachable_to_subscriber** возвращает правду если это устройство можно привязать к абоненту. @@ -97,7 +97,8 @@ class EltexSwitch(DLinkDevice): абонентам при авторизации. Статический метод **@is_use_device_port** используется в DHCP чтоб понять что мы используем для привязки к абоненту всё устройство или -только порт устройства. Например, если у устройства только 1 порт абонента (PON ONU), то нужно вернуть True, во всех остальных случаях False. +только порт устройства. Например, если у устройства только 1 порт абонента (PON ONU), и мы привязываем этого абонента ко всему устройству +а не к порту, то нужно вернуть False, На обычных свичах где мы авторизуем абонента на порту возвращаем True. Реализация SNMPBaseWorker по сути не нужна, класс абстрактных методов не имеет. Потому когда наследуем наследуемся от *DevBase* то в базовые классы добавим и SNMPBaseWorker, как это сделано в *DLinkDevice*: @@ -266,8 +267,10 @@ NasNetworkError, как понятно из названия, вызываетс Биллинг прослушивает эти исключения при выполнении, и при возбуждении этих исключений отображает текст ошибки на экране пользователя. -При переопределении базового класса пожалуйста не забывайте вызвать базовый метод чтоб отработали декораторы методов интерфейса, этот декоратор проверяет тип входных данных. -Динамическая типизация python иногда подкладывает свинью в том смысле что можно передать не то что вы хотели бы передать, потому типы лучше проконтролировать, и тогда интерпретатор станет вашим другом помошником :) +При переопределении базового класса пожалуйста не забывайте вызвать базовый метод чтоб отработали декораторы методов +интерфейса, этот декоратор проверяет тип входных данных. +Динамическая типизация python иногда подкладывает свинью в том смысле что можно передать не то что вы хотели бы передать, +потому типы лучше проконтролировать, и тогда интерпретатор станет вашим другом помошником :) Когда я прошу вызвать базовый метод, я имею ввиду это: ```python @@ -278,8 +281,9 @@ def add_user_range(self, user_list): ... ``` -Кстати, не все методы обязательно реализовывать, некоторые из них зарезервированы на будущие цели, в комментариях к их прототипам в интерфейсе *BaseTransmitter* это сказано. -Поэтому просто переопределите эти зарезервированные методы как пустые, например метод *add_tariff_range* нигде в биллинге пока не вызывается. так что можно определить его пустым. +Кстати, не все методы обязательно реализовывать, некоторые из них зарезервированы на будущие цели, в комментариях к их +прототипам в интерфейсе *BaseTransmitter* это сказано. Поэтому просто переопределите эти зарезервированные методы как +пустые, например метод *add_tariff_range* нигде в биллинге пока не вызывается. так что можно определить его пустым. ```python def add_tariff_range(self, tariff_list): pass