@ -80,12 +80,14 @@ class EltexSwitch(DLinkDevice):
```
```
Свойство **@description** Просто отображает человекопонятное название вашего устройства в биллинге.
Свойство **@description** Просто отображает человекопонятное название вашего устройства в биллинге.
Заметьте что строка на английском и заключена в процедуру **_** (это ugettext_lazy, см. в импорте вверху файла),
Заметьте что строка на английском и заключена в процедуру **_** (это ugettext_lazy, см. в импорте вверху файла),
это локализация для текущего языка. Про локализацию можно почитать в соответствующем разделе [django translation](https://docs.djangoproject.com/en/1.11/topics/i18n/translation/).
это локализация для текущего языка. Про локализацию можно почитать в соответствующем разделе документации *Django*
Метод **@get_ports** чаще всего редко изменяется по алгоритму, так что вам, в большенстве случаев, достаточно добавить
Метод **@get_ports** чаще всего редко изменяется по алгоритму, так что вам, в большенстве случаев, достаточно добавить
нужные SNMP OID в соответствующие места процедуры. Но вы вольны реализовать ваш метод получения портов
нужные SNMP OID в соответствующие места процедуры. Но вы вольны реализовать ваш метод получения портов
как вам угодно, главное чтоб возвращался список объектов определённого выше класса порта для этого свича.
как вам угодно, главное чтоб возвращался список объектов определённого выше класса порта для этого свича.
В данном случае возвращается список объектов *EltexPort*.
В данном случае возвращается список объектов *EltexPort*. На самом деле не обязательно список, можете вернуть кортеж
или генератор, что-то итериуемое.
Метод **@get_device_name** получает по SNMP имя устройства, просто укажите в вашей реализации нужный OID.
Метод **@get_device_name** получает по SNMP имя устройства, просто укажите в вашей реализации нужный OID.
@ -101,7 +103,7 @@ class EltexSwitch(DLinkDevice):
а не к порту, то нужно указать False, На обычных свичах где мы авторизуем абонента на порту возвращаем True.
а не к порту, то нужно указать False, На обычных свичах где мы авторизуем абонента на порту возвращаем True.
Реализация SNMPBaseWorker по сути не нужна, класс абстрактных методов не имеет.
Реализация SNMPBaseWorker по сути не нужна, класс абстрактных методов не имеет.
Потому когда наследуем наследуемся от *DevBase* то в базовые классы добавим и SNMPBaseWorker, как это сделано в *DLinkDevice*:
Потому когда наследуемся от *DevBase* то в базовые классы добавим и SNMPBaseWorker, как это сделано в *DLinkDevice*:
```python
```python
class DLinkDevice(DevBase, SNMPBaseWorker):
class DLinkDevice(DevBase, SNMPBaseWorker):
@ -117,35 +119,6 @@ class DLinkDevice(DevBase, SNMPBaseWorker):
>П.С. Не изучайте как пример реализацию для PON, она, как по мне, костыльна. Это связано с тем что PON сильно отличается от
>П.С. Не изучайте как пример реализацию для PON, она, как по мне, костыльна. Это связано с тем что PON сильно отличается от
>принципа работы обычного свича, и чтоб подружить свичи и PON был реализован такой костыль.
>принципа работы обычного свича, и чтоб подружить свичи и PON был реализован такой костыль.
## Добавим платёжную систему
Для того чтоб добавить платёжную систему добавьте в файл *abonapp/pay_systems.py* процедуру которая будет принимать
request, далее он пригодится в теле вашей процедуры. это тот самый request который передаётся в *view*. Пустая процедура, возвращающая xml, будет выглядеть так: