diff --git a/clientsideapp/views.py b/clientsideapp/views.py index ffdea3f..e2ec01d 100644 --- a/clientsideapp/views.py +++ b/clientsideapp/views.py @@ -62,7 +62,7 @@ def buy_service(request, srv_id): customer_nas_command.delay(abon.pk, 'sync') messages.success( request, - _("The service '%s' wan successfully activated") % service.title + _("The service '%s' was successfully activated") % service.title ) else: current_service = abon.active_tariff() diff --git a/devapp/base_intr.py b/devapp/base_intr.py index fb2fe7f..73eef09 100644 --- a/devapp/base_intr.py +++ b/devapp/base_intr.py @@ -23,6 +23,7 @@ class DeviceConfigurationError(DeviceImplementationError): class DevBase(object, metaclass=ABCMeta): def __init__(self, dev_instance=None): + super().__init__() self.db_instance = dev_instance @property diff --git a/finapp/tests.py b/finapp/tests.py index c7e4d55..ce5460e 100644 --- a/finapp/tests.py +++ b/finapp/tests.py @@ -37,6 +37,7 @@ class MyBaseTestCase(metaclass=ABCMeta): def setUp(self): grp = Group.objects.create(title='Grp1') + grp.refresh_from_db() a1 = Abon.objects.create_user( telephone='+79781234567', username='abon', @@ -44,7 +45,9 @@ class MyBaseTestCase(metaclass=ABCMeta): ) a1.group = grp a1.save(update_fields=('group',)) + a1.refresh_from_db() my_admin = UserProfile.objects.create_superuser('+79781234567', 'local_superuser', 'ps') + my_admin.refresh_from_db() self.adminuser = my_admin self.abon = a1 self.group = grp @@ -68,6 +71,7 @@ class AllPayTestCase(MyBaseTestCase, TestCase): service_id='service_id', slug='pay_gw_slug' ) + pay_system.refresh_from_db() self.pay_system = pay_system def user_pay_view(self): diff --git a/finapp/views.py b/finapp/views.py index 9f9dd0d..be7c6a9 100644 --- a/finapp/views.py +++ b/finapp/views.py @@ -3,7 +3,7 @@ from hashlib import md5 from django.contrib import messages from django.contrib.auth.mixins import PermissionRequiredMixin -from django.db import DatabaseError +from django.db import DatabaseError, transaction from django.db.models import Count from django.http import HttpResponse from django.shortcuts import get_object_or_404, resolve_url @@ -15,7 +15,6 @@ from django.utils.translation import ugettext_lazy as _ from xmlview.decorators import xml_view from djing import lib from djing.global_base_views import OrderedFilteredList -from djing.lib import safe_int from djing.lib.mixins import LoginAdminMixin, LoginAdminPermissionMixin from finapp.forms import PayAllTimeGatewayForm from finapp.models import AllTimePayLog, PayAllTimeGateway @@ -40,14 +39,14 @@ class AllTimePay(DetailView): return r def check_sign(self, data: dict, sign: str) -> bool: - act = safe_int(data.get('ACT')) + act = lib.safe_int(data.get('ACT')) pay_account = data.get('PAY_ACCOUNT') serv_id = data.get('SERVICE_ID') pay_id = data.get('PAY_ID') md = md5() s = '_'.join( (str(act), pay_account or '', serv_id or '', - pay_id, self.object.secret) + pay_id or '', self.object.secret) ) md.update(bytes(s, 'utf-8')) our_sign = md.hexdigest() @@ -112,20 +111,21 @@ class AllTimePay(DetailView): if pays.exists(): return self._bad_ret(-100, 'Pay already exists') - abon.add_ballance( - None, pay_amount, - comment='%s %.2f' % (self.object.title, pay_amount) - ) - abon.save(update_fields=('ballance',)) - - AllTimePayLog.objects.create( - pay_id=pay_id, - summ=pay_amount, - abon=abon, - trade_point=trade_point, - receipt_num=receipt_num, - pay_gw=self.object - ) + with transaction.atomic(): + abon.add_ballance( + None, pay_amount, + comment='%s %.2f' % (self.object.title, pay_amount) + ) + abon.save(update_fields=('ballance',)) + + AllTimePayLog.objects.create( + pay_id=pay_id, + summ=pay_amount, + abon=abon, + trade_point=trade_point, + receipt_num=receipt_num, + pay_gw=self.object + ) return { 'pay_id': pay_id, 'service_id': data.get('SERVICE_ID'),