Skip to content

Commit 7209a6f

Browse files
committed
Added ability to update request value after address generated
1 parent 311b228 commit 7209a6f

File tree

3 files changed

+27
-10
lines changed

3 files changed

+27
-10
lines changed

cryptapi/dispatchers.py

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,7 @@ def callback(self):
5353
total_received = self.payment['value_paid']
5454

5555
if total_received < request.value_requested:
56-
total_received_list = request.payment_set.filter(pending=False).values_list('value_paid', flat=True)
57-
total_received = sum(total_received_list)
56+
total_received = request.total_paid
5857

5958
if total_received < request.value_requested:
6059
request.status = 'insufficient'
@@ -104,7 +103,6 @@ def request(self, cb_params={}, params={}):
104103
from cryptapi.utils import build_callback_url, process_request
105104
from cryptapi.helpers import generate_nonce
106105
from cryptapi.forms import AddressCreatedForm
107-
from cryptapi.choices import TOKEN_DICT
108106

109107
try:
110108
provider = Provider.objects.get(coin=self.coin, active=True)
@@ -146,17 +144,14 @@ def request(self, cb_params={}, params={}):
146144
if not address_form.is_valid():
147145
return None
148146

149-
if self.coin in TOKEN_DICT:
150-
divider = TOKEN_DICT[self.coin][4]
151-
self.value = self.value / (10 ** divider)
152-
153147
request_model.nonce = _cb_params['nonce']
154148
request_model.address_in = response['address_in']
155149
request_model.address_out = _params['address']
156-
request_model.value_requested = self.value
157150
request_model.status = 'created'
158151
request_model.raw_request_url = raw_response.url
159152

153+
request_model.set_value(self.value)
154+
160155
request_model.save()
161156

162157
return request_model

cryptapi/meta.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
from distutils.version import StrictVersion
22

33

4-
VERSION = StrictVersion('0.2.7')
4+
VERSION = StrictVersion('0.2.8')

cryptapi/models.py

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from django.db import models
2+
from django.db.models import Sum
23
from django.utils.translation import gettext_lazy as _
3-
from .choices import COINS, STATUS
4+
from .choices import COINS, STATUS, TOKEN_DICT
45

56

67
class Provider(models.Model):
@@ -24,6 +25,27 @@ class Request(models.Model):
2425
raw_request_url = models.CharField(_('Request URL'), max_length=8192, default='', null=True)
2526
timestamp = models.DateTimeField(auto_now_add=True)
2627

28+
@property
29+
def total_paid(self):
30+
qs = self.payment_set.filter(pending=False)
31+
32+
if qs.exists():
33+
return qs.aggregate(sum=Sum('value_paid')).get('sum', 0)
34+
35+
return 0
36+
37+
def set_value(self, value, commit=False):
38+
_coin = self.provider.coin.lower()
39+
_token = TOKEN_DICT.get(_coin)
40+
41+
if _token:
42+
value = value / (10 ** _token[4])
43+
44+
self.value_requested = value
45+
46+
if commit:
47+
self.save()
48+
2749
def __str__(self):
2850
return "#{}, {}#{}, {} ({})".format(self.id, _('Order'), self.order_id, self.get_status_display(), self.timestamp.strftime('%x %X'))
2951

0 commit comments

Comments
 (0)