Browse Source

Add form for fix abon conflict on port

devel
bashmak 8 years ago
parent
commit
3ab9041b90
  1. 522
      devapp/locale/ru/LC_MESSAGES/django.po
  2. 36
      devapp/templates/devapp/manage_ports/fix_abon_device.html
  3. 11
      devapp/templates/devapp/manage_ports/list.html
  4. 2
      devapp/templates/devapp/manage_ports/modal_add_edit_port.html
  5. 25
      devapp/urls.py
  6. 91
      devapp/views.py

522
devapp/locale/ru/LC_MESSAGES/django.po

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-05-22 11:59+0300\n"
"POT-Creation-Date: 2018-01-06 16:05+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Dmitry Novikov nerosketch@gmail.com\n" "Last-Translator: Dmitry Novikov nerosketch@gmail.com\n"
"Language: ru\n" "Language: ru\n"
@ -18,322 +18,466 @@ msgstr ""
"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n" "%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n"
"%100>=11 && n%100<=14)? 2 : 3);\n" "%100>=11 && n%100<=14)? 2 : 3);\n"
#: devapp/dev_types.py:54
#: dev_types.py:38
msgid "DLink switch" msgid "DLink switch"
msgstr "Свич D'Link" msgstr "Свич D'Link"
#: devapp/dev_types.py:70
#: dev_types.py:53
msgid "does not fetch the name" msgid "does not fetch the name"
msgstr "не получил имя" msgstr "не получил имя"
#: devapp/dev_types.py:72
#: dev_types.py:55
msgid "does not fetch the mac" msgid "does not fetch the mac"
msgstr "не нашёл мак" msgstr "не нашёл мак"
#: devapp/dev_types.py:116
#: dev_types.py:108
msgid "PON OLT" msgid "PON OLT"
msgstr "PON OLT голова" msgstr "PON OLT голова"
#: devapp/templates/devapp/add_dev.html:7
#: devapp/templates/devapp/devices.html:7
#: devapp/templates/devapp/devices_null_group.html:7
#: devapp/templates/devapp/group_list.html:7
#: devapp/templates/devapp/group_list.html:10
msgid "Groups"
msgstr "Группы"
#: dev_types.py:160
msgid "PON ONU"
msgstr "Онушка"
#: devapp/templates/devapp/add_dev.html:8
msgid "Add new device"
msgstr "Добавить устройство"
#: dev_types.py:205
msgid "ONU not connected"
msgstr "ONU не в сети"
#: devapp/templates/devapp/add_dev.html:14
#: devapp/templates/devapp/ports.html:93
msgid "Not assigned"
msgstr "&lt;Не назначено&gt;"
#: dev_types.py:236
msgid "Eltex switch"
msgstr "Элтекс свич"
#: devapp/templates/devapp/add_dev.html:19 devapp/templates/devapp/dev.html:7
msgid "Device info"
msgstr "Инфа о железке"
#: forms.py:16
msgid "Mac address is required for fill"
msgstr "MAC-адрес необходим для заполнения"
#: forms.py:17
msgid "Device with that mac is already exist"
msgstr "Устройство с этим мак-адресом уже есть"
#: forms.py:53
msgid "Port number on device must be unique"
msgstr "Номер порта на устройстве должен быть уникальным"
#: devapp/templates/devapp/add_dev.html:26 devapp/templates/devapp/dev.html:14
#: devapp/templates/devapp/devices.html:20
#: devapp/templates/devapp/devices_null_group.html:20
#: models.py:49 templates/devapp/custom_dev_page/onu.html.py:18
#: templates/devapp/devices.html:21 templates/devapp/devices_null_group.html:20
msgid "Ip address" msgid "Ip address"
msgstr "Ip адрес" msgstr "Ip адрес"
#: devapp/templates/devapp/add_dev.html:35 devapp/templates/devapp/dev.html:23
#: devapp/templates/devapp/devices.html:26
#: devapp/templates/devapp/devices_null_group.html:26
#: models.py:50 templates/devapp/devices.html.py:31
msgid "Mac address"
msgstr "Мак адрес"
#: models.py:51 templates/devapp/devices.html.py:27
#: templates/devapp/devices_null_group.html:26
msgid "Comment" msgid "Comment"
msgstr "Комментарий" msgstr "Комментарий"
#: devapp/templates/devapp/add_dev.html:44 devapp/templates/devapp/dev.html:32
#: devapp/templates/devapp/devices.html:32
#: devapp/templates/devapp/devices_null_group.html:32
#: models.py:52 templates/devapp/devices.html.py:35
#: templates/devapp/devices_null_group.html:32
msgid "Device type" msgid "Device type"
msgstr "Тип устройства" msgstr "Тип устройства"
#: devapp/templates/devapp/add_dev.html:53 devapp/templates/devapp/dev.html:41
#: models.py:53
msgid "SNMP password" msgid "SNMP password"
msgstr "Пароль SNMP" msgstr "Пароль SNMP"
msgid "SNMP Num"
msgstr "SNMP Ном."
#: devapp/templates/devapp/add_dev.html:62 devapp/templates/devapp/dev.html:50
msgid "Map point"
msgstr "Точка топологии"
#: devapp/templates/devapp/add_dev.html:71 devapp/templates/devapp/dev.html:59
#: models.py:54
msgid "User group" msgid "User group"
msgstr "Группа" msgstr "Группа"
#: devapp/templates/devapp/add_dev.html:81 devapp/templates/devapp/dev.html:69
msgid "Save"
msgstr "Сохранить"
#: models.py:55 templates/devapp/add_dev.html.py:46
#: templates/devapp/custom_dev_page/onu.html:34 templates/devapp/dev.html:33
#: templates/devapp/fix_dev_group.html.py:49
msgid "Parent device"
msgstr "Родительское устройство"
#: devapp/templates/devapp/add_dev.html:84 devapp/templates/devapp/dev.html:72
msgid "Reset"
msgstr "Сбросить"
#: models.py:57
#, fuzzy
#| msgid "SNMP Num"
msgid "SNMP Number"
msgstr "SNMP Ном."
#: models.py:64
msgid "Can view device"
msgstr "Может видеть устройство"
#: models.py:66 models.py:135
msgid "Device"
msgstr "Устройство"
#: devapp/templates/devapp/devices.html:13
#: devapp/templates/devapp/devices_null_group.html:8
#: models.py:67 templates/devapp/devices.html.py:13
#: templates/devapp/devices_null_group.html:8
msgid "Devices" msgid "Devices"
msgstr "Устройства" msgstr "Устройства"
#: devapp/templates/devapp/devices.html:61
#: devapp/templates/devapp/devices_null_group.html:61
msgid "Devices does not found"
msgstr "Нет созданных устройств"
#: models.py:136 templates/devapp/manage_ports/list.html.py:11
msgid "Number"
msgstr "Номер"
#: devapp/templates/devapp/devices.html:61
#: devapp/templates/devapp/devices.html:70
#: devapp/templates/devapp/devices_null_group.html:61
#: devapp/templates/devapp/devices_null_group.html:70
msgid "Create"
msgstr "Cоздать"
#: models.py:137 templates/devapp/custom_dev_page/onu.html.py:20
#: templates/devapp/custom_dev_page/ports.html:74
#: templates/devapp/manage_ports/add_ports.html:33
#: templates/devapp/manage_ports/list.html:12
msgid "Description"
msgstr "Описание"
#: devapp/templates/devapp/devices_null_group.html:13
#: devapp/templates/devapp/group_list.html:41
msgid "Devices without group"
msgstr "Устройства без группы"
#: models.py:146
msgid "Can toggle ports"
msgstr "Может переключать порты"
#: devapp/templates/devapp/group_list.html:18
msgid "Group title"
msgstr "Название"
#: models.py:148 templates/devapp/custom_dev_page/ports.html.py:96
#: templates/devapp/manage_ports/fix_abon_device.html:25
msgid "Port"
msgstr "Порт"
#: devapp/templates/devapp/group_list.html:28
#, fuzzy
#| msgid "Dot was not pinged"
msgid "Groups was not found"
msgstr "Эта точка не пингуется"
#: models.py:149
msgid "Ports"
msgstr "Порты"
#: devapp/templates/devapp/group_list.html:37
msgid "Add group"
msgstr "Добавить группу"
#: templates/devapp/add_dev.html:8 templates/devapp/devices.html.py:7
#: templates/devapp/devices_null_group.html:7
#: templates/devapp/fix_dev_group.html:9 templates/devapp/group_list.html:7
#: templates/devapp/group_list.html.py:10
#: templates/devapp/manage_ports/add_ports.html:7
#: templates/devapp/manage_ports/fix_abon_device.html:7
msgid "Groups"
msgstr "Группы"
#: devapp/templates/devapp/olt.html:13
msgid "Mac"
msgstr "Мак"
#: templates/devapp/add_dev.html:10
msgid "Add new device"
msgstr "Добавить устройство"
msgid "Mac address"
msgstr "Мак адрес"
#: templates/devapp/add_dev.html:16
#: templates/devapp/custom_dev_page/ports.html:104
#: templates/devapp/devices.html:58
#: templates/devapp/manage_ports/add_ports.html:16
msgid "Not assigned"
msgstr "&lt;Не назначено&gt;"
#: templates/devapp/add_dev.html:21 templates/devapp/dev.html.py:8
msgid "Device info"
msgstr "Инфа о железке"
#: templates/devapp/add_dev.html:52 templates/devapp/dev.html.py:43
#: templates/devapp/dev.html:47 templates/devapp/fix_dev_group.html.py:58
#: templates/devapp/fix_dev_group.html:62
msgid "Find the device"
msgstr "Найти устройство"
#: templates/devapp/add_dev.html:62 templates/devapp/dev.html.py:59
#: templates/devapp/fix_dev_group.html:71
#: templates/devapp/manage_ports/add_ports.html:75
#: templates/devapp/manage_ports/add_ports.html:79
#: templates/devapp/manage_ports/modal_add_edit_port.html:21
msgid "Save"
msgstr "Сохранить"
#: devapp/templates/devapp/olt.html:14
#: templates/devapp/add_dev.html:65 templates/devapp/dev.html.py:62
#: templates/devapp/fix_dev_group.html:74
msgid "Reset"
msgstr "Сбросить"
#: templates/devapp/custom_dev_page/olt.html:10
#: templates/devapp/custom_dev_page/onu.html:12
#: templates/devapp/custom_dev_page/ports.html:12
msgid "Uptime"
msgstr "Без перезагрузки"
#: templates/devapp/custom_dev_page/olt.html:17
msgid "SNMP Num"
msgstr "SNMP Ном."
#: templates/devapp/custom_dev_page/olt.html:18
msgid "Name" msgid "Name"
msgstr "Имя" msgstr "Имя"
#: devapp/templates/devapp/olt.html:15
msgid "Distance(m)"
msgstr "Расстояние (м)"
#: templates/devapp/custom_dev_page/olt.html:19
#: templates/devapp/custom_dev_page/onu.html:19
msgid "Mac"
msgstr "Мак"
#: devapp/templates/devapp/olt.html:16
#: templates/devapp/custom_dev_page/olt.html:20
#: templates/devapp/custom_dev_page/onu.html:73
msgid "Signal" msgid "Signal"
msgstr "Ур. сигнала" msgstr "Ур. сигнала"
#: devapp/templates/devapp/olt.html:34
#: templates/devapp/custom_dev_page/olt.html:38
msgid "Create device"
msgstr "Создать устройство"
#: templates/devapp/custom_dev_page/olt.html:45
#: templates/devapp/manage_ports/list.html:45
msgid "Ports not found" msgid "Ports not found"
msgstr "Порты не найдены" msgstr "Порты не найдены"
#: devapp/templates/devapp/ports.html:9
#: templates/devapp/custom_dev_page/onu.html:10
#: templates/devapp/custom_dev_page/ports.html:10
msgid "Title of the type of switch" msgid "Title of the type of switch"
msgstr "Название типа свича" msgstr "Название типа свича"
#: devapp/templates/devapp/ports.html:10
msgid "Uptime"
msgstr "Без перезагрузки"
#: templates/devapp/custom_dev_page/onu.html:22
msgid "Attached user"
msgstr "Прикрепленный абонент"
#: templates/devapp/custom_dev_page/onu.html:47
msgid "ONU Status"
msgstr ""
#: templates/devapp/custom_dev_page/onu.html:57
msgid "ONU error"
msgstr "ONU ошибка"
#: devapp/templates/devapp/ports.html:33
#: templates/devapp/custom_dev_page/onu.html:71
msgid "Name on OLT"
msgstr ""
#: templates/devapp/custom_dev_page/onu.html:72
msgid "Distance(m)"
msgstr "Расстояние (м)"
#: templates/devapp/custom_dev_page/onu.html:77
#: templates/devapp/custom_dev_page/onu.html:85
msgid "Mac on OLT"
msgstr ""
#: templates/devapp/custom_dev_page/onu.html:78
msgid "Mac-addresses does not match"
msgstr ""
#: templates/devapp/custom_dev_page/onu.html:79
#: templates/devapp/custom_dev_page/onu.html:81
msgid "Fix it"
msgstr "Исправить"
#: templates/devapp/custom_dev_page/onu.html:92
#, fuzzy
#| msgid "Port does not exist"
msgid "Info does not fetch"
msgstr "Порт не найден"
#: templates/devapp/custom_dev_page/ports.html:44
msgid "Disable port" msgid "Disable port"
msgstr "Выключить порт" msgstr "Выключить порт"
#: devapp/templates/devapp/ports.html:37
#: templates/devapp/custom_dev_page/ports.html:48
msgid "Enable port" msgid "Enable port"
msgstr "Включить порт" msgstr "Включить порт"
#: devapp/templates/devapp/ports.html:43
#: templates/devapp/custom_dev_page/ports.html:54
msgid "We have not received info, please check options :(" msgid "We have not received info, please check options :("
msgstr "Инфа не получена, проверьте настройки :(" msgstr "Инфа не получена, проверьте настройки :("
#: devapp/templates/devapp/ports.html:55
#: templates/devapp/custom_dev_page/ports.html:66
msgid "Device log" msgid "Device log"
msgstr "Лог устройства" msgstr "Лог устройства"
#: devapp/templates/devapp/ports.html:62
#: templates/devapp/custom_dev_page/ports.html:73
msgid "Level" msgid "Level"
msgstr "Уровень" msgstr "Уровень"
#: devapp/templates/devapp/ports.html:63
msgid "Description"
msgstr "Описание"
#: devapp/templates/devapp/ports.html:64
#: templates/devapp/custom_dev_page/ports.html:75
msgid "Date" msgid "Date"
msgstr "Дата" msgstr "Дата"
#: devapp/templates/devapp/ports.html:79
#: templates/devapp/custom_dev_page/ports.html:90
msgid "Ports comment" msgid "Ports comment"
msgstr "Комментарии портов" msgstr "Комментарии портов"
#: devapp/templates/devapp/ports.html:85
msgid "Port"
msgstr "Порт"
msgid "Ports"
msgstr "Порты"
#: devapp/templates/devapp/ports.html:86
#: templates/devapp/custom_dev_page/ports.html:97
msgid "Title" msgid "Title"
msgstr "Название" msgstr "Название"
#: devapp/templates/devapp/ports.html:97
#: templates/devapp/custom_dev_page/ports.html:108
msgid "We have not received info for ports" msgid "We have not received info for ports"
msgstr "Инфа о портах не получена" msgstr "Инфа о портах не получена"
#: devapp/views.py:63
msgid "Delete failed"
msgstr "Неизвестная ошибка при удалении :("
#: devapp/views.py:81
msgid "Device info has been saved"
msgstr "Инфа о точке сохранена"
#: templates/devapp/devices.html:32
msgid "Plugin output"
msgstr "Вывод мониторинга"
#: devapp/views.py:83
msgid "Form is invalid, check fields and try again"
msgstr "Ошибка в данных, проверте их ещё раз"
#: templates/devapp/devices.html:76 templates/devapp/devices_null_group.html:62
msgid "Devices does not found"
msgstr "Нет созданных устройств"
#: devapp/views.py:114 devapp/views.py:144
msgid "Not Set snmp device password"
msgstr "Не указан snmp пароль для устройства"
#: templates/devapp/devices.html:76 templates/devapp/devices.html.py:86
#: templates/devapp/devices_null_group.html:62
#: templates/devapp/devices_null_group.html:72
msgid "Create"
msgstr "Cоздать"
#: devapp/views.py:116 devapp/views.py:146
msgid "Dot was not pinged"
msgstr "Эта точка не пингуется"
#: templates/devapp/devices_null_group.html:13
#: templates/devapp/group_list.html:41
msgid "Devices without group"
msgstr "Устройства без группы"
#: devapp/views.py:118
msgid "wait for a reply from the SNMP Timeout"
msgstr "Время ожидания ответа от SNMP истекло"
#: templates/devapp/fix_dev_group.html:17
msgid "Fix device group"
msgstr ""
#: devapp/views.py:120
msgid "SNMP error on device"
msgstr "Ошибка SNMP на устройстве"
#: templates/devapp/group_list.html:18
msgid "Group title"
msgstr "Название"
msgid "Edit"
msgstr "Редактировать"
#: templates/devapp/group_list.html:28
#, fuzzy
#| msgid "Dot was not pinged"
msgid "Groups was not found"
msgstr "Эта точка не пингуется"
msgid "Device does not exist"
msgstr "Устойство не найдено"
#: templates/devapp/group_list.html:37
msgid "Add group"
msgstr "Добавить группу"
msgid "Number"
msgstr "Номер"
#: templates/devapp/manage_ports/add_ports.html:10
#: templates/devapp/manage_ports/list.html:55
msgid "Add ports"
msgstr "Добавить порты"
#: templates/devapp/manage_ports/add_ports.html:32
msgid "Mode" msgid "Mode"
msgstr "Режим" msgstr "Режим"
#: templates/devapp/manage_ports/add_ports.html:53
#: templates/devapp/manage_ports/add_ports.html:55
#: templates/devapp/manage_ports/list.html:32
#: templates/devapp/manage_ports/modal_del_port.html:14
msgid "Delete"
msgstr "Удалить"
#: templates/devapp/manage_ports/add_ports.html:60
#: templates/devapp/manage_ports/list.html:54
msgid "Add" msgid "Add"
msgstr "Добавить" msgstr "Добавить"
msgid "Add ports"
msgstr "Добавить порты"
#: templates/devapp/manage_ports/fix_abon_device.html:10
#: templates/devapp/manage_ports/fix_abon_device.html:16
msgid "Fix subscriber ports conflict"
msgstr "Исправить конфликт абонентов на порту"
msgid "Device is not have a group, please fix that"
msgstr "У устройства нет группы, пожалуйста, исправьте это"
#: templates/devapp/manage_ports/fix_abon_device.html:22
msgid "Subscribers list on port"
msgstr "Список абонентов на порту"
msgid "Delete"
msgstr "Удалить"
#: templates/devapp/manage_ports/fix_abon_device.html:26
msgid ""
"You may choose the subscriber who correctly attached to device port. When "
"you have found right subscriber, remove the port from the other person"
msgstr ""
"Вы можете выбрать абонента который правильно подключён к порту. Когда вы "
"найдёте нужного абонента удалите этот порт у другого абонента чтоб исправить конфликт"
msgid "Port does not exist"
msgstr "Порт не найден"
#: templates/devapp/manage_ports/fix_abon_device.html:32
#, fuzzy
#| msgid "Ports not found"
msgid "Abons not found"
msgstr "Порты не найдены"
msgid "Port successfully removed"
msgstr "Порт успешно удалён"
#: templates/devapp/manage_ports/list.html:13
msgid "Count of subscribers"
msgstr "Сколько абонов"
msgid "PON ONU"
msgstr "Онушка"
#: templates/devapp/manage_ports/list.html:26
#, python-format
msgid ""
"Port should not have more than one subscriber, <a href='%(furl)s'>fix that</"
"a>"
msgstr ""
"Порт не должен иметь больше одного назначенного абонента, <a "
"href='%(furl)s'>исправить</a>"
#: templates/devapp/manage_ports/list.html:37
#: templates/devapp/manage_ports/modal_add_edit_port.html:14
msgid "Edit"
msgstr "Редактировать"
#: templates/devapp/manage_ports/modal_del_port.html:7
msgid "Are you sure?"
msgstr "Вы уверены?"
#: templates/devapp/manage_ports/modal_del_port.html:11
msgid "Are you sure that you want to delete switch port from db?" msgid "Are you sure that you want to delete switch port from db?"
msgstr "Вы уверены что хотите удалить порт свича из бд?" msgstr "Вы уверены что хотите удалить порт свича из бд?"
msgid "Port successfully saved"
msgstr "Порт успешно сохранён"
#: views.py:78
msgid "Delete failed"
msgstr "Неизвестная ошибка при удалении :("
msgid "Port number on device must be unique"
msgstr "Номер порта на устройстве должен быть уникальным"
#: views.py:104
msgid "Device info has been saved"
msgstr "Инфа о точке сохранена"
msgid "Mac address is required for fill"
msgstr "MAC-адрес необходим для заполнения"
#: views.py:110
msgid "You have redirected to existing device"
msgstr ""
msgid "Device with that mac is already exist"
msgstr "Устройство с этим мак-адресом уже есть"
#: views.py:113 views.py:329 views.py:419
msgid "Please attach user group for device"
msgstr ""
msgid "Parent device"
msgstr "Родительское устройство"
#: views.py:117 views.py:275 views.py:304 views.py:421
msgid "Form is invalid, check fields and try again"
msgstr "Ошибка в данных, проверте их ещё раз"
msgid "Attached user"
msgstr "Прикрепленный абонент"
#: views.py:120
#, python-format
msgid "Duplicate user and port: %s"
msgstr "Пользователь с таким портом и устройством уже есть: %s"
msgid "Find the device"
msgstr "Найти устройство"
#: views.py:159 views.py:198
msgid "Device is not have a group, please fix that"
msgstr "У устройства нет группы, пожалуйста, исправьте это"
msgid "Find the subscriber"
msgstr "Найти абонента"
#: views.py:164 views.py:231 views.py:316
msgid "Device does not exist"
msgstr "Устойство не найдено"
msgid "View the device"
msgstr "Посмотреть устройство"
#: views.py:236 views.py:378
msgid "wait for a reply from the SNMP Timeout"
msgstr "Время ожидания ответа от SNMP истекло"
msgid "Eltex switch"
msgstr "Элтекс свич"
#: views.py:250
msgid "Port successfully removed"
msgstr "Порт успешно удалён"
msgid "Can view device"
msgstr "Может видеть устройство"
#: views.py:258 views.py:286
msgid "Port does not exist"
msgstr "Порт не найден"
msgid "Device"
msgstr "Устройство"
#: views.py:273 views.py:301
msgid "Port successfully saved"
msgstr "Порт успешно сохранён"
msgid "Can toggle ports"
msgstr "Может переключать порты"
#: views.py:340 views.py:374
msgid "Not Set snmp device password"
msgstr "Не указан snmp пароль для устройства"
msgid "Plugin output"
msgstr "Вывод мониторинга"
#: views.py:342 views.py:376
msgid "Dot was not pinged"
msgstr "Эта точка не пингуется"
msgid "Create device"
msgstr "Создать устройство"
#: views.py:350
msgid "SNMP error on device"
msgstr "Ошибка SNMP на устройстве"
msgid "ONU error"
msgstr "ONU ошибка"
#: views.py:416
#, fuzzy
#| msgid "Device info"
msgid "Device fixed"
msgstr "Инфа о железке"
msgid "ONU not connected"
msgstr "ONU не в сети"
#: views.py:450
msgid "Fixed"
msgstr "Исправлено, обновите страницу"
#: views.py:453
msgid "Parent device not found" msgid "Parent device not found"
msgstr "Вышестоящее устройство не найдено" msgstr "Вышестоящее устройство не найдено"
msgid "Fixed"
msgstr "Исправлено, обновите страницу"
msgid "Fix it"
msgstr "Исправить"
#~ msgid "Map point"
#~ msgstr "Точка топологии"
msgid "Duplicate user and port: %s"
msgstr "Пользователь с таким портом и устройством уже есть: %s"
#~ msgid "Find the subscriber"
#~ msgstr "Найти абонента"
#~ msgid "View the device"
#~ msgstr "Посмотреть устройство"

