Browse Source

избавился от assert в коде при проверке типа.

devel
bashmak 9 years ago
parent
commit
5ba711dab1
  1. 2
      abonapp/forms.py
  2. 3
      abonapp/models.py
  3. 37
      agent/mod_mikrotik.py
  4. 18
      agent/structs.py
  5. 9
      chatbot/telebot.py
  6. 9
      devapp/dev_types.py
  7. 3
      devapp/tests.py
  8. 3
      docs/dev.md
  9. 4
      mydefs.py
  10. 4
      photo_app/models.py
  11. 3
      tariff_app/models.py

2
abonapp/forms.py

@ -70,7 +70,7 @@ class AbonForm(forms.ModelForm):
def save(self, commit=True):
raw_password = self.cleaned_data['password']
acc = super().save(commit=False)
acc = super(AbonForm, self).save(commit=False)
acc.password = make_password(raw_password)
if commit:
acc.save()

3
abonapp/models.py

@ -164,7 +164,8 @@ class Abon(UserProfile):
# покупаем тариф
def pick_tariff(self, tariff, author, comment=None, deadline=None):
assert isinstance(tariff, Tariff)
if not isinstance(tariff, Tariff):
raise TypeError
amount = round(tariff.amount, 2)

37
agent/mod_mikrotik.py

