Browse Source

Адаптер для calc_type choices можно было упростить

devel
bashmak 9 years ago
parent
commit
1ee557f383
  1. 10
      tariff_app/models.py

10
tariff_app/models.py

@ -5,21 +5,13 @@ from .custom_tariffs import TariffBase, TARIFF_CHOICES
from mydefs import MyChoicesAdapter
# Класс похож на адаптер. Предназначен для Django CHOICES чтоб можно было передавать классывместо просто описания поля,
# классы передавать для того чтоб по значению из базы понять какой класс нужно взять для расчёта стоимости тарифа.
class _TariffChoicesAdapter(MyChoicesAdapter):
# На вход принимает кортеж кортежей, вложенный из 2х элементов: кода и класса, как: TARIFF_CHOICES
def __init__(self):
super().__init__(TARIFF_CHOICES)
class Tariff(models.Model):
title = models.CharField(max_length=32)
descr = models.CharField(max_length=256)
speedIn = models.FloatField(default=0.0)
speedOut = models.FloatField(default=0.0)
amount = models.FloatField(default=0.0)
calc_type = models.CharField(max_length=2, default=TARIFF_CHOICES[0][0], choices=_TariffChoicesAdapter())
calc_type = models.CharField(max_length=2, default=TARIFF_CHOICES[0][0], choices=MyChoicesAdapter(TARIFF_CHOICES))
is_admin = models.BooleanField(default=False)
# Возвращает потомок класса TariffBase, методы которого дают нужную логику оплаты по тарифу

Loading…
Cancel
Save