From a10d6bc3fc66f37dc18dba5c0e0d27fbbba707d7 Mon Sep 17 00:00:00 2001 From: Dmitry Date: Mon, 30 Jan 2017 16:40:11 +0000 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA=D1=83=20=D0=BE?= =?UTF-8?q?=D1=88=D0=B8=D0=B1=D0=BE=D0=BA=20=D0=BF=D1=80=D0=B8=20=D1=83?= =?UTF-8?q?=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- abonapp/models.py | 77 ++++++++++++++++++++++++++++------------------- abonapp/views.py | 10 ++++-- 2 files changed, 53 insertions(+), 34 deletions(-) diff --git a/abonapp/models.py b/abonapp/models.py index 5acfb8b..d2eef58 100644 --- a/abonapp/models.py +++ b/abonapp/models.py @@ -317,33 +317,39 @@ def abon_post_save(sender, instance, **kwargs): else: return inst_tariff = instance.active_tariff() - if inst_tariff: - agent_trf = TariffStruct(inst_tariff.id, inst_tariff.speedIn, inst_tariff.speedOut) - else: - agent_trf = TariffStruct() - agent_abon = AbonStruct(instance.id, user_ip, agent_trf) - tm = Transmitter() - if kwargs['created']: - # создаём абонента - tm.add_user(agent_abon) - else: - # обновляем абонента на NAS - try: - tm.update_user(agent_abon) - except NasFailedResult: + try: + if inst_tariff: + agent_trf = TariffStruct(inst_tariff.id, inst_tariff.speedIn, inst_tariff.speedOut) + else: + agent_trf = TariffStruct() + agent_abon = AbonStruct(instance.id, user_ip, agent_trf) + tm = Transmitter() + if kwargs['created']: + # создаём абонента tm.add_user(agent_abon) - # если не активен то приостановим услугу - if instance.is_active: - tm.start_user(agent_abon) else: - tm.pause_user(agent_abon) + # обновляем абонента на NAS + try: + tm.update_user(agent_abon) + except NasFailedResult: + tm.add_user(agent_abon) + # если не активен то приостановим услугу + if instance.is_active: + tm.start_user(agent_abon) + else: + tm.pause_user(agent_abon) + except NasFailedResult: + return True def abon_del_signal(sender, instance, **kwargs): - # подключаемся к NAS'у - tm = Transmitter() - # удаляем абонента на NAS - tm.remove_user(instance.id) + try: + # подключаемся к NAS'у + tm = Transmitter() + # удаляем абонента на NAS + tm.remove_user(instance.id) + except NasFailedResult: + return True def abontariff_post_save(sender, instance, **kwargs): @@ -353,21 +359,30 @@ def abontariff_post_save(sender, instance, **kwargs): return if instance.abon.ip_address is None: return - agent_trf = TariffStruct(instance.tariff.id, instance.tariff.speedIn, instance.tariff.speedOut) - agent_abon = AbonStruct(instance.abon.id, instance.abon.ip_address.int_ip(), agent_trf) - tm = Transmitter() - tm.update_user(agent_abon) - tm.start_user(agent_abon) + try: + agent_trf = TariffStruct(instance.tariff.id, instance.tariff.speedIn, instance.tariff.speedOut) + agent_abon = AbonStruct(instance.abon.id, instance.abon.ip_address.int_ip(), agent_trf) + tm = Transmitter() + tm.update_user(agent_abon) + tm.start_user(agent_abon) + except NasFailedResult: + return True def abontariff_del_signal(sender, instance, **kwargs): if not instance.is_started(): # если удаляем не активную услугу то говорить об этом NAS'у не обязательно return - agent_trf = TariffStruct(instance.tariff.id, instance.tariff.speedIn, instance.tariff.speedOut) - agent_abon = AbonStruct(instance.abon.id, instance.abon.ip_address.int_ip(), agent_trf) - tm = Transmitter() - tm.pause_user(agent_abon) + if instance.abon.ip_address is None: + # если у абонента нет ip то и создавать правило не на кого + return + try: + agent_trf = TariffStruct(instance.tariff.id, instance.tariff.speedIn, instance.tariff.speedOut) + agent_abon = AbonStruct(instance.abon.id, instance.abon.ip_address.int_ip(), agent_trf) + tm = Transmitter() + tm.pause_user(agent_abon) + except NasFailedResult: + return True models.signals.post_save.connect(abon_post_save, sender=Abon) diff --git a/abonapp/views.py b/abonapp/views.py index ff101f5..63fca9a 100644 --- a/abonapp/views.py +++ b/abonapp/views.py @@ -143,16 +143,20 @@ def delentity(request): abon = get_object_or_404(models.Abon, id=uid) gid = abon.group.id abon.delete() - return mydefs.res_success(request, resolve_url('abonapp:people_list', gid)) + messages.success(request, 'Абонент успешно удалён') + return mydefs.res_success(request, resolve_url('abonapp:people_list', gid=gid)) elif typ == 'g': if not request.user.has_perm('abonapp.delete_abongroup'): raise PermissionDenied get_object_or_404(models.AbonGroup, id=uid).delete() - return mydefs.res_success(request, 'abonapp:group_list') + messages.success(request, 'Группа успешно удалёна') + return mydefs.res_success(request, 'abonapp:group_list') + else: + messages.warning(request, 'Не понятно что удалять') except NasNetworkError as e: messages.error(request, e) except NasFailedResult as e: - messages.error(request, e) + messages.error(request, "NAS сказал: '%s'" % e) return redirect('abonapp:group_list')