Dmitry Novikov 7 years ago
parent
commit
035fa8bacf
  1. 2
      clientsideapp/views.py
  2. 1
      devapp/base_intr.py
  3. 4
      finapp/tests.py
  4. 36
      finapp/views.py

2
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()

1
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

4
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):

36
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'),

Loading…
Cancel
Save