Browse Source

Add tasks for abonapp

devel
Dmitry Novikov 7 years ago
parent
commit
94cdf1fd64
  1. 34
      abonapp/models.py
  2. 46
      abonapp/tasks.py

34
abonapp/models.py

@ -1,6 +1,7 @@
from datetime import datetime from datetime import datetime
from typing import Optional from typing import Optional
from abonapp.tasks import user_remove_from_gw, user_add_to_gw, user_nas_sync
from accounts_app.models import UserProfile, MyUserManager, BaseAccount from accounts_app.models import UserProfile, MyUserManager, BaseAccount
from bitfield import BitField from bitfield import BitField
from django.conf import settings from django.conf import settings
@ -317,16 +318,7 @@ class Abon(BaseAccount):
""" """
if self.nas is None: if self.nas is None:
raise LogicError(_('gateway required')) raise LogicError(_('gateway required'))
try:
agent_abon = self.build_agent_struct()
if agent_abon is not None:
mngr = self.nas.get_nas_manager()
mngr.update_user(agent_abon)
except (NasFailedResult, NasNetworkError, ConnectionResetError) as e:
print('ERROR:', e)
return e
except LogicError:
pass
user_nas_sync.delay(self.pk)
def nas_add_self(self): def nas_add_self(self):
""" """
@ -335,16 +327,7 @@ class Abon(BaseAccount):
""" """
if self.nas is None: if self.nas is None:
raise LogicError(_('gateway required')) raise LogicError(_('gateway required'))
try:
agent_abon = self.build_agent_struct()
if agent_abon is not None:
mngr = self.nas.get_nas_manager()
mngr.add_user(agent_abon)
except (NasFailedResult, NasNetworkError, ConnectionResetError) as e:
print('ERROR:', e)
return e
except LogicError:
pass
user_add_to_gw.delay(self.pk)
def nas_remove_self(self): def nas_remove_self(self):
""" """
@ -353,16 +336,7 @@ class Abon(BaseAccount):
""" """
if self.nas is None: if self.nas is None:
raise LogicError(_('gateway required')) raise LogicError(_('gateway required'))
try:
agent_abon = self.build_agent_struct()
if agent_abon is not None:
mngr = self.nas.get_nas_manager()
mngr.remove_user(agent_abon)
except (NasFailedResult, NasNetworkError, ConnectionResetError) as e:
print('ERROR:', e)
return e
except LogicError:
pass
user_remove_from_gw.delay(self.pk)
def get_absolute_url(self): def get_absolute_url(self):
return resolve_url('abonapp:abon_home', self.group.id, self.username) return resolve_url('abonapp:abon_home', self.group.id, self.username)

46
abonapp/tasks.py

@ -0,0 +1,46 @@
from celery import shared_task
from abonapp.models import Abon
from djing.lib import LogicError
from gw_app.nas_managers import NasFailedResult, NasNetworkError
@shared_task
def user_remove_from_gw(user_id: int):
try:
user = Abon.objects.get(pk=user_id)
agent_abon = user.build_agent_struct()
if agent_abon is not None:
mngr = user.nas.get_nas_manager()
mngr.remove_user(agent_abon)
except (
Abon.DoesNotExist, NasFailedResult,
NasNetworkError, ConnectionResetError, LogicError
):
pass
@shared_task
def user_add_to_gw(user_id: int):
try:
user = Abon.objects.get(pk=user_id)
agent_abon = user.build_agent_struct()
if agent_abon is not None:
mngr = user.nas.get_nas_manager()
mngr.add_user(agent_abon)
except (
Abon.DoesNotExist, NasFailedResult,
NasNetworkError, ConnectionResetError, LogicError
):
pass
@shared_task
def user_nas_sync(user_id: int):
try:
user = Abon.objects.get(pk=user_id)
agent_abon = user.build_agent_struct()
if agent_abon is not None:
mngr = user.nas.get_nas_manager()
mngr.update_user(agent_abon)
except (NasFailedResult, NasNetworkError, ConnectionResetError, LogicError) as e:
return 'ERROR:%s' % e
Loading…
Cancel
Save