diff --git a/abonapp/locale/ru/LC_MESSAGES/django.po b/abonapp/locale/ru/LC_MESSAGES/django.po
index d060efd..d12e11b 100644
--- a/abonapp/locale/ru/LC_MESSAGES/django.po
+++ b/abonapp/locale/ru/LC_MESSAGES/django.po
@@ -427,10 +427,6 @@ msgstr "Добавить муфту"
msgid "Device port"
msgstr "Порт устройства"
-#: templates/abonapp/editAbon.html:182
-msgid "Ports does not exist"
-msgstr "Порты не найдены"
-
#: templates/abonapp/editAbon.html:190
msgid "Is dynamic network settings"
msgstr "Динамические настройки по dhcp"
@@ -992,3 +988,7 @@ msgstr "Звонки"
msgid "No have ip"
msgstr "Нет ip адреса"
+#: views.py:757
+#, python-format
+msgid "%(user_name)s already pinned to this port on this device"
+msgstr "%(user_name)s уже привязан к этому порту на этом устройстве"
diff --git a/abonapp/templates/abonapp/editAbon.html b/abonapp/templates/abonapp/editAbon.html
index c09f6fa..6a95b76 100644
--- a/abonapp/templates/abonapp/editAbon.html
+++ b/abonapp/templates/abonapp/editAbon.html
@@ -148,8 +148,6 @@
{% else %}
{% endif %}
- {% empty %}
-
{% endfor %}
diff --git a/abonapp/views.py b/abonapp/views.py
index d6be42b..5e8621c 100644
--- a/abonapp/views.py
+++ b/abonapp/views.py
@@ -9,7 +9,7 @@ from django.shortcuts import render, redirect, get_object_or_404, resolve_url
from django.contrib.auth.decorators import login_required
from django.http import HttpResponse
from django.contrib import messages
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
from statistics.models import StatCache
from tariff_app.models import Tariff
@@ -745,11 +745,23 @@ def save_user_dev_port(request, gid, uid):
user_port = mydefs.safe_int(request.POST.get('user_port'))
is_dynamic_ip = request.POST.get('is_dynamic_ip')
try:
+ abon = models.Abon.objects.get(pk=uid)
if user_port == 0:
port = None
else:
port = DevPort.objects.get(pk=user_port)
- abon = models.Abon.objects.get(pk=uid)
+ if abon.device is not None:
+ try:
+ other_abon = models.Abon.objects.get(device=abon.device, dev_port=port)
+ user_url = resolve_url('abonapp:abon_home', other_abon.group.id, other_abon.id)
+ messages.error(request, _("%(user_name)s already pinned to this port on this device") % {
+ 'user_url': user_url,
+ 'user_name': other_abon.get_full_name()
+ })
+ return redirect('abonapp:abon_home', gid, uid)
+ except models.Abon.DoesNotExist:
+ pass
+
abon.dev_port = port
if abon.is_dynamic_ip != is_dynamic_ip:
abon.is_dynamic_ip = is_dynamic_ip
diff --git a/clientsideapp/views.py b/clientsideapp/views.py
index 173e056..4d123e9 100644
--- a/clientsideapp/views.py
+++ b/clientsideapp/views.py
@@ -4,9 +4,9 @@ from django.contrib.gis.shortcuts import render_to_text
from django.shortcuts import render, get_object_or_404, redirect
from django.contrib import messages
from django.db.transaction import atomic
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
-from abonapp.models import AbonLog, AbonTariff, InvoiceForPayment, Abon
+from abonapp.models import AbonLog, InvoiceForPayment, Abon
from tariff_app.models import Tariff
from mydefs import pag_mn, LogicError
from agent import NasFailedResult, NasNetworkError
diff --git a/devapp/dev_types.py b/devapp/dev_types.py
index 6b2ea37..5db0309 100644
--- a/devapp/dev_types.py
+++ b/devapp/dev_types.py
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
from mydefs import RuTimedelta, safe_int
from datetime import timedelta
from easysnmp import EasySNMPTimeoutError
diff --git a/devapp/models.py b/devapp/models.py
index 8412abb..f251af7 100644
--- a/devapp/models.py
+++ b/devapp/models.py
@@ -7,7 +7,7 @@ from mydefs import MyGenericIPAddressField, MyChoicesAdapter, ip2int
from . import dev_types
from subprocess import run
from django.conf import settings
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
from json.decoder import JSONDecodeError
diff --git a/devapp/views.py b/devapp/views.py
index 14381d6..201fbc2 100644
--- a/devapp/views.py
+++ b/devapp/views.py
@@ -7,7 +7,7 @@ from django.db.models import Q, Count
from django.http import HttpResponse
from django.shortcuts import render, redirect, get_object_or_404, resolve_url
from django.contrib import messages
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
from easysnmp import EasySNMPTimeoutError, EasySNMPError
from json import dumps
diff --git a/dialing_app/models.py b/dialing_app/models.py
index 6846882..15575da 100644
--- a/dialing_app/models.py
+++ b/dialing_app/models.py
@@ -1,6 +1,6 @@
from django.db import models
from datetime import datetime
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
from django.conf import settings
diff --git a/dialing_app/views.py b/dialing_app/views.py
index 401195e..700336f 100644
--- a/dialing_app/views.py
+++ b/dialing_app/views.py
@@ -4,7 +4,7 @@ from django.contrib.auth.decorators import login_required
from django.contrib import messages
from django.contrib.gis.shortcuts import render_to_text
from django.shortcuts import render, redirect
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
from guardian.decorators import permission_required_or_403 as permission_required
from django.db.models import Q
diff --git a/djing/formfields.py b/djing/formfields.py
index bcd961f..3050e67 100644
--- a/djing/formfields.py
+++ b/djing/formfields.py
@@ -3,7 +3,7 @@ from django.forms.widgets import TextInput
from django.core.validators import RegexValidator, _lazy_re_compile
from django.forms.fields import EMPTY_VALUES
from django.forms.utils import ValidationError
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
from netaddr import EUI, AddrFormatError
from . import MAC_ADDR_REGEX
diff --git a/mapapp/models.py b/mapapp/models.py
index 3a482bd..e18e3e5 100644
--- a/mapapp/models.py
+++ b/mapapp/models.py
@@ -1,5 +1,5 @@
from django.db import models
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
from devapp.models import Device
diff --git a/mapapp/views.py b/mapapp/views.py
index 26a38c9..8dc4861 100644
--- a/mapapp/views.py
+++ b/mapapp/views.py
@@ -4,7 +4,7 @@ from django.contrib.gis.shortcuts import render_to_text
from django.core.exceptions import PermissionDenied
from django.http import HttpResponse, HttpResponseRedirect, HttpResponseForbidden
from django.shortcuts import render, redirect, get_object_or_404, resolve_url
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
from django.db.models import Count
from .models import Dot
from .forms import DotForm
diff --git a/msg_app/forms.py b/msg_app/forms.py
index fd99831..2f14911 100644
--- a/msg_app/forms.py
+++ b/msg_app/forms.py
@@ -1,5 +1,5 @@
from django import forms
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
from .models import Conversation, Message, MessageError
from accounts_app.models import UserProfile
diff --git a/msg_app/models.py b/msg_app/models.py
index d69c4e6..f8a1250 100644
--- a/msg_app/models.py
+++ b/msg_app/models.py
@@ -1,5 +1,5 @@
from django.db import models
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
from accounts_app.models import UserProfile
from chatbot.telebot import send_notify
from chatbot.models import ChatException
diff --git a/msg_app/views.py b/msg_app/views.py
index 2ffb87b..3d14e7f 100644
--- a/msg_app/views.py
+++ b/msg_app/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.core.exceptions import PermissionDenied
from django.http import HttpResponse
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
from django.contrib import messages
from django.shortcuts import render, redirect, get_object_or_404
from chatbot.models import MessageQueue
diff --git a/templates/message_block.html b/templates/message_block.html
index 037077b..5688cc6 100644
--- a/templates/message_block.html
+++ b/templates/message_block.html
@@ -16,7 +16,7 @@
{% endif %}
- {{ message }}
+ {{ message|safe }}
{% endfor %}
{% endif %}
\ No newline at end of file