From: Guillaume Pellerin Date: Mon, 28 Sep 2015 10:30:35 +0000 (+0200) Subject: bugfix X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=e1dd661c908ace5dd844c095b6bf68b4a094bc4f;p=diggersdigest.git bugfix --- diff --git a/app/records/models.py b/app/records/models.py index 574a476..27b07cd 100644 --- a/app/records/models.py +++ b/app/records/models.py @@ -293,3 +293,63 @@ class Podcast(BlogPost): #visu1 = models.IntegerField() # ordre : on laisse tombé ? # published --> status / 0 --> CONTENT_STATUS_DRAFT = 1 / 1 CONTENT_STATUS_PUBLISHED = 2 + + + + +def payment_complete(sender, **kwargs): + """Performs the same logic as the code in + cartridge.shop.models.Order.complete(), but fetches the session, + order, and cart objects from storage, rather than relying on the + request object being passed in (which it isn't, since this is + triggered on PayPal IPN callback).""" + + ipn_obj = sender + print sender + if ipn_obj.custom and ipn_obj.invoice: + s_key, cart_pk = ipn_obj.custom.split(',') + SessionStore = import_module(settings.SESSION_ENGINE) \ + .SessionStore + session = SessionStore(s_key) + + try: + cart = Cart.objects.get(id=cart_pk) + try: + order = Order.objects.get( + transaction_id=ipn_obj.invoice) + print order + # order = Order.objects.get(key=s_key) + for field in order.session_fields: + if field in session: + del session[field] + try: + del session["order"] + except KeyError: + pass + + # Since we're manually changing session data outside of + # a normal request, need to force the session object to + # save after modifying its data. + session.save() + + for item in cart: + try: + variation = ProductVariation.objects.get( + sku=item.sku) + except ProductVariation.DoesNotExist: + pass + else: + variation.update_stock(item.quantity * -1) + variation.product.actions.purchased() + + code = session.get('discount_code') + if code: + DiscountCode.objects.active().filter(code=code) \ + .update(uses_remaining=F('uses_remaining') - 1) + cart.delete() + except Order.DoesNotExist: + pass + except Cart.DoesNotExist: + pass + +valid_ipn_received.connect(payment_complete) diff --git a/app/records/utils.py b/app/records/utils.py deleted file mode 100644 index 6373355..0000000 --- a/app/records/utils.py +++ /dev/null @@ -1,71 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -from __future__ import unicode_literals - -import datetime -import os -import fnmatch -from importlib import import_module -from mezzanine.conf import settings - -from cartridge.shop.models import Product, Category, Cart, Order, ProductVariation, DiscountCode -from paypal.standard.ipn.signals import valid_ipn_received - - -def payment_complete(sender, **kwargs): - """Performs the same logic as the code in - cartridge.shop.models.Order.complete(), but fetches the session, - order, and cart objects from storage, rather than relying on the - request object being passed in (which it isn't, since this is - triggered on PayPal IPN callback).""" - - ipn_obj = sender - print sender - if ipn_obj.custom and ipn_obj.invoice: - s_key, cart_pk = ipn_obj.custom.split(',') - SessionStore = import_module(settings.SESSION_ENGINE) \ - .SessionStore - session = SessionStore(s_key) - - try: - cart = Cart.objects.get(id=cart_pk) - try: - order = Order.objects.get( - transaction_id=ipn_obj.invoice) - print order - # order = Order.objects.get(key=s_key) - for field in order.session_fields: - if field in session: - del session[field] - try: - del session["order"] - except KeyError: - pass - - # Since we're manually changing session data outside of - # a normal request, need to force the session object to - # save after modifying its data. - session.save() - - for item in cart: - try: - variation = ProductVariation.objects.get( - sku=item.sku) - except ProductVariation.DoesNotExist: - pass - else: - variation.update_stock(item.quantity * -1) - variation.product.actions.purchased() - - code = session.get('discount_code') - if code: - DiscountCode.objects.active().filter(code=code) \ - .update(uses_remaining=F('uses_remaining') - 1) - cart.delete() - except Order.DoesNotExist: - pass - except Cart.DoesNotExist: - pass - -valid_ipn_received.connect(payment_complete)