From c2aaa1c0218f015d7b5fa8037f4fb1a5a526f7bb Mon Sep 17 00:00:00 2001 From: Dmitry Novikov Date: Wed, 14 Jun 2017 19:19:32 +0300 Subject: [PATCH 1/8] FIXBUG --- agent/mod_mikrotik.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/agent/mod_mikrotik.py b/agent/mod_mikrotik.py index 05cf43f..82a56c6 100644 --- a/agent/mod_mikrotik.py +++ b/agent/mod_mikrotik.py @@ -236,7 +236,7 @@ class QueueManager(TransmitterManager, metaclass=ABCMeta): assert isinstance(user, AbonStruct) q = self.find('uid%d' % user.uid) if q is not None: - return self._exec_cmd(['/queue/simple/remove', '=.id=*' + str(q.sid)]) + return self._exec_cmd(['/queue/simple/remove', '=.id=*' + getattr(q, 'queue_id', '')]) def remove_range(self, q_ids): if q_ids is not None and len(q_ids) > 0: @@ -251,13 +251,13 @@ class QueueManager(TransmitterManager, metaclass=ABCMeta): # не нашли запись в шейпере об абоненте, добавим return self.add(user) else: - mk_id = queue.sid + mk_id = getattr(queue, 'queue_id', '') # обновляем шейпер абонента return self._exec_cmd(['/queue/simple/set', '=.id=*' + mk_id, '=name=uid%d' % user.uid, '=max-limit=%.3fM/%.3fM' % (user.tariff.speedOut, user.tariff.speedIn), # FIXME: тут в разных микротиках или =target-addresses или =target - '=target=%s' % user.ip.get_str(), + '=target=%s' % str(user.ip), '=queue=MikroBILL_SFQ/MikroBILL_SFQ', '=burst-time=1/1' ]) @@ -285,7 +285,7 @@ class QueueManager(TransmitterManager, metaclass=ABCMeta): self.add(user) return self.disable(user) else: - return self._exec_cmd(['/queue/simple/disable', '=.id=*' + q.sid]) + return self._exec_cmd(['/queue/simple/disable', '=.id=*' + getattr(q, 'queue_id', '')]) def enable(self, user): assert isinstance(user, AbonStruct) @@ -294,7 +294,7 @@ class QueueManager(TransmitterManager, metaclass=ABCMeta): self.add(user) self.enable(user) else: - return self._exec_cmd(['/queue/simple/enable', '=.id=*' + q.sid]) + return self._exec_cmd(['/queue/simple/enable', '=.id=*' + getattr(q, 'queue_id', '')]) class IpAddressListObj(IpStruct): @@ -442,7 +442,7 @@ class MikrotikTransmitter(QueueManager, IpAddressListManager): if queue is None: QueueManager.add(self, user) return - if queue.abon != user: + if queue != user: QueueManager.update(self, user) def ping(self, host, count=10): From 278c3c85013b0650800c19d1d3a689e0cfe1b8ef Mon Sep 17 00:00:00 2001 From: Dmitry Novikov Date: Thu, 29 Jun 2017 12:00:37 +0300 Subject: [PATCH 2/8] =?UTF-8?q?FIXBUG:=20is=5Fdhcp=20=D0=B5=D1=81=D1=82?= =?UTF-8?q?=D1=8C=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20=D0=B8=20=D1=81=D0=B2?= =?UTF-8?q?=D0=BE=D0=B9=D1=81=D1=82=D0=B2=D0=BE,=20=D0=BD=D0=B0=D0=B4?= =?UTF-8?q?=D0=BE=20=D1=80=D0=B0=D0=B7=D0=BB=D0=B8=D1=87=D0=B0=D1=82=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- abonapp/models.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/abonapp/models.py b/abonapp/models.py index c9e76b5..8905542 100644 --- a/abonapp/models.py +++ b/abonapp/models.py @@ -436,8 +436,13 @@ class AbonRawPassword(models.Model): def abon_post_save(sender, instance, **kwargs): timeout = None - if hasattr(instance, 'is_dhcp') and instance.is_dhcp(): - timeout = getattr(settings, 'DHCP_TIMEOUT', 14400) + if hasattr(instance, 'is_dhcp'): + if callable(instance.is_dhcp): + if instance.is_dhcp(): + timeout = getattr(settings, 'DHCP_TIMEOUT', 14400) + else: + if instance.is_dhcp: + timeout = getattr(settings, 'DHCP_TIMEOUT', 14400) agent_abon = instance.build_agent_struct() if agent_abon is None: return True From aa9205aa0de2f2bda03ce63fcd02e22f4ca8cb39 Mon Sep 17 00:00:00 2001 From: Dmitry Novikov Date: Thu, 29 Jun 2017 12:01:08 +0300 Subject: [PATCH 3/8] fizbux --- abonapp/views.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/abonapp/views.py b/abonapp/views.py index 925c99c..80657a1 100644 --- a/abonapp/views.py +++ b/abonapp/views.py @@ -302,7 +302,7 @@ def abonhome(request, gid, uid): messages.add_message(request, messages.constants.ERROR, err) except MultipleObjectsReturned: abon_device = models.AbonDevice.objects.filter(abon=abon)[0] - models.AbonDevice.objects.exclude(pk=abon_device).delete() + models.AbonDevice.objects.exclude(pk=abon_device.pk).delete() if request.user.has_perm('abonapp.change_abon'): return render(request, 'abonapp/editAbon.html', { @@ -533,6 +533,7 @@ def activate_service(request, gid, uid, srvid): return HttpResponse(_('Not confirmed')) abtar.activate(request.user) + abtar.abon.save() messages.success(request, _('Service has been activated successfully')) return redirect('abonapp:abon_services', gid, uid) From bc827837c19684d6bfe7254c9557ef33e25d7df6 Mon Sep 17 00:00:00 2001 From: Dmitry Novikov Date: Thu, 29 Jun 2017 12:02:15 +0300 Subject: [PATCH 4/8] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4=20=D0=BE=20=D1=82=D0=BE=D0=BC?= =?UTF-8?q?=20=D1=87=D1=82=D0=BE=20=D0=BF=D1=80=D0=BE=D0=B8=D1=81=D1=85?= =?UTF-8?q?=D0=BE=D0=B4=D0=B8=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- agent/core.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/agent/core.py b/agent/core.py index f9caf4a..756d68e 100644 --- a/agent/core.py +++ b/agent/core.py @@ -121,5 +121,12 @@ class BaseTransmitter(metaclass=ABCMeta): def sync_nas(self, users_from_db): list_for_add, list_for_del = self._diff_users(users_from_db) + print('FOR DELETE') + for ld in list_for_del: + print(ld) + print('FOR ADD') + for la in list_for_add: + print(la) self.remove_user_range( list_for_del ) self.add_user_range( list_for_add ) + From a643714a1efe33e8fdf7ef39bb68b3999f7efe61 Mon Sep 17 00:00:00 2001 From: Dmitry Novikov Date: Thu, 29 Jun 2017 12:03:47 +0300 Subject: [PATCH 5/8] fixbug --- agent/mod_mikrotik.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/agent/mod_mikrotik.py b/agent/mod_mikrotik.py index 82a56c6..2e515c5 100644 --- a/agent/mod_mikrotik.py +++ b/agent/mod_mikrotik.py @@ -11,7 +11,7 @@ from djing.settings import DEBUG import re -#DEBUG=False +#DEBUG=True LIST_USERS_ALLOWED = 'DjingUsersAllowed' LIST_USERS_BLOCKED = 'DjingUsersBlocked' @@ -236,7 +236,7 @@ class QueueManager(TransmitterManager, metaclass=ABCMeta): assert isinstance(user, AbonStruct) q = self.find('uid%d' % user.uid) if q is not None: - return self._exec_cmd(['/queue/simple/remove', '=.id=*' + getattr(q, 'queue_id', '')]) + return self._exec_cmd(['/queue/simple/remove', '=.id=' + getattr(q, 'queue_id', '')]) def remove_range(self, q_ids): if q_ids is not None and len(q_ids) > 0: @@ -253,7 +253,7 @@ class QueueManager(TransmitterManager, metaclass=ABCMeta): else: mk_id = getattr(queue, 'queue_id', '') # обновляем шейпер абонента - return self._exec_cmd(['/queue/simple/set', '=.id=*' + mk_id, + return self._exec_cmd(['/queue/simple/set', '=.id=' + mk_id, '=name=uid%d' % user.uid, '=max-limit=%.3fM/%.3fM' % (user.tariff.speedOut, user.tariff.speedIn), # FIXME: тут в разных микротиках или =target-addresses или =target @@ -375,8 +375,7 @@ class MikrotikTransmitter(QueueManager, IpAddressListManager): def add_user_range(self, user_list): for usr in user_list: - if hasattr(usr, 'is_dhcp') and not usr.is_dhcp(): - self.add_user(usr) + self.add_user(usr) def remove_user_range(self, users): queue_ids = [usr.queue_id for usr in users if usr is not None] @@ -391,8 +390,6 @@ class MikrotikTransmitter(QueueManager, IpAddressListManager): assert isinstance(user.ip, IpStruct) if user.tariff is None or not isinstance(user.tariff, TariffStruct): return - if not user.is_access(): - return QueueManager.add(self, user) IpAddressListManager.add(self, LIST_USERS_ALLOWED, user.ip, ip_timeout) # удаляем из списка заблокированных абонентов From a0849b45eca7ae927867076fdc9bfbe7a88160bd Mon Sep 17 00:00:00 2001 From: Dmitry Novikov Date: Thu, 29 Jun 2017 12:04:38 +0300 Subject: [PATCH 6/8] =?UTF-8?q?FIXBUG:=20=D0=BD=D0=B5=20=D0=BF=D1=80=D0=B8?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D0=B8=D0=BB=D1=81=D1=8F=20=D0=BF=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D0=B2=D0=BE=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- chatbot/telebot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chatbot/telebot.py b/chatbot/telebot.py index 9aecb83..e9c9a56 100755 --- a/chatbot/telebot.py +++ b/chatbot/telebot.py @@ -113,7 +113,7 @@ class DjingTelebot(helper.ChatHandler): # пингуем адрес def ping(self, ip=None): if ip is None: - self._question("Let's ping, write ip. It will be necessary to wait 10 seconds", self.ping) + self._question(_("Let's ping, write ip. It will be necessary to wait 10 seconds"), self.ping) return try: socket.inet_aton(ip) From ebc01f710f1bfe37d92e1e13af7ba2fc261f5b3b Mon Sep 17 00:00:00 2001 From: Dmitry Novikov Date: Thu, 29 Jun 2017 12:06:14 +0300 Subject: [PATCH 7/8] FIXBUG --- devapp/views.py | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/devapp/views.py b/devapp/views.py index 65126a4..f6d3cb6 100644 --- a/devapp/views.py +++ b/devapp/views.py @@ -132,18 +132,21 @@ def toggle_port(request, did, portid, status=0): portid = int(portid) status = int(status) dev = get_object_or_404(Device, id=int(did)) - if ping(dev.ip_address): - if dev.man_passw: - manager = dev.get_manager_klass()(dev.ip_address, dev.man_passw) - ports = manager.get_ports() - if status: - ports[portid-1].enable() + try: + if ping(dev.ip_address): + if dev.man_passw: + manager = dev.get_manager_klass()(dev.ip_address, dev.man_passw) + ports = manager.get_ports() + if status: + ports[portid-1].enable() + else: + ports[portid-1].disable() else: - ports[portid-1].disable() + messages.warning(request, _('Not Set snmp device password')) else: - messages.warning(request, _('Not Set snmp device password')) - else: - messages.error(request, _('Dot was not pinged')) + messages.error(request, _('Dot was not pinged')) + except EasySNMPTimeoutError: + messages.error(request, _('wait for a reply from the SNMP Timeout')) return redirect('devapp:view', dev.user_group.pk if dev.user_group is not None else 0, did) From adaa8a3e68fcae95474f71e7dc1761cba69fdf63 Mon Sep 17 00:00:00 2001 From: Dmitry Novikov Date: Thu, 29 Jun 2017 12:07:13 +0300 Subject: [PATCH 8/8] =?UTF-8?q?=D0=BE=D0=B1=D1=80=D0=B0=D1=82=D0=BD=D0=B0?= =?UTF-8?q?=D1=8F=20=D1=81=D0=BE=D1=80=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0,=20=D1=87=D1=82=D0=BE=D0=B1=20=D0=BF=D0=BE=D1=81=D0=BB?= =?UTF-8?q?=D0=B5=D0=B4=D0=BD=D0=B8=D0=B5=20=D0=B7=D0=B0=D0=BF=D0=B8=D1=81?= =?UTF-8?q?=D0=B8=20=D0=B1=D1=8B=D0=BB=D0=B8=20=D0=B2=20=D0=BD=D0=B0=D1=87?= =?UTF-8?q?=D0=B0=D0=BB=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dialing_app/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dialing_app/views.py b/dialing_app/views.py index 2f5ff31..9125ccc 100644 --- a/dialing_app/views.py +++ b/dialing_app/views.py @@ -11,7 +11,7 @@ from .models import AsteriskCDR @login_required @only_admins def home(request): - logs = AsteriskCDR.objects.all() + logs = AsteriskCDR.objects.order_by('-calldate') logs = pag_mn(request, logs) return render(request, 'index.html', { 'logs': logs