36
devapp/templates/devapp/manage_ports/fix_abon_device.html

@ -0,0 +1,36 @@
{% extends request.is_ajax|yesno:'nullcont.htm,devapp/ext.htm' %}
{% load i18n %}
{% block main %}
<ol class="breadcrumb">
<li><span class="glyphicon glyphicon-home"></span></li>
<li><a href="{% url 'devapp:group_list' %}">{% trans 'Groups' %}</a></li>
<li><a href="{% url 'devapp:devs' user_group.pk %}">{{ user_group.title }}</a></li>
<li><a href="{% url 'devapp:view' user_group.pk device.pk %}">{{ device.comment }}</a></li>
<li class="active">{% trans 'Fix subscriber ports conflict' %}</li>
</ol>
{% include 'message_block.html' %}
<div class="page-header">
<h2>{% trans 'Fix subscriber ports conflict' %}</h2>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">{% trans 'Subscribers list on port' %}</h3>
</div>
<div class="panel-body">
<u>{% trans 'Port' %} {{ port.num }}. {{ port.descr }}</u>
<p>{% blocktrans %}You may choose the subscriber who correctly attached to device port. When you have found right subscriber, remove the port from the other person{% endblocktrans %}</p>
</div>
<div class="list-group">
{% for abon in abons %}
<a href="{% url 'abonapp:abon_home' abon.group.pk abon.pk %}" class="list-group-item">{{ abon.get_full_name }}</a>
{% empty %}
{% trans 'Abons not found' %}
{% endfor %}
</div>
</div>
{% endblock %}

