From fb2d8ee739b1ecdb1f940885578810160af8985c Mon Sep 17 00:00:00 2001 From: bashmak Date: Mon, 8 Jan 2018 13:27:54 +0300 Subject: [PATCH] Prevent to pin subscriber to busy port on device --- abonapp/locale/ru/LC_MESSAGES/django.po | 8 ++++---- abonapp/templates/abonapp/editAbon.html | 2 -- abonapp/views.py | 16 ++++++++++++++-- clientsideapp/views.py | 4 ++-- devapp/dev_types.py | 2 +- devapp/models.py | 2 +- devapp/views.py | 2 +- dialing_app/models.py | 2 +- dialing_app/views.py | 2 +- djing/formfields.py | 2 +- mapapp/models.py | 2 +- mapapp/views.py | 2 +- msg_app/forms.py | 2 +- msg_app/models.py | 2 +- msg_app/views.py | 2 +- templates/message_block.html | 2 +- 16 files changed, 32 insertions(+), 22 deletions(-) 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