|
|
@@ -2,12 +2,14 @@ from django.dispatch import receiver
|
|
2
|
2
|
from django.db.models.signals import m2m_changed, post_save
|
|
3
|
3
|
|
|
4
|
4
|
from oscar.core.loading import import_module
|
|
|
5
|
+from oscar.apps.basket.models import AbstractBasket
|
|
5
|
6
|
import_module('voucher.models', ['Voucher'], locals())
|
|
6
|
7
|
import_module('order.models', ['OrderDiscount'], locals())
|
|
7
|
8
|
|
|
8
|
9
|
@receiver(m2m_changed)
|
|
9
|
10
|
def receive_basket_voucher_change(sender, **kwargs):
|
|
10
|
|
- if kwargs['model'] == Voucher and kwargs['action'] == 'post_add':
|
|
|
11
|
+ if (kwargs['model'] == Voucher and kwargs['action'] == 'post_add' and
|
|
|
12
|
+ isinstance(kwargs['instance'], AbstractBasket) and kwargs['pk_set']):
|
|
11
|
13
|
voucher_id = list(kwargs['pk_set'])[0]
|
|
12
|
14
|
voucher = Voucher._default_manager.get(pk=voucher_id)
|
|
13
|
15
|
voucher.num_basket_additions += 1
|