11
devapp/templates/devapp/manage_ports/list.html

@ -10,6 +10,7 @@
<tr> <tr>
<th width="50">{% trans 'Number' %}</th> <th width="50">{% trans 'Number' %}</th>
<th>{% trans 'Description' %}</th> <th>{% trans 'Description' %}</th>
<th>{% trans 'Count of subscribers' %}</th>
<th width="100">#</th> <th width="100">#</th>
</tr> </tr>
</thead> </thead>
@ -20,6 +21,12 @@
<tr> <tr>
<td>{{ port.num }}</td> <td>{{ port.num }}</td>
<td>{{ port.descr }}</td> <td>{{ port.descr }}</td>
{% if port.num_abons > 1 %}
{% url 'devapp:fix_port_confict' dev.user_group.id dev.id port.id as fixurl %}
<td class="text-danger"><b>{{ port.num_abons }}</b>. {% blocktrans with furl=fixurl %}Port should not have more than one subscriber, <a href='{{ furl }}'>fix that</a>{% endblocktrans %}</td>
{% else %}
<td>{{ port.num_abons }}</td>
{% endif %}
<td class="btn-group btn-group-sm"> <td class="btn-group btn-group-sm">
{% if can_del_port %} {% if can_del_port %}
<a href="{% url 'devapp:del_port' gid did port.pk %}" class="btn btn-danger btn-modal" title="{% trans 'Delete' %}"> <a href="{% url 'devapp:del_port' gid did port.pk %}" class="btn btn-danger btn-modal" title="{% trans 'Delete' %}">
@ -35,14 +42,14 @@
</tr> </tr>
{% empty %} {% empty %}
<tr> <tr>
<td colspan="3">{% trans 'Ports not found' %}</td>
<td colspan="4">{% trans 'Ports not found' %}</td>
</tr> </tr>
{% endfor %} {% endfor %}
{% endwith %} {% endwith %}
</tbody> </tbody>
<tfoot> <tfoot>
<tr> <tr>
<td colspan="3" class="btn-group">
<td colspan="4" class="btn-group">
{% if perms.devapp.add_port %} {% if perms.devapp.add_port %}
<a href="{% url 'devapp:add_ports' dev.user_group.pk dev.pk %}" class="btn btn-sm btn-default" title="{% trans 'Add' %}"> <a href="{% url 'devapp:add_ports' dev.user_group.pk dev.pk %}" class="btn btn-sm btn-default" title="{% trans 'Add' %}">
<span class="glyphicon glyphicon-plus"></span> {% trans 'Add ports' %} <span class="glyphicon glyphicon-plus"></span> {% trans 'Add ports' %}

