diff --git a/abonapp/views.py b/abonapp/views.py
index 8e69add..fbab808 100644
--- a/abonapp/views.py
+++ b/abonapp/views.py
@@ -837,7 +837,7 @@ def save_user_dev_port(request, gid: int, uname):
pass
except models.Abon.MultipleObjectsReturned:
messages.error(request, _('Multiple users on the same device port'))
- return redirect('devapp:manage_ports', abon.device.group.pk, abon.device.pk)
+ return redirect('devapp:view', abon.device.group.pk, abon.device.pk)
abon.dev_port = port
if abon.is_dynamic_ip != is_dynamic_ip:
diff --git a/devapp/dev_types.py b/devapp/dev_types.py
index a62cdf3..73a8772 100644
--- a/devapp/dev_types.py
+++ b/devapp/dev_types.py
@@ -102,7 +102,7 @@ class DLinkDevice(DevBase, SNMPBaseWorker):
return tm
def get_template_name(self):
- return 'ports.html'
+ return 'generic_switch.html'
@staticmethod
def validate_extra_snmp_info(v: str) -> None:
diff --git a/devapp/locale/ru/LC_MESSAGES/django.po b/devapp/locale/ru/LC_MESSAGES/django.po
index 57c1c67..a18ead1 100644
--- a/devapp/locale/ru/LC_MESSAGES/django.po
+++ b/devapp/locale/ru/LC_MESSAGES/django.po
@@ -378,8 +378,8 @@ msgid "Enable port"
msgstr "Включить порт"
#: templates/devapp/custom_dev_page/ports.html:80
-msgid "Device log"
-msgstr "Лог устройства"
+msgid "Ports management"
+msgstr "Управление портами"
#: templates/devapp/custom_dev_page/ports.html:87
msgid "Level"
diff --git a/devapp/templates/devapp/custom_dev_page/ports.html b/devapp/templates/devapp/custom_dev_page/generic_switch.html
similarity index 51%
rename from devapp/templates/devapp/custom_dev_page/ports.html
rename to devapp/templates/devapp/custom_dev_page/generic_switch.html
index a3341e9..8355a1f 100644
--- a/devapp/templates/devapp/custom_dev_page/ports.html
+++ b/devapp/templates/devapp/custom_dev_page/generic_switch.html
@@ -77,25 +77,64 @@
-
{% trans 'Device log' %}
+ {% trans 'Ports management' %}
-
-
-
+
+
+
+ | {% trans 'Number' %} |
+ {% trans 'Description' %} |
+ {% trans 'Count of subscribers' %} |
+ # |
+
+
+
+ {% with gid=dev.group.pk did=dev.pk can_del_port=perms.devapp.delete_port can_edit_port=perms.devapp.change_port %}
+ {% for port in ports_db %}
- | ID |
- {% trans 'Level' %} |
- {% trans 'Description' %} |
- {% trans 'Date' %} |
+ {{ port.num }} |
+ {{ port.descr|default:'-' }} |
+ {% if port.num_abons > 1 %}
+ {% url 'devapp:fix_port_conflict' gid did port.id as fixurl %}
+ {{ port.num_abons }}. {% blocktrans with furl=fixurl %}Port should not have more than one subscriber, fix that{% endblocktrans %} |
+ {% else %}
+ {{ port.num_abons }} |
+ {% endif %}
+
+
+
+
+ {% if can_del_port %}
+
+
+
+ {% endif %}
+ {% if can_edit_port %}
+
+
+
+ {% endif %}
+ |
-
-
+ {% empty %}
- | Coming soon.. |
+ {% trans 'Ports not found' %} |
-
-
-
+ {% endfor %}
+ {% endwith %}
+
+
+
+ |
+ {% if perms.devapp.add_port %}
+
+ {% trans 'Add ports' %}
+
+ {% endif %}
+ |
+
+
+
@@ -103,28 +142,26 @@
{% trans 'Ports comment' %}
-
-
-
+
+
+
+ | {% trans 'Port' %} |
+ {% trans 'Title' %} |
+
+
+
+ {% for port in ports %}
- | {% trans 'Port' %} |
- {% trans 'Title' %} |
+ {{ port.num }} |
+ {{ port.nm|default:'-' }} |
-
-
- {% for port in ports %}
-
- | {{ port.num }} |
- {{ port.nm|default:'-' }} |
-
- {% empty %}
-
- | {% trans 'We have not received info for ports' %} |
-
- {% endfor %}
-
-
-
+ {% empty %}
+
+ | {% trans 'We have not received info for ports' %} |
+
+ {% endfor %}
+
+
diff --git a/devapp/templates/devapp/ext.htm b/devapp/templates/devapp/ext.htm
index e3f3a89..454a1af 100644
--- a/devapp/templates/devapp/ext.htm
+++ b/devapp/templates/devapp/ext.htm
@@ -37,11 +37,6 @@
{% trans 'Edit' %}
-
- {% url 'devapp:manage_ports' dev.group.pk|default:0 dev.pk as devapp_mports %}
-
- {% trans 'Ports' %}
-
{% endif %}
diff --git a/devapp/templates/devapp/manage_ports/list.html b/devapp/templates/devapp/manage_ports/list.html
deleted file mode 100644
index a8bebe6..0000000
--- a/devapp/templates/devapp/manage_ports/list.html
+++ /dev/null
@@ -1,70 +0,0 @@
-{% extends request.is_ajax|yesno:'nullcont.htm,devapp/ext.htm' %}
-{% load i18n %}
-{% block content %}
-
-
-
-
-
-
-
- | {% trans 'Number' %} |
- {% trans 'Description' %} |
- {% trans 'Count of subscribers' %} |
- # |
-
-
-
-
- {% with gid=dev.group.pk did=dev.pk can_del_port=perms.devapp.delete_port can_edit_port=perms.devapp.change_port %}
- {% for port in ports %}
-
- | {{ port.num }} |
- {{ port.descr|default:'-' }} |
- {% if port.num_abons > 1 %}
- {% url 'devapp:fix_port_conflict' gid did port.id as fixurl %}
- {{ port.num_abons }}. {% blocktrans with furl=fixurl %}Port should not have more than one subscriber, fix that{% endblocktrans %} |
- {% else %}
- {{ port.num_abons }} |
- {% endif %}
-
-
-
-
- {% if can_del_port %}
-
-
-
- {% endif %}
- {% if can_edit_port %}
-
-
-
- {% endif %}
- |
-
- {% empty %}
-
- | {% trans 'Ports not found' %} |
-
- {% endfor %}
- {% endwith %}
-
-
-
- |
- {% if perms.devapp.add_port %}
-
- {% trans 'Add ports' %}
-
- {% endif %}
- |
-
-
-
-
-
-
-
-
-{% endblock %}
diff --git a/devapp/urls.py b/devapp/urls.py
index 594d519..f0f4b27 100644
--- a/devapp/urls.py
+++ b/devapp/urls.py
@@ -14,16 +14,15 @@ urlpatterns = [
path('//add/', views.add_single_port, name='add_port'),
path('//edit/', views.DeviceUpdate.as_view(), name='edit'),
path('//edit_extra/', views.DeviceUpdateExtra.as_view(), name='extra_data_edit'),
- path('//ports/', views.manage_ports, name='manage_ports'),
path('//ports//fix_port_conflict/', views.fix_port_conflict,
name='fix_port_conflict'),
path('//ports//show_subscriber_on_port/',
views.ShowSubscriberOnPort.as_view(), name='show_subscriber_on_port'),
path('//ports_add/', views.add_ports, name='add_ports'),
path('//register_device/', views.register_device, name='dev_register'),
- re_path('^(\d+)/(?P\d+)/(?P\d+)_(?P[0-1]{1})$', views.toggle_port, name='port_toggle'),
- path('///del/', views.delete_single_port, name='del_port'),
- path('///edit/', views.edit_single_port, name='edit_port'),
+ re_path('^(\d+)/(?P\d+)/(?P\d+)_(?P[0-1]{1})$', views.toggle_port, name='port_toggle'),
+ path('///del/', views.delete_single_port, name='del_port'),
+ path('///edit/', views.edit_single_port, name='edit_port'),
path('fix_device_group//', views.fix_device_group, name='fix_device_group'),
path('search_dev/', views.search_dev),
diff --git a/devapp/views.py b/devapp/views.py
index 6f46ab6..fbf23e3 100644
--- a/devapp/views.py
+++ b/devapp/views.py
@@ -247,29 +247,6 @@ class DeviceUpdateExtra(UpdateView):
return r
-@login_required
-@only_admins
-@permission_required('devapp.change_device')
-def manage_ports(request, group_id: int, device_id: int):
- device = ports = None
- try:
- device = Device.objects.get(pk=device_id)
- if device.group is None:
- messages.error(request, _('Device does not have a group, please fix that'))
- return redirect('devapp:fix_device_group', device.pk)
- ports = Port.objects.filter(device=device).annotate(num_abons=Count('abon'))
-
- except Device.DoesNotExist:
- messages.error(request, _('Device does not exist'))
- return redirect('devapp:group_list')
- except DeviceDBException as e:
- messages.error(request, e)
- return render(request, 'devapp/manage_ports/list.html', {
- 'ports': ports,
- 'dev': device
- })
-
-
@method_decorator(login_decs, name='dispatch')
class ShowSubscriberOnPort(global_base_views.RedirectWhenErrorMixin, DetailView):
template_name = 'devapp/manage_ports/modal_show_subscriber_on_port.html'
@@ -366,29 +343,29 @@ def add_ports(request, group_id: int, device_id: int):
@login_required
@only_admins
@permission_required('devapp.delete_port')
-def delete_single_port(request, group_id, device_id, portid):
+def delete_single_port(request, group_id, device_id, port_id):
try:
if request.method == 'POST':
if request.POST.get('confirm') == 'yes':
- Port.objects.get(pk=portid).delete()
+ Port.objects.get(pk=port_id).delete()
messages.success(request, _('Port successfully removed'))
else:
return render(request, 'devapp/manage_ports/modal_del_port.html', {
'grp': group_id,
'did': device_id,
- 'port_id': portid
+ 'port_id': port_id
})
except Port.DoesNotExist:
messages.error(request, _('Port does not exist'))
except DeviceDBException as e:
messages.error(request, e)
- return redirect('devapp:manage_ports', group_id, device_id)
+ return redirect('devapp:view', group_id, device_id)
@login_required
@only_admins
@permission_required('devapp.add_port')
-def edit_single_port(request, group_id, device_id, port_id):
+def edit_single_port(request, group_id: int, device_id: int, port_id: int):
try:
port = Port.objects.get(pk=port_id)
if request.method == 'POST':
@@ -398,7 +375,7 @@ def edit_single_port(request, group_id, device_id, port_id):
messages.success(request, _('Port successfully saved'))
else:
messages.error(request, _('Form is invalid, check fields and try again'))
- return redirect('devapp:manage_ports', group_id, device_id)
+ return redirect('devapp:view', group_id, device_id)
frm = PortForm(instance=port)
return render(request, 'devapp/manage_ports/modal_add_edit_port.html', {
@@ -411,7 +388,7 @@ def edit_single_port(request, group_id, device_id, port_id):
messages.error(request, _('Port does not exist'))
except (DeviceDBException, DuplicateEntry) as e:
messages.error(request, e)
- return redirect('devapp:manage_ports', group_id, device_id)
+ return redirect('devapp:view', group_id, device_id)
@login_required
@@ -425,7 +402,7 @@ def add_single_port(request, group_id, device_id):
if frm.is_valid():
frm.save()
messages.success(request, _('Port successfully saved'))
- return redirect('devapp:manage_ports', group_id, device_id)
+ return redirect('devapp:view', group_id, device_id)
else:
messages.error(request, _('Form is invalid, check fields and try again'))
else:
@@ -442,7 +419,7 @@ def add_single_port(request, group_id, device_id):
messages.error(request, _('Device does not exist'))
except (DeviceDBException, DuplicateEntry) as e:
messages.error(request, e)
- return redirect('devapp:manage_ports', group_id, device_id)
+ return redirect('devapp:view', group_id, device_id)
@login_required
@@ -474,7 +451,8 @@ def devview(request, group_id: int, device_id: int):
'dev': device,
'ports': ports,
'dev_accs': Abon.objects.filter(device=device),
- 'dev_manager': manager
+ 'dev_manager': manager,
+ 'ports_db': Port.objects.filter(device=device).annotate(num_abons=Count('abon')),
})
except EasySNMPError as e:
messages.error(request, "%s: %s" % (gettext('SNMP error on device'), e))
@@ -502,8 +480,7 @@ def zte_port_view_uncfg(request, group_id: str, device_id: str, fiber_id: str):
@login_required
@only_admins
@permission_required('devapp.can_toggle_ports')
-def toggle_port(request, device_id: int, portid: int, status=0):
- portid = int(portid)
+def toggle_port(request, device_id: int, port_id: int, status=0):
status = int(status)
device = get_object_or_404(Device, id=int(device_id))
try:
@@ -512,9 +489,9 @@ def toggle_port(request, device_id: int, portid: int, status=0):
manager = device.get_manager_object()
ports = tuple(manager.get_ports())
if status:
- ports[portid - 1].enable()
+ ports[port_id - 1].enable()
else:
- ports[portid - 1].disable()
+ ports[port_id - 1].disable()
else:
messages.warning(request, _('Not Set snmp device password'))
else: