Browse Source

process exception for redis connection

devel
Dmitry Novikov 7 years ago
parent
commit
1aef81a2c9
  1. 40
      abonapp/views.py
  2. 3
      clientsideapp/views.py
  3. 10
      devapp/views.py
  4. 27
      msg_app/models.py
  5. 20
      taskapp/handle.py

40
abonapp/views.py

@ -1,5 +1,6 @@
from datetime import datetime
from typing import Dict, Optional
from kombu.exceptions import OperationalError
from abonapp.tasks import customer_nas_command, customer_nas_remove
from agent.commands.dhcp import dhcp_commit, dhcp_expiry, dhcp_release
@ -194,7 +195,7 @@ class DelAbonDeleteView(LoginAdminMixin, PermissionRequiredMixin, DeleteView):
}).strip())
messages.success(request, _('delete abon success msg'))
return redirect('abonapp:people_list', gid=gid)
except NasNetworkError as e:
except (NasNetworkError, OperationalError) as e:
messages.error(self.request, e)
except NasFailedResult as e:
messages.error(self.request, _("NAS says: '%s'") % e)
@ -332,8 +333,12 @@ class AbonHomeUpdateView(LoginAdminMixin, PermissionRequiredMixin, UpdateView):
def form_valid(self, form):
r = super(AbonHomeUpdateView, self).form_valid(form)
abon = self.object
customer_nas_command.delay(abon.pk, 'sync')
messages.success(self.request, _('edit abon success msg'))
try:
customer_nas_command.delay(abon.pk, 'sync')
except OperationalError as e:
messages.error(self.request, str(e))
else:
messages.success(self.request, _('edit abon success msg'))
return r
def form_invalid(self, form):
@ -442,9 +447,7 @@ def pick_tariff(request, gid: int, uname):
messages.success(request, _('Tariff has been picked'))
return redirect('abonapp:abon_services', gid=gid,
uname=abon.username)
except (lib.LogicError, NasFailedResult) as e:
messages.error(request, e)
except NasNetworkError as e:
except (lib.LogicError, NasFailedResult, NasNetworkError, OperationalError) as e:
messages.error(request, e)
return redirect('abonapp:abon_services', gid=gid, uname=abon.username)
except Tariff.DoesNotExist:
@ -485,7 +488,7 @@ def unsubscribe_service(request, gid: int, uname, abon_tariff_id: int):
messages.success(request, _('User has been detached from service'))
except NasFailedResult as e:
messages.error(request, e)
except NasNetworkError as e:
except (NasNetworkError, OperationalError) as e:
messages.warning(request, e)
except lib.MultipleException as errs:
for err in errs.err_list:
@ -608,8 +611,12 @@ class IpUpdateView(LoginAdminPermissionMixin, UpdateView):
def form_valid(self, form):
r = super(IpUpdateView, self).form_valid(form)
abon = self.object
customer_nas_command.delay(abon.pk, 'sync')
messages.success(self.request, _('Ip successfully updated'))
try:
customer_nas_command.delay(abon.pk, 'sync')
except OperationalError as e:
messages.error(self.request, str(e))
else:
messages.success(self.request, _('Ip successfully updated'))
return r
def get_context_data(self, **kwargs):
@ -1193,12 +1200,15 @@ class UserSessionFree(LoginRequiredMixin, OnlyAdminsMixin, PermissionRequiredMix
def post(self, request, *args, **kwargs):
self.object = self.get_object()
abon = self.object
if abon.ip_address:
abon.free_ip_addr()
customer_nas_command.delay(abon.pk, 'remove')
messages.success(request, _('Ip lease has been freed'))
else:
messages.error(request, _('User not have ip'))
try:
if abon.ip_address:
abon.free_ip_addr()
customer_nas_command.delay(abon.pk, 'remove')
messages.success(request, _('Ip lease has been freed'))
else:
messages.error(request, _('User not have ip'))
except OperationalError as e:
messages.error(request, e)
return redirect(
'abonapp:abon_home',
gid=self.kwargs.get('gid'),

3
clientsideapp/views.py

@ -1,3 +1,4 @@
from kombu.exceptions import OperationalError
from django.contrib.auth.decorators import login_required
from django.shortcuts import render, get_object_or_404, redirect
from django.contrib import messages
@ -74,6 +75,8 @@ def buy_service(request, srv_id):
messages.error(request, e)
except NasFailedResult as e:
messages.error(request, e)
except OperationalError:
pass
return redirect('client_side:services')

10
devapp/views.py

@ -1,6 +1,8 @@
import re
from ipaddress import ip_address
from kombu.exceptions import OperationalError
from django.conf import settings
from django.contrib import messages
from django.contrib.auth.decorators import login_required
@ -93,7 +95,7 @@ class DeviceDeleteView(LoginAdminPermissionMixin, DeleteView):
onu_register.delay(
tuple(dev.pk for dev in Device.objects.exclude(group=None).only('pk').iterator())
)
except (DeviceDBException, PermissionError) as e:
except (DeviceDBException, PermissionError, OperationalError) as e:
messages.error(request, e)
messages.success(request, _('Device successfully deleted'))
return res
@ -152,7 +154,7 @@ class DeviceUpdate(LoginAdminPermissionMixin, UpdateView):
tuple(dev.pk for dev in Device.objects.exclude(group=None).only('pk').iterator())
)
messages.success(self.request, _('Device info has been saved'))
except PermissionError as e:
except (PermissionError, OperationalError) as e:
messages.error(self.request, e)
return r
@ -226,7 +228,7 @@ class DeviceCreateView(LoginAdminMixin, PermissionRequiredMixin, CreateView):
tuple(dev.pk for dev in Device.objects.exclude(group=None).only('pk').iterator())
)
messages.success(self.request, _('Device info has been saved'))
except PermissionError as e:
except (PermissionError, OperationalError) as e:
messages.error(self.request, e)
return r
@ -779,7 +781,7 @@ class OnDeviceMonitoringEvent(global_base_views.SecureApiView):
return {
'text': 'notification successfully sent'
}
except ValueError as e:
except (ValueError, OperationalError) as e:
return {
'text': str(e)
}