2
devapp/templates/devapp/manage_ports/modal_add_edit_port.html

@ -11,7 +11,7 @@
<div class="modal-header primary"> <div class="modal-header primary">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title"><span class="glyphicon glyphicon-exclamation-sign"></span>{% trans 'Are you sure?' %}</h4>
<h4 class="modal-title"><span class="glyphicon glyphicon-exclamation-sign"></span>{% trans 'Edit' %}</h4>
</div> </div>
<div class="modal-body"> <div class="modal-body">

25
devapp/urls.py

@ -7,17 +7,18 @@ urlpatterns = [
url(r'^$', views.group_list, name='group_list'), url(r'^$', views.group_list, name='group_list'),
url(r'^devices_without_groups$', views.devices_null_group, name='devices_null_group'), 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'^fix_onu/$', views.fix_onu, name='fix_onu'),
url(r'^(?P<grp>\d+)$', views.devices, name='devs'),
url(r'^(?P<grp>\d+)/add$', views.dev, name='add'),
url(r'^(\d+)/(?P<did>\d+)$', views.devview, name='view'),
url(r'^(\d+)/(?P<did>\d+)/del$', views.devdel, name='del'),
url(r'^(?P<grp>\d+)/(?P<did>\d+)/add$', views.add_single_port, name='add_port'),
url(r'^(?P<grp>\d+)/(?P<devid>\d+)/edit$', views.dev, name='edit'),
url(r'^(\d+)/(?P<devid>\d+)/ports$', views.manage_ports, name='manage_ports'),
url(r'^(\d+)/(?P<devid>\d+)/ports_add', views.add_ports, name='add_ports'),
url(r'^(\d+)/(?P<did>\d+)/(?P<portid>\d+)_(?P<status>[0-1]{1})$', views.toggle_port, name='port_toggle'),
url(r'^(?P<grp>\d+)/(?P<did>\d+)/(?P<portid>\d+)/del$', views.delete_single_port, name='del_port'),
url(r'^(?P<grp>\d+)/(?P<did>\d+)/(?P<pid>\d+)/edit$', views.edit_single_port, name='edit_port'),
url(r'^fix_device_group/(?P<did>\d+)$', views.fix_device_group, name='fix_device_group'),
url(r'^(?P<group_id>\d+)$', views.devices, name='devs'),
url(r'^(?P<group_id>\d+)/add$', views.dev, name='add'),
url(r'^(\d+)/(?P<device_id>\d+)$', views.devview, name='view'),
url(r'^(\d+)/(?P<device_id>\d+)/del$', views.devdel, name='del'),
url(r'^(?P<group_id>\d+)/(?P<device_id>\d+)/add$', views.add_single_port, name='add_port'),
url(r'^(?P<group_id>\d+)/(?P<device_id>\d+)/edit$', views.dev, name='edit'),
url(r'^(\d+)/(?P<device_id>\d+)/ports$', views.manage_ports, name='manage_ports'),
url(r'^(?P<group_id>\d+)/(?P<device_id>\d+)/ports/(?P<port_id>\d+)/fix_port_confict$', views.fix_port_confict, name='fix_port_confict'),
url(r'^(\d+)/(?P<device_id>\d+)/ports_add', views.add_ports, name='add_ports'),
url(r'^(\d+)/(?P<device_id>\d+)/(?P<portid>\d+)_(?P<status>[0-1]{1})$', views.toggle_port, name='port_toggle'),
url(r'^(?P<group_id>\d+)/(?P<device_id>\d+)/(?P<portid>\d+)/del$', views.delete_single_port, name='del_port'),
url(r'^(?P<group_id>\d+)/(?P<device_id>\d+)/(?P<port_id>\d+)/edit$', views.edit_single_port, name='edit_port'),
url(r'^fix_device_group/(?P<device_id>\d+)$', views.fix_device_group, name='fix_device_group'),
url(r'^search_dev$', views.search_dev) url(r'^search_dev$', views.search_dev)
] ]