@ -161,7 +161,8 @@ class TransmitterManager(BaseTransmitter, metaclass=ABCMeta):
self.s.close()
def _exec_cmd(self, cmd):
assert isinstance(cmd, list)
if not isinstance(cmd, list):
raise TypeError
result_iter = self.ar.talk_iter(cmd)
res = []
for rt in result_iter:
@ -171,7 +172,8 @@ class TransmitterManager(BaseTransmitter, metaclass=ABCMeta):
return res
def _exec_cmd_iter(self, cmd):
assert isinstance(cmd, list)
if not isinstance(cmd, list):
raise TypeError
result_iter = self.ar.talk_iter(cmd)
for rt in result_iter:
if len(rt) < 2:
@ -223,7 +225,8 @@ class QueueManager(TransmitterManager, metaclass=ABCMeta):
return self._build_shape_obj(ret[0])
def add(self, user):
assert isinstance(user, AbonStruct)
if not isinstance(user, AbonStruct):
raise TypeError
if user.tariff is None or not isinstance(user.tariff, TariffStruct):
return
return self._exec_cmd(['/queue/simple/add',
@ -236,7 +239,8 @@ class QueueManager(TransmitterManager, metaclass=ABCMeta):
])
def remove(self, user):
assert isinstance(user, AbonStruct)
if not isinstance(user, AbonStruct):
raise TypeError
q = self.find('uid%d' % user.uid)
if q is not None:
return self._exec_cmd(['/queue/simple/remove', '=.id=' + getattr(q, 'queue_id', '')])
@ -246,7 +250,8 @@ class QueueManager(TransmitterManager, metaclass=ABCMeta):
return self._exec_cmd(['/queue/simple/remove', '=numbers=' + ','.join(q_ids)])
def update(self, user):
assert isinstance(user, AbonStruct)
if not isinstance(user, AbonStruct):
raise TypeError
if user.tariff is None or not isinstance(user.tariff, TariffStruct):
return
queue = self.find('uid%d' % user.uid)
@ -282,7 +287,8 @@ class QueueManager(TransmitterManager, metaclass=ABCMeta):
yield int(queue[1]['=.id'].replace('*', ''), base=16)
def disable(self, user):
assert isinstance(user, AbonStruct)
if not isinstance(user, AbonStruct):
raise TypeError
q = self.find('uid%d' % user.uid)
if q is None:
self.add(user)
@ -291,7 +297,8 @@ class QueueManager(TransmitterManager, metaclass=ABCMeta):
return self._exec_cmd(['/queue/simple/disable', '=.id=*' + getattr(q, 'queue_id', '')])
def enable(self, user):
assert isinstance(user, AbonStruct)
if not isinstance(user, AbonStruct):
raise TypeError
q = self.find('uid%d' % user.uid)
if q is None:
self.add(user)
@ -309,7 +316,8 @@ class IpAddressListObj(IpStruct):
class IpAddressListManager(TransmitterManager, metaclass=ABCMeta):
def add(self, list_name, ip, timeout=None):
assert isinstance(ip, IpStruct)
if not isinstance(ip, IpStruct):
raise TypeError
commands = [
'/ip/firewall/address-list/add',
'=list=%s' % list_name,
@ -342,7 +350,8 @@ class IpAddressListManager(TransmitterManager, metaclass=ABCMeta):
])
def find(self, ip, list_name):
assert isinstance(ip, IpStruct)
if not isinstance(ip, IpStruct):
raise TypeError
return self._exec_cmd([
'/ip/firewall/address-list/print', 'where',
'?list=%s' % list_name,
@ -392,8 +401,9 @@ class MikrotikTransmitter(QueueManager, IpAddressListManager):
IpAddressListManager.remove(self, ip_list_entity[0]['=.id'])
def add_user(self, user, ip_timeout=None):
super(MikrotikTransmitter, self).add_user(user)
assert isinstance(user.ip, IpStruct)
super(MikrotikTransmitter, self).add_user(user, ip_timeout)
if not isinstance(user.ip, IpStruct):
raise TypeError
if user.tariff is None or not isinstance(user.tariff, TariffStruct):
return
QueueManager.add(self, user)
@ -412,8 +422,9 @@ class MikrotikTransmitter(QueueManager, IpAddressListManager):
# обновляем основную инфу абонента
def update_user(self, user, ip_timeout=None):
super(MikrotikTransmitter, self).update_user(user)
assert isinstance(user.ip, IpStruct)
super(MikrotikTransmitter, self).update_user(user, ip_timeout)
if not isinstance(user.ip, IpStruct):
raise TypeError
# ищем ip абонента в списке ip
find_res = IpAddressListManager.find(self, user.ip, LIST_USERS_ALLOWED)

18
agent/structs.py

@ -38,7 +38,8 @@ class IpStruct(BaseStruct):
return self.__ip
def __eq__(self, other):
assert isinstance(other, IpStruct)
if not isinstance(other, IpStruct):
raise TypeError('Instance must be IpStruct')
return self.__ip == other.__ip
def __int__(self):
@ -100,8 +101,10 @@ class AbonStruct(BaseStruct):
def serialize(self):
if self.tariff is None:
return
assert isinstance(self.tariff, TariffStruct)
assert isinstance(self.ip, IpStruct)
if not isinstance(self.tariff, TariffStruct):
raise TypeError('Instance must be TariffStruct')
if not isinstance(self.ip, IpStruct):
raise TypeError('Instance must be IpStruct')
dt = pack("!LII?", self.uid, int(self.ip), self.tariff.tid, self.is_active)
return dt
@ -110,13 +113,15 @@ class AbonStruct(BaseStruct):
self.uid = dt[0]
self.ip = IpStruct(dt[1])
if tariff is not None:
assert isinstance(tariff, TariffStruct)
if not isinstance(tariff, TariffStruct):
raise TypeError
self.tariff = tariff
self.is_active = dt['3']
return self
def __eq__(self, other):
assert isinstance(other, AbonStruct)
if not isinstance(other, AbonStruct):
raise TypeError
r = self.uid == other.uid and self.ip == other.ip
r = r and self.tariff == other.tariff
return r
@ -147,5 +152,6 @@ class ShapeItem(BaseStruct):
return self
def __eq__(self, other):
assert isinstance(other, ShapeItem)
if not isinstance(other, ShapeItem):
raise TypeError
return self.sid == other.sid and self.abon == other.abon

9
chatbot/telebot.py

@ -31,7 +31,8 @@ class DjingTelebot(helper.ChatHandler):
# задаём вопрос пользователю, и ожидаем ответ в fn
def _question(self, text, fn):
assert isinstance(fn, collections.Callable)
if not isinstance(fn, collections.Callable):
raise TypeError
self._dialog_fn = fn
if text is not None:
self._sent_reply(text)
@ -75,7 +76,8 @@ class DjingTelebot(helper.ChatHandler):
if text in list(self.cmds.keys()):
self.cmds[text]()
elif self._dialog_fn is not None:
assert callable(self._dialog_fn)
if not callable(self._dialog_fn):
raise TypeError
self._dialog_fn(text)
self._dialog_fn = None
else:
@ -92,7 +94,8 @@ class DjingTelebot(helper.ChatHandler):
try:
TelegramBot.objects.get(user=profile)
except TelegramBot.DoesNotExist:
assert self._chat_id != 0
if self._chat_id == 0:
raise ChatException('telebot.py. def question_name: Chat id is empty')
TelegramBot.objects.create(
user=profile,
chat_id=self._chat_id

9
devapp/dev_types.py

@ -9,7 +9,8 @@ class DLinkPort(BasePort):
def __init__(self, num, name, status, mac, speed, snmpWorker):
BasePort.__init__(self, num, name, status, mac, speed)
assert issubclass(snmpWorker.__class__ , SNMPBaseWorker)
if not issubclass(snmpWorker.__class__ , SNMPBaseWorker):
raise TypeError
self.snmp_worker = snmpWorker
# выключаем этот порт
@ -79,7 +80,8 @@ class DLinkDevice(DevBase, SNMPBaseWorker):
class ONUdev(BasePort):
def __init__(self, num, name, status, mac, speed, signal, snmpWorker):
super(ONUdev, self).__init__(num, name, status, mac, speed)
assert issubclass(snmpWorker.__class__, SNMPBaseWorker)
if not issubclass(snmpWorker.__class__, SNMPBaseWorker):
raise TypeError
self.snmp_worker = snmpWorker
self.signal = signal
@ -181,7 +183,8 @@ class EltexPort(BasePort):
def __init__(self, snmpWorker, *args, **kwargs):
BasePort.__init__(self, *args, **kwargs)
assert issubclass(snmpWorker.__class__, SNMPBaseWorker)
if not issubclass(snmpWorker.__class__, SNMPBaseWorker):
raise TypeError
self.snmp_worker = snmpWorker
# выключаем этот порт

3
devapp/tests.py

@ -14,7 +14,8 @@ class DevTest(TestCase):
ports = dev.get_ports()
print('gports')
for port in ports:
assert issubclass(port.__class__, dev_types.BasePort)
if not issubclass(port.__class__, dev_types.BasePort):
raise TypeError
print(('\tPort:', port.nm, port.st, port.mac(), port.sp))
# Disable 2 port
print((ports[1].disable()))

3
docs/dev.md

@ -12,7 +12,8 @@ class EltexPort(BasePort):
def __init__(self, snmpWorker, *args, **kwargs):
BasePort.__init__(self, *args, **kwargs)
assert issubclass(snmpWorker.__class__, SNMPBaseWorker)
if not issubclass(snmpWorker.__class__, SNMPBaseWorker):
raise TypeError
self.snmp_worker = snmpWorker
# выключаем этот порт

4
mydefs.py

@ -83,8 +83,8 @@ class MyGenericIPAddressField(models.GenericIPAddressField):
value = super(MyGenericIPAddressField, self).get_prep_value(value)
return ip2int(value)
def to_python(self, addr):
return addr
def to_python(self, value):
return value
def get_internal_type(self):
return 'PositiveIntegerField'

4
photo_app/models.py

@ -27,7 +27,7 @@ class Photo(models.Model):
def save(self, *args, **kwargs):
if not self.image:
return
super(Photo, self).save()
super(Photo, self).save(*args, **kwargs)
im = Image.open(self.image.path)
im.thumbnail((759, 759), Image.ANTIALIAS)
@ -42,7 +42,7 @@ class Photo(models.Model):
im.save(fname)
os.remove(self.image.path)
self.image = "%s.%s" % (hs, ext)
super(Photo, self).save()
super(Photo, self).save(*args, **kwargs)
# class Meta:
# unique_together = (('image',),)

3
tariff_app/models.py

@ -19,7 +19,8 @@ class Tariff(models.Model):
ob = [TC for TC in TARIFF_CHOICES if TC[0] == self.calc_type]
if len(ob) > 0:
res_type = ob[0][1]
assert issubclass(res_type, TariffBase)
if not issubclass(res_type, TariffBase):
raise TypeError
return res_type
def calc_deadline(self):

Loading…
Cancel
Save