Browse Source

Make service unique for speed, type and price. And test it

devel
Dmitry Novikov 8 years ago
parent
commit
6b28eea39b
  1. 3
      tariff_app/locale/ru/LC_MESSAGES/django.po
  2. 1
      tariff_app/models.py
  3. 2
      tariff_app/templates/tariff_app/editTarif.html
  4. 64
      tariff_app/tests.py

3
tariff_app/locale/ru/LC_MESSAGES/django.po

@ -215,3 +215,6 @@ msgstr "Вы уверены что хотите удалить тариф?"
msgid "IS Daily service" msgid "IS Daily service"
msgstr "Услуга на сутки" msgstr "Услуга на сутки"
msgid "Service with this Speed In, Speed Out, Price and Script already exists."
msgstr "Услуга с такой скоростью, ценой и логикой уже есть"

1
tariff_app/models.py

@ -54,6 +54,7 @@ class Tariff(models.Model):
ordering = ('title',) ordering = ('title',)
verbose_name = _('Service') verbose_name = _('Service')
verbose_name_plural = _('Services') verbose_name_plural = _('Services')
unique_together = ('speedIn', 'speedOut', 'amount', 'calc_type')
class PeriodicPay(models.Model): class PeriodicPay(models.Model):

2
tariff_app/templates/tariff_app/editTarif.html

@ -24,6 +24,8 @@
<div class="panel-body"> <div class="panel-body">
<form action="{% url 'tarifs:edit' tarif_id %}" method="post">{% csrf_token %} <form action="{% url 'tarifs:edit' tarif_id %}" method="post">{% csrf_token %}
{% bootstrap_form_errors form %}
{% bootstrap_icon 'tag' as ic %} {% bootstrap_icon 'tag' as ic %}
{% bootstrap_field form.title addon_before=ic %} {% bootstrap_field form.title addon_before=ic %}

64
tariff_app/tests.py

@ -0,0 +1,64 @@
from abc import ABCMeta
from django.conf import settings
from django.shortcuts import resolve_url
from django.test import TestCase
from accounts_app.models import UserProfile
from group_app.models import Group
from tariff_app.models import Tariff
class MyBaseTestCase(metaclass=ABCMeta):
def _client_get_check_login(self, url):
"""
Checks if url is protected from unauthorized access
:param url:
:return: authorized response
"""
r = self.client.get(url)
self.assertRedirects(r, "%s?next=%s" % (getattr(settings, 'LOGIN_URL'), url))
self.client.force_login(self.adminuser)
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
return r
def setUp(self):
grp = Group.objects.create(title='Grp1')
my_admin = UserProfile.objects.create_superuser('+79781234567', 'local_superuser', 'ps')
self.adminuser = my_admin
self.group = grp
class ServiceTestCase(MyBaseTestCase, TestCase):
def setUp(self):
super(ServiceTestCase, self).setUp()
trf = Tariff.objects.create(
title='test',
descr='Some descr',
speedIn=10.0,
speedOut=2.0,
amount=1.0,
calc_type='Df'
)
trf.groups.add(self.group.pk)
trf.save()
self.tariff = trf
def test_add_same_services(self):
print('test_add_same_services')
url = resolve_url('tariff_app:add')
self._client_get_check_login(url)
self.client.post(url, data={
'title': 'same srv',
'descr': 'descriptive',
'speedIn': 10.0,
'speedOut': 2.0,
'amount': 1.0,
'calc_type': 'Df'
})
try:
Tariff.objects.get(title='same srv')
raise self.failureException('Services cannot be saved because it duplicates other service')
except Tariff.DoesNotExist:
pass
Loading…
Cancel
Save