91
devapp/views.py

@ -3,7 +3,7 @@ from django.contrib.auth.decorators import login_required
from django.contrib.gis.shortcuts import render_to_text from django.contrib.gis.shortcuts import render_to_text
from django.core.exceptions import PermissionDenied from django.core.exceptions import PermissionDenied
from django.db import IntegrityError from django.db import IntegrityError
from django.db.models import Q
from django.db.models import Q, Count
from django.http import HttpResponse from django.http import HttpResponse
from django.shortcuts import render, redirect, get_object_or_404, resolve_url from django.shortcuts import render, redirect, get_object_or_404, resolve_url
from django.contrib import messages from django.contrib import messages
@ -22,8 +22,8 @@ from guardian.shortcuts import get_objects_for_user
@login_required @login_required
@only_admins @only_admins
def devices(request, grp):
group = get_object_or_404(AbonGroup, pk=grp)
def devices(request, group_id):
group = get_object_or_404(AbonGroup, pk=group_id)
if not request.user.has_perm('abonapp.can_view_abongroup', group): if not request.user.has_perm('abonapp.can_view_abongroup', group):
raise PermissionDenied raise PermissionDenied
try: try:
@ -68,9 +68,9 @@ def devices_null_group(request):
@login_required @login_required
@permission_required('devapp.delete_device') @permission_required('devapp.delete_device')
def devdel(request, did):
def devdel(request, device_id):
try: try:
dev = Device.objects.get(pk=did)
dev = Device.objects.get(pk=device_id)
back_url = resolve_url('devapp:devs', grp=dev.user_group.pk if dev.user_group else 0) back_url = resolve_url('devapp:devs', grp=dev.user_group.pk if dev.user_group else 0)
dev.delete() dev.delete()
return res_success(request, back_url) return res_success(request, back_url)
@ -82,15 +82,15 @@ def devdel(request, did):
@login_required @login_required
@permission_required('devapp.can_view_device') @permission_required('devapp.can_view_device')
def dev(request, grp, devid=0):
user_group = get_object_or_404(AbonGroup, pk=grp)
def dev(request, group_id, device_id=0):
user_group = get_object_or_404(AbonGroup, pk=group_id)
if not request.user.has_perm('abonapp.can_view_abongroup', user_group): if not request.user.has_perm('abonapp.can_view_abongroup', user_group):
raise PermissionDenied raise PermissionDenied
devinst = get_object_or_404(Device, id=devid) if devid != 0 else None
devinst = get_object_or_404(Device, id=device_id) if device_id != 0 else None
already_dev = None already_dev = None
if request.method == 'POST': if request.method == 'POST':
if devid == 0:
if device_id == 0:
if not request.user.has_perm('devapp.add_device'): if not request.user.has_perm('devapp.add_device'):
raise PermissionDenied raise PermissionDenied
else: else:
@ -152,17 +152,17 @@ def dev(request, grp, devid=0):
@login_required @login_required
@permission_required('devapp.change_device') @permission_required('devapp.change_device')
def manage_ports(request, devid):
def manage_ports(request, device_id):
try: try:
dev = Device.objects.get(pk=devid)
dev = Device.objects.get(pk=device_id)
if dev.user_group is None: if dev.user_group is None:
messages.error(request, _('Device is not have a group, please fix that')) messages.error(request, _('Device is not have a group, please fix that'))
return redirect('devapp:fix_device_group', dev.pk) return redirect('devapp:fix_device_group', dev.pk)
ports = Port.objects.filter(device=dev)
ports = Port.objects.filter(device=dev).annotate(num_abons=Count('abon'))
except Device.DoesNotExist: except Device.DoesNotExist:
messages.error(request, _('Device does not exist')) messages.error(request, _('Device does not exist'))
return redirect('devapp:view', dev.user_group.pk if dev.user_group else 0, did=devid)
return redirect('devapp:view', dev.user_group.pk if dev.user_group else 0, did=device_id)
except DeviceDBException as e: except DeviceDBException as e:
messages.error(request, e) messages.error(request, e)
return render(request, 'devapp/manage_ports/list.html', { return render(request, 'devapp/manage_ports/list.html', {
@ -173,7 +173,7 @@ def manage_ports(request, devid):
@login_required @login_required
@permission_required('devapp.add_port') @permission_required('devapp.add_port')
def add_ports(request, devid):
def add_ports(request, device_id):
class TempPort: class TempPort:
def __init__(self, pid, text, status, from_db, pk=None): def __init__(self, pid, text, status, from_db, pk=None):
self.pid = pid self.pid = pid
@ -193,7 +193,7 @@ def add_ports(request, devid):
try: try:
res_ports = list() res_ports = list()
dev = Device.objects.get(pk=devid)
dev = Device.objects.get(pk=device_id)
if dev.user_group is None: if dev.user_group is None:
messages.error(request, _('Device is not have a group, please fix that')) messages.error(request, _('Device is not have a group, please fix that'))
return redirect('devapp:fix_device_group', dev.pk) return redirect('devapp:fix_device_group', dev.pk)
@ -242,7 +242,7 @@ def add_ports(request, devid):
@login_required @login_required
@permission_required('devapp.delete_port') @permission_required('devapp.delete_port')
def delete_single_port(request, grp, did, portid):
def delete_single_port(request, group_id, device_id, portid):
try: try:
if request.method == 'POST': if request.method == 'POST':
if request.POST.get('confirm') == 'yes': if request.POST.get('confirm') == 'yes':
@ -250,22 +250,22 @@ def delete_single_port(request, grp, did, portid):
messages.success(request, _('Port successfully removed')) messages.success(request, _('Port successfully removed'))
else: else:
return render_to_text('devapp/manage_ports/modal_del_port.html', { return render_to_text('devapp/manage_ports/modal_del_port.html', {
'grp': grp,
'did': did,
'grp': group_id,
'did': device_id,
'port_id': portid 'port_id': portid
}, request=request) }, request=request)
except Port.DoesNotExist: except Port.DoesNotExist:
messages.error(request, _('Port does not exist')) messages.error(request, _('Port does not exist'))
except DeviceDBException as e: except DeviceDBException as e:
messages.error(request, e) messages.error(request, e)
return redirect('devapp:manage_ports', grp, did)
return redirect('devapp:manage_ports', group_id, device_id)
@login_required @login_required
@permission_required('devapp.add_port') @permission_required('devapp.add_port')
def edit_single_port(request, grp, did, pid):
def edit_single_port(request, group_id, device_id, port_id):
try: try:
port = Port.objects.get(pk=pid)
port = Port.objects.get(pk=port_id)
if request.method == 'POST': if request.method == 'POST':
frm = PortForm(request.POST, instance=port) frm = PortForm(request.POST, instance=port)
if frm.is_valid(): if frm.is_valid():
@ -273,33 +273,33 @@ def edit_single_port(request, grp, did, pid):
messages.success(request, _('Port successfully saved')) messages.success(request, _('Port successfully saved'))
else: else:
messages.error(request, _('Form is invalid, check fields and try again')) messages.error(request, _('Form is invalid, check fields and try again'))
return redirect('devapp:manage_ports', grp, did)
return redirect('devapp:manage_ports', group_id, port_id)
frm = PortForm(instance=port) frm = PortForm(instance=port)
return render_to_text('devapp/manage_ports/modal_add_edit_port.html', { return render_to_text('devapp/manage_ports/modal_add_edit_port.html', {
'port_id': pid,
'did': did,
'gid': grp,
'port_id': port_id,
'did': device_id,
'gid': group_id,
'form': frm 'form': frm
}, request=request) }, request=request)
except Port.DoesNotExist: except Port.DoesNotExist:
messages.error(request, _('Port does not exist')) messages.error(request, _('Port does not exist'))
except DeviceDBException as e: except DeviceDBException as e:
messages.error(request, e) messages.error(request, e)
return redirect('devapp:manage_ports', grp, did)
return redirect('devapp:manage_ports', group_id, device_id)
@login_required @login_required
@permission_required('devapp.add_port') @permission_required('devapp.add_port')
def add_single_port(request, grp, did):
def add_single_port(request, group_id, device_id):
try: try:
device = Device.objects.get(pk=did)
device = Device.objects.get(pk=device_id)
if request.method == 'POST': if request.method == 'POST':
frm = PortForm(request.POST, instance=Port(device=device)) frm = PortForm(request.POST, instance=Port(device=device))
if frm.is_valid(): if frm.is_valid():
frm.save() frm.save()
messages.success(request, _('Port successfully saved')) messages.success(request, _('Port successfully saved'))
return redirect('devapp:manage_ports', grp, did)
return redirect('devapp:manage_ports', group_id, device_id)
else: else:
messages.error(request, _('Form is invalid, check fields and try again')) messages.error(request, _('Form is invalid, check fields and try again'))
else: else:
@ -308,22 +308,22 @@ def add_single_port(request, grp, did):
'descr': request.GET.get('t') 'descr': request.GET.get('t')
}) })
return render_to_text('devapp/manage_ports/modal_add_edit_port.html', { return render_to_text('devapp/manage_ports/modal_add_edit_port.html', {
'did': did,
'gid': grp,
'did': device_id,
'gid': group_id,
'form': frm 'form': frm
}, request=request) }, request=request)
except Device.DoesNotExist: except Device.DoesNotExist:
messages.error(request, _('Device does not exist')) messages.error(request, _('Device does not exist'))
except DeviceDBException as e: except DeviceDBException as e:
messages.error(request, e) messages.error(request, e)
return redirect('devapp:manage_ports', grp, did)
return redirect('devapp:manage_ports', group_id, device_id)
@login_required @login_required
@permission_required('devapp.can_view_device') @permission_required('devapp.can_view_device')
def devview(request, did):
def devview(request, device_id):
ports, manager = None, None ports, manager = None, None
dev = get_object_or_404(Device, id=did)
dev = get_object_or_404(Device, id=device_id)
if not dev.user_group: if not dev.user_group:
messages.warning(request, _('Please attach user group for device')) messages.warning(request, _('Please attach user group for device'))
@ -357,10 +357,10 @@ def devview(request, did):
@login_required @login_required
@permission_required('devapp.can_toggle_ports') @permission_required('devapp.can_toggle_ports')
def toggle_port(request, did, portid, status=0):
def toggle_port(request, device_id, portid, status=0):
portid = int(portid) portid = int(portid)
status = int(status) status = int(status)
dev = get_object_or_404(Device, id=int(did))
dev = get_object_or_404(Device, id=int(device_id))
try: try:
if ping(dev.ip_address): if ping(dev.ip_address):
if dev.man_passw: if dev.man_passw:
@ -378,7 +378,7 @@ def toggle_port(request, did, portid, status=0):
messages.error(request, _('wait for a reply from the SNMP Timeout')) messages.error(request, _('wait for a reply from the SNMP Timeout'))
except EasySNMPError as e: except EasySNMPError as e:
messages.error(request, e) messages.error(request, e)
return redirect('devapp:view', dev.user_group.pk if dev.user_group is not None else 0, did)
return redirect('devapp:view', dev.user_group.pk if dev.user_group is not None else 0, device_id)
@login_required @login_required
@ -405,8 +405,8 @@ def search_dev(request):
@login_required @login_required
def fix_device_group(request, did):
dev = get_object_or_404(Device, pk=did)
def fix_device_group(request, device_id):
dev = get_object_or_404(Device, pk=device_id)
try: try:
if request.method == 'POST': if request.method == 'POST':
frm = DeviceForm(request.POST, instance=dev) frm = DeviceForm(request.POST, instance=dev)
@ -458,3 +458,16 @@ def fix_onu(request):
'dat': text 'dat': text
})) }))
@login_required
def fix_port_confict(request, group_id, device_id, port_id):
user_group = get_object_or_404(AbonGroup, pk=group_id)
device = get_object_or_404(Device, pk=device_id)
port = get_object_or_404(Port, pk=port_id)
abons = Abon.objects.filter(device__id=device_id, dev_port__id=port_id)
return render(request, 'devapp/manage_ports/fix_abon_device.html', {
'abons': abons,
'user_group': user_group,
'device': device,
'port': port
})
Loading…
Cancel
Save