27
msg_app/models.py

@ -1,3 +1,5 @@
from kombu.exceptions import OperationalError
from django.db import models
from django.utils.translation import gettext_lazy as _
from accounts_app.models import UserProfile
@ -206,17 +208,20 @@ class Conversation(models.Model):
text=text, conversation=self,
attachment=attachment, author=author
)
if with_status:
for participant in self.participants.filter(is_active=True):
if participant == author:
continue
MessageStatus.objects.create(msg=msg, user=participant)
if participant.flags.notify_msg:
send_email_notify.delay(
msg_text=text,
account_id=participant.pk
)
return msg
try:
if with_status:
for participant in self.participants.filter(is_active=True):
if participant == author:
continue
MessageStatus.objects.create(msg=msg, user=participant)
if participant.flags.notify_msg:
send_email_notify.delay(
msg_text=text,
account_id=participant.pk
)
return msg
except OperationalError as e:
raise MessageError(e)
@staticmethod
def remove_message(msg):

20
taskapp/handle.py

@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
from kombu.exceptions import OperationalError
from django.template.loader import render_to_string
from django.utils.translation import gettext as _
from djing.tasks import send_email_notify # , multicast_email_notify
@ -31,10 +32,13 @@ def handle(task, author, recipients):
'task_status': task_status
})
if task.state == 'F' or task.state == 'C':
# If task completed or failed than send one message to author
send_email_notify.delay(fulltext, author.pk)
send_viber_message.delay(None, author.pk, fulltext)
else:
#multicast_email_notify.delay(fulltext, profile_ids)
multicast_viber_notify.delay(None, profile_ids, fulltext)
try:
if task.state == 'F' or task.state == 'C':
# If task completed or failed than send one message to author
send_email_notify.delay(fulltext, author.pk)
send_viber_message.delay(None, author.pk, fulltext)
else:
#multicast_email_notify.delay(fulltext, profile_ids)
multicast_viber_notify.delay(None, profile_ids, fulltext)
except OperationalError as e:
raise TaskException(e)
Loading…
Cancel
Save