Browse Source

Добавил обработку ошибок при удалении

devel
Dmitry 9 years ago
parent
commit
a10d6bc3fc
  1. 15
      abonapp/models.py
  2. 8
      abonapp/views.py

15
abonapp/models.py

@ -317,6 +317,7 @@ def abon_post_save(sender, instance, **kwargs):
else: else:
return return
inst_tariff = instance.active_tariff() inst_tariff = instance.active_tariff()
try:
if inst_tariff: if inst_tariff:
agent_trf = TariffStruct(inst_tariff.id, inst_tariff.speedIn, inst_tariff.speedOut) agent_trf = TariffStruct(inst_tariff.id, inst_tariff.speedIn, inst_tariff.speedOut)
else: else:
@ -337,13 +338,18 @@ def abon_post_save(sender, instance, **kwargs):
tm.start_user(agent_abon) tm.start_user(agent_abon)
else: else:
tm.pause_user(agent_abon) tm.pause_user(agent_abon)
except NasFailedResult:
return True
def abon_del_signal(sender, instance, **kwargs): def abon_del_signal(sender, instance, **kwargs):
try:
# подключаемся к NAS'у # подключаемся к NAS'у
tm = Transmitter() tm = Transmitter()
# удаляем абонента на NAS # удаляем абонента на NAS
tm.remove_user(instance.id) tm.remove_user(instance.id)
except NasFailedResult:
return True
def abontariff_post_save(sender, instance, **kwargs): def abontariff_post_save(sender, instance, **kwargs):
@ -353,21 +359,30 @@ def abontariff_post_save(sender, instance, **kwargs):
return return
if instance.abon.ip_address is None: if instance.abon.ip_address is None:
return return
try:
agent_trf = TariffStruct(instance.tariff.id, instance.tariff.speedIn, instance.tariff.speedOut) 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) agent_abon = AbonStruct(instance.abon.id, instance.abon.ip_address.int_ip(), agent_trf)
tm = Transmitter() tm = Transmitter()
tm.update_user(agent_abon) tm.update_user(agent_abon)
tm.start_user(agent_abon) tm.start_user(agent_abon)
except NasFailedResult:
return True
def abontariff_del_signal(sender, instance, **kwargs): def abontariff_del_signal(sender, instance, **kwargs):
if not instance.is_started(): if not instance.is_started():
# если удаляем не активную услугу то говорить об этом NAS'у не обязательно # если удаляем не активную услугу то говорить об этом NAS'у не обязательно
return return
if instance.abon.ip_address is None:
# если у абонента нет ip то и создавать правило не на кого
return
try:
agent_trf = TariffStruct(instance.tariff.id, instance.tariff.speedIn, instance.tariff.speedOut) 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) agent_abon = AbonStruct(instance.abon.id, instance.abon.ip_address.int_ip(), agent_trf)
tm = Transmitter() tm = Transmitter()
tm.pause_user(agent_abon) tm.pause_user(agent_abon)
except NasFailedResult:
return True
models.signals.post_save.connect(abon_post_save, sender=Abon) models.signals.post_save.connect(abon_post_save, sender=Abon)

8
abonapp/views.py

@ -143,16 +143,20 @@ def delentity(request):
abon = get_object_or_404(models.Abon, id=uid) abon = get_object_or_404(models.Abon, id=uid)
gid = abon.group.id gid = abon.group.id
abon.delete() 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': elif typ == 'g':
if not request.user.has_perm('abonapp.delete_abongroup'): if not request.user.has_perm('abonapp.delete_abongroup'):
raise PermissionDenied raise PermissionDenied
get_object_or_404(models.AbonGroup, id=uid).delete() get_object_or_404(models.AbonGroup, id=uid).delete()
messages.success(request, 'Группа успешно удалёна')
return mydefs.res_success(request, 'abonapp:group_list') return mydefs.res_success(request, 'abonapp:group_list')
else:
messages.warning(request, 'Не понятно что удалять')
except NasNetworkError as e: except NasNetworkError as e:
messages.error(request, e) messages.error(request, e)
except NasFailedResult as e: except NasFailedResult as e:
messages.error(request, e)
messages.error(request, "NAS сказал: '%s'" % e)
return redirect('abonapp:group_list') return redirect('abonapp:group_list')

Loading…
Cancel
Save