from mezzanine.blog.models import BlogPost
from mezzanine.utils.models import upload_to
-from .utils import *
+from utils import *
# Auto-generated Django models with manage.py inspectdb on the old database
# You'll have to do the following manually to clean this up:
#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)
--- /dev/null
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+from __future__ import unicode_literals
+
+from django.db import models
+from django.utils.translation import ugettext_lazy as _
+
+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)