Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

receivers.py 